请选择 进入手机版 | 继续访问电脑版

ABAP 动态选择屏幕

[复制链接]
滚雪球少年 发表于 2021-1-2 19:43:54 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
导语:在做ALV报表的时候,遇见过用 RADIOBUTTON区分差别页签,大概是区分差别的选择屏幕字段的需求,这里简单的说一下,如何通过RADIOBUTTON来实现动态选择屏幕。
关键元素:
1、 MODIF ID
在需要实现动态的屏幕界说反面界说一下 MODIF ID
  1. SELECT-OPTIONS:s_werks FOR marc-werks,               s_matnr FOR mara-matnr,               s_bismt FOR mara-bismt,               s_brand FOR mara-zbrand,               s_mmsta FOR marc-mmsta MODIF ID id1,               s_ekgrp FOR marc-ekgrp MODIF ID id1,               s_cons  FOR marc-cons_procg.
复制代码
2、 USER-COMMAND
在需要触发动态屏幕的RADIOBUTTON反面界说USER-COMMAND组,来实现指令
  1. PARAMETERS: p_tab1 RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND rbxx,            p_tab2 RADIOBUTTON GROUP gp1.
复制代码
3、 AT SELECTION-SCREEN OUTPUT
在 AT SELECTION-SCREEN OUTPUT下面写详细的需要控制的条件,以下示例是说,当p_tab1 = 'X’的时候,屏幕上展示商品状态(S_MMSTA)和采购组(S_EKGRP)
  1. LOOP AT SCREEN .    IF screen-group1 = 'ID1'.      IF p_tab1 = abap_false.        screen-active = '0'.      ELSE.        screen-active = '1'.      ENDIF.    ENDIF.    MODIFY SCREEN.  ENDLOOP.
复制代码
4、整段代码展示
  1. SELECTION-SCREEN BEGIN OF BLOCK blc_001 WITH FRAME TITLE TEXT-001.SELECT-OPTIONS:s_werks FOR marc-werks,               s_matnr FOR mara-matnr,               s_bismt FOR mara-bismt,               s_brand FOR mara-zbrand,               s_mmsta FOR marc-mmsta MODIF ID id1,               s_ekgrp FOR marc-ekgrp MODIF ID id1,               s_cons  FOR marc-cons_procg.PARAMETERS: p_tab1 RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND rbxx,            p_tab2 RADIOBUTTON GROUP gp1.SELECTION-SCREEN END OF BLOCK blc_001.AT SELECTION-SCREEN OUTPUT.  PERFORM frm_scr_out.FORM frm_scr_out .  LOOP AT SCREEN .    IF screen-group1 = 'ID1'.      IF p_tab1 = abap_false.        screen-active = '0'.      ELSE.        screen-active = '1'.      ENDIF.    ENDIF.    MODIFY SCREEN.  ENDLOOP.ENDFORM.
复制代码
5、注意
动态选择屏幕一般情况下与 OBLIGATORY辩说,所以屏幕必输查抄就不能用 OBLIGATORY关键字来控制了,这里我的必输校验放在了 START-OF-SELECTION下面
  1.   IF s_werks IS INITIAL.    MESSAGE '请输入【工厂】!' TYPE 'S' DISPLAY LIKE 'E'.    RETURN.  ENDIF.  IF s_matnr IS INITIAL AND s_bismt AND s_brand IS INITIAL.    MESSAGE '【商品编码】和【供应商商品货号】和【品牌】请至少输入一项!' TYPE 'S' DISPLAY LIKE 'E'.    RETURN.  ENDIF.
复制代码
6、效果展示

作者:小飞猪猪猪猪猪猪猪–CSDN
注意:转发请注明作者


来源:https://blog.csdn.net/JYH1999/article/details/112004583
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )