ABAP-选择屏幕(四) 动态修改屏幕
语法:
选择屏幕、对话屏幕的屏幕字段属性存放在screen内表中,下表是几个重要属性:
大体上激活为1,失效为0
详情可参照官方help
字段名 | 长度 | 说明 |
---|---|---|
NAME | 30 | 屏幕字段的名称 |
GROUP1 | 3 | 存放modif id 指定的值 |
GROUP2 | 3 | GROUP2和GROUP3在生成选择屏幕时由系统生成,并非开发人员指定。其中GROUP2用于逻辑数据库生成的选择屏幕 |
GROUP3 | 3 | 属于字段组4的字段,参照图『1』 |
GROUP4 | 3 | 内部用字段组 |
ACTIVE | 1 | =0系统禁用字段并取消准备输入属性。用户不能查看字段也不能对它输入值; =1激活字段属性 |
REQUIRED | 1 | =0表示无强制输入那个√符号; =1有√符号,且必须输入,不能为空; =2有√符号,但不是必须输入,可留空。可替代OBLIGATORY |
INPUT | 1 | 控制屏幕元素(包括复选框、单选框、文本框)的可输性,=0不可输入,灰掉只输出,=1可以输入 |
OUTPUT | 1 | 字段仅用于显示 |
INTENSIFIED | 1 | 高亮显示字段,=1时输入为字体为红色,输出为蓝色 |
INVISIBLE | 1 | =1禁用字段,输入框 *做掩码,适合输入密码 |
LENGTH | 1 | 减少字段输出长度 |
DISPLAY_3D | 1 | 以三维框架显示字段 |
VALUE_HELP | 1 | =1显示有值帮助的那个按钮 |
COLOR | 10 | 颜色 |
注意点
ACTIVE, INPUT, OUTPUT, 和 INVISIBLE
当ACTIVE = 0时,相当于自动设置INPUT, OUTPUT等于0(即失效)、INVISIBLE等于1(禁用此字段)。此时任何对这三个字段的更改都会被忽略。系统禁用字段并取消准备输入属性。用户不能查看字段也不能对它输入值。
当ACTIVE = 1时,对对属性没有其他影响。
REQUIRED选项的应用
该选项可以解决这个问题:在点击某个单选框(p_rd1)后显示某个必输字段(p_lclfil),但当这个必输框显示出来后,如果点击p_rd2想隐藏它时,此时输入框中必须有值,否则系统会自动检验要求重新输入。现要求输入框没有输入值的情况下,也可在点击p_rd2时隐藏它,则解决的办法是:将输入框的这个属性设置为2(显示必须的钩,但系统不会自动进行必输验证),去掉OBLIGATORY选项(不去掉也会被忽略),并在AT SELECTION-SCREEN ON field事件里时手动进行为空验证。
修改屏幕属性后记得MODIFY SCREEN,否则不生效。
参考图『1』:
示例:
"单选和复选按钮一定要设置 USER-COMMAND ,否则点击之后,不会触发屏幕PAI事件,
"PAI事件不触发则会导致屏幕的AT SELECTION-SCREEN OUTPUT也就不会被触发
"(非执行按钮的FunCode触发时都会刷新屏幕,所以再次显示屏幕时再次执行PBO)
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS: p_disp RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND uc1, "显示
p_hide RADIOBUTTON GROUP gp1, "隐藏
p_hide_1 RADIOBUTTON GROUP gp1. "隐藏一个
SELECTION-SCREEN END OF BLOCK bl1.
SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE text-002.
PARAMETERS: p_werks TYPE mard-WERKS MODIF ID md1,
p_matnr TYPE mard-MATNR MODIF ID md1.
select-OPTIONS s_lgort FOR mard-LGORT MODIF ID md2.
SELECTION-SCREEN END OF BLOCK bl2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF p_disp = 'X'.
SCREEN-ACTIVE = '1'.
ELSEIF p_hide = 'X' AND ( SCREEN-GROUP1 = 'MD1' OR SCREEN-GROUP1 = 'MD2' ).
SCREEN-ACTIVE = '0'.
ELSEIF p_hide_1 = 'X' AND SCREEN-GROUP1 = 'MD2'.
SCREEN-ACTIVE = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
post SAP-Garson
原文链接:https://blog.csdn.net/u011176275/article/details/115699727文章来自于网络,如果侵犯了您的权益,请联系站长删除!