ABAP 之 选择屏幕MODIF ID 的使用方式

参考ABAP 之 选择屏幕MODIF ID 的使用方式 - 腾讯云开发者社区-腾讯云

HELLO,这里是百里,一个学习中的ABAPER,今天讲的内容是选择屏幕中经常会使用的技术,MODIF ID 的使用. 在sap 开发中,选择屏幕不能像前端那种可以实现手风琴展示那种层级联动,不是很方便.只能通过操作 MODIF ID 的方式进行处理,二级联动效果.

什么是MODIF ID .

MODIF ID 通俗的解释就是将提前定义好的选择屏幕分包,而modif id 就是定义包的名称.我们通过选择屏幕明细调用对应的包明细,从而使屏幕只显示出我们设定包的查询条件.

语法解析

这是一个非常简单的东西,甚至没有什么复杂的语法.当然如果灵活的使用,不仅可以使我们的选择屏幕变的好看,减少数据的冗余,同时也增加代码的可读性,做到同样功能的放在一起 .

*数据准备

*选择屏幕

SELECTION-SCREEN .
PARAMETERS : 字段 TYPE 参考数据元素 MODIF ID 分组 .
select-option : 字段 for 参考数据元素 modif id 分组 .

at SELECTION-SCREEN OUTPUT .

loop at screen .
CASE  'X'.  
      WHEN 分类1.  
  
        IF screen-group1 EQ '分组1'.  
          screen-invisible = '1'.  "0将以密码的形式显示屏幕
          screen-active = '0'.  "0隐藏1显示屏幕中子组件出现,屏幕不显示则组件也无法显示
        ELSE.  
          screen-invisible = '0'.  
          screen-active = '1'.  
        ENDIF.  
      WHEN  分类2.  
  
        IF screen-group1 EQ 'M2'.  
          screen-invisible = '1'.  
          screen-active = '0'.  
        ELSE.  
          screen-invisible = '0'.  
          screen-active = '1'.  
        ENDIF.  
    ENDCASE.  
    MODIFY SCREEN.

endloop .

其中 active = '1' ,这表示显示,ACTVIE = '0' 则表示不显示 .invisible = '0'  INVISIBLE = '1'

表示是否以密码的形式显示屏幕   0以密码显示  1不以密码显示

active = 0 表示屏幕运行时不会显示.同时会自动设置input=0 ,output=0,invisible=1.

input=0 表示屏幕元素将被显示,但它不接受任何输入

实例

再讲实例之前,需要先说一下 sap 的对应生命周期 ,在开发中 我们通常选择屏幕在at SELECTION-SCREEN 中写入选择屏幕 ,而在 at SELECTION-SCREEN OUTPUT 中写入选择屏幕需要进行的其他事宜.

选择屏幕设定

TABLES: vbap .  
  
PARAMETERS:p_1 RADIOBUTTON GROUP rg1 USER-COMMAND uc DEFAULT 'X',  
           p_2   RADIOBUTTON GROUP rg1,  
           p_3    RADIOBUTTON GROUP rg1.  
  
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.  
  PARAMETERS : p_vbeln TYPE vbap-vbeln MODIF ID m1 .  
  PARAMETERS : p_CHARG TYPE vbap-CHARG MODIF ID m1 .  
  PARAMETERS : p_matnr TYPE vbap-matnr MODIF ID m2.  
  PARAMETERS : p_posnr TYPE vbap-posnr MODIF ID m2.  
  
  
  
SELECTION-SCREEN END OF BLOCK b1.

我们这里 定义 m1 m2 两个类型 ,同时通过设定3个分组来分别控制展示类型m1 和 类型m2 .

屏幕操作

at SELECTION-SCREEN OUTPUT .  
    LOOP AT SCREEN.  
    CASE  'X'.  
      WHEN p_1.  
  
        IF screen-group1 EQ 'M2'.  
          screen-invisible = '1'.  
          screen-active = '0'.  
        ELSE.  
          screen-invisible = '0'.  
          screen-active = '1'.  
        ENDIF.  
      WHEN p_2 OR p_3.  
  
        IF screen-group1 EQ 'M1'.  
          screen-invisible = '1'.  
          screen-active = '0'.  
        ELSE.  
          screen-invisible = '0'.  
          screen-active = '1'.  
        ENDIF.  
    ENDCASE.  
    MODIFY SCREEN.  
  ENDLOOP.

通过循环屏幕, 当我们选择p1 时 激活m1类型, m2 不激活就不现实 .

结果

选择p1时 激活m1 显示 选择屏幕 p_vbeln 及 p_chare .

选择p2时 激活m2 m1 不激活 显示 p_matnr 及 p_posnr .

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值