ABAP-选择屏幕(四) 动态修改屏幕

语法:

选择屏幕、对话屏幕的屏幕字段属性存放在screen内表中,下表是几个重要属性:

大体上激活为1,失效为0
详情可参照官方help

字段名长度说明
NAME30屏幕字段的名称
GROUP13存放modif id 指定的值
GROUP23GROUP2和GROUP3在生成选择屏幕时由系统生成,并非开发人员指定。其中GROUP2用于逻辑数据库生成的选择屏幕
GROUP33属于字段组4的字段,参照图『1』
GROUP43内部用字段组
ACTIVE1=0系统禁用字段并取消准备输入属性。用户不能查看字段也不能对它输入值; =1激活字段属性
REQUIRED1=0表示无强制输入那个√符号; =1有√符号,且必须输入,不能为空; =2有√符号,但不是必须输入,可留空。可替代OBLIGATORY
INPUT1控制屏幕元素(包括复选框、单选框、文本框)的可输性,=0不可输入,灰掉只输出,=1可以输入
OUTPUT1字段仅用于显示
INTENSIFIED1高亮显示字段,=1时输入为字体为红色,输出为蓝色
INVISIBLE1=1禁用字段,输入框 *做掩码,适合输入密码
LENGTH1减少字段输出长度
DISPLAY_3D1以三维框架显示字段
VALUE_HELP1=1显示有值帮助的那个按钮
COLOR10颜色

注意点
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.
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值