SAP 动态设置选择屏幕的必输标记

SAP 动态设置选择屏幕的必输标记


----在SAP的ABAP中写选择屏幕时,为屏幕字段增加“OBLIGATORY”后,运行报表时,屏幕字段会出现必输标记。

在这里插入图片描述

----但是这种方法有个恶心的,不管在屏幕上点击某功能(帮助类功能除外),都会要求必输,否则不让过。而当屏幕上有些字段是根据选择了某条件来动态显示的,以上设置必输不让过时,选择屏幕不会更新,也就是动态字段不会显示或隐藏。
----有时根据实际需要,在特定的条件下,执行某特定功能时,才要求必输,才要求出现必输标记。如以上屏幕中,要求在上面选择”显示”时,抵消分录类型,不要求必输,不要出现必输标记,在选择创建或修改时,抵消分录类型,才要求必输,才要求出现必输标记。
修改代码如下:
----在事件AT SELECTION-SCREEN OUTPUT中为屏幕字段动态设置必输标记。即将screen-required = ‘2’。
LOOP AT SCREEN.
IF screen-group1 EQ ‘G1’.
screen-required = ‘2’.
ELSEIF screen-group1 = ‘G2’.
IF r01 = ‘X’ OR r02 = ‘X’.
screen-required = ‘2’. "创建或修改时才要求抵消分录类型必输
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
注:screen-required等于1时,等同 增加“OBLIGATORY”;等于2时,只会出现必输标记,执行功能操作时不会提示要求必输,程序会继续运行。但实际需求是某特定条件下还要求必输,未必输不能继续运行程序。因此还需通过代码实现。
----在事件AT SELECTION-SCREEN中根据条件动态提示必输。
IF sy-ucomm = ‘ONLI’.
IF p_congr IS INITIAL OR p_ryear IS INITIAL OR p_monat IS INITIAL.
MESSAGE e001(z001) WITH |请输入必输字段|.
ENDIF.
IF r01 = ‘X’ OR r02 = ‘X’.
IF p_zdxfl = ‘’.
MESSAGE e001(z001) WITH |请输入必输字段|.
ENDIF.
ENDIF.
ENDIF.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么有人会问,如此大费周折实现这么一个小小的功能有必要吗?我想说的是:好的程序是一幅艺术作品,要求精益求精。一切不考滤用户操作便利性的程序都是耍流氓!初级的APABer往往如此。

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值