abap MODIF ID有啥作用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abap MODIF ID有啥作用?相关的知识,希望对你有一定的参考价值。

PARAMETERS: p_cityfr like spfli-cityfrom default 'china' MODIF ID sc1.这里用选项MODIF ID 的作用是什么?

MODIF ID是添加一个屏幕修改标识,在屏幕显示前,如果要对屏幕上某些字段进行隐藏、只读等属性的修改,则将Screen的group1属性值等于MODIF ID后面标识对应的属性值进行设置即可。
例如:下面的代码中,如果勾选复选框SHOW_ALL,则P4~P6的输入框会显示出来;否则P4~P6的输入框是隐藏的。
PARAMETERS show_all AS CHECKBOX USER-COMMAND flag.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p1 TYPE c LENGTH 10,
p2 TYPE c LENGTH 10,
p3 TYPE c LENGTH 10.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p4 TYPE c LENGTH 10 MODIF ID bl2,
p5 TYPE c LENGTH 10 MODIF ID bl2,
p6 TYPE c LENGTH 10 MODIF ID bl2.
SELECTION-SCREEN END OF BLOCK b2.

DATA screen_wa TYPE screen.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN INTO screen_wa.
IF show_all <> 'X' AND
screen_wa-group1 = 'BL2'.
screen_wa-active = '0'.
ENDIF.
MODIFY SCREEN FROM screen_wa.
ENDLOOP.
参考技术A 你可以理解为把一组parameters分成一组,或者统一加一个标识,用来实现隐藏/显示等功能,下面有个例子,你用SE38复制上去一用就知道了。

语法:... MODIF ID modid
REPORT ZTESTMODIFID.
PARAMETERS show_all AS CHECKBOX USER-COMMAND flag.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p1 TYPE c LENGTH 10,
p2 TYPE c LENGTH 10,
p3 TYPE c LENGTH 10.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p4 TYPE c LENGTH 10 MODIF ID bl2,
p5 TYPE c LENGTH 10 MODIF ID bl2,
p6 TYPE c LENGTH 10 MODIF ID bl2.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN OUTPUT. "当show_all值改变时会触发此事件
LOOP AT SCREEN.
IF show_all <> 'X' AND
screen-group1 = 'BL2'.
screen-active = '0'. "设置组内设置屏幕的显示和隐藏
ENDIF.
MODIFY SCREEN. "把弃置应用到当前屏幕
ENDLOOP.追问

screen-group1 = 'BL2'.这句话是什么意思?

追答

就是判断屏幕的组 名称为 GL2的, 这个GL2就是咱们自己定义的MODIF ID

参考技术B 此标识为SAP 内存管理中的一种,为SAP memory. 具体使用自己查看相关资料,效果同(set parameter id、 get parameter id 语法)。其效果,当你填写过一次后,重新进入这个程序,上次填写的内容依然存在,并且当前登录账号,不同session 共享此值. 重新登录账号,或者相同账号同时登录,此值不会共享.

@ManyToMany @JoinTable 之类的注释,有啥作用?可以不写吗?

在一个PO中:

@ManyToMany(targetEntity = Client.class,fetch = FetchType.LAZY)
@JoinTable(name = "BASE_CONFIGCODE_CLIENT", joinColumns = @JoinColumn(name = "CONFIGCODE_ID", referencedColumnName = "ID") ,
inverseJoinColumns = @JoinColumn(name = "CLIENT_ID", referencedColumnName = "ID") )
public List<Client> getClientList()
return clientList;


public void setClientList(List<Client> clientList)
this.clientList = clientList;


请问:@ManyToMany @JoinTable @JoinColumn之类的注释,有什么作用?可以不写吗?
joinColumns 、 referencedColumnName 、inverseJoinColumns 什么的是什么意思呢?

(只要详细清楚的答案,如果有这方面的详细列表就更好了。笼统的、自己也糊里糊涂的答案请不要回复,谢谢!)

这个是Hibernate映射关系在类里的注解实现,不能不写

@ManyToMany 声明多对多关系
@JoinTable 说明数据源(数据表)
@JoinColumn 说明用对应的查询主键
这里就是把表BASE_CONFIGCODE_CLIENT里的数据映射到类Client,Client类的CLIENT_ID对应表的CONFIGCODE_ID字段。
参考技术A java中的annotation.
作用就是给一个类或字段或方法等,加上一个标记,用反射的方法,读取这些标记。
标记的作用是,保存一些信息。

以上是关于abap MODIF ID有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

这个 ORM kohana3 查询有啥作用?

@ManyToMany @JoinTable 之类的注释,有啥作用?可以不写吗?

PHP (5.3+) 中的 \(反斜杠)有啥作用?

DR与BDR有啥作用?如何选举?

这里有啥问题,为啥 innerHTML 不起作用? [关闭]

DIV啥意思,有啥作用?