前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ABAP 之 选择屏幕MODIF ID 的使用方式

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

作者头像
百里丶落云
发布2022-12-09 14:57:43
发布2022-12-09 14:57:43
1.2K00
代码可运行
举报
文章被收录于专栏:享~方法享~方法
运行总次数:0
代码可运行

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情

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

什么是MODIF ID .

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

语法解析

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

代码语言:javascript
代码运行次数:0
运行
复制
*数据准备

*选择屏幕

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

at SELECTION-SCREEN OUTPUT .

loop as screen .
CASE  'X'.  
      WHEN 分类1.  
  
        IF screen-group1 EQ '分组1'.  
          screen-invisible = '1'.  
          screen-active = '0'.  
        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' invisible = '0' ,这表示显示,ACTVIE = '0' INVISIBLE = '1' 则表示不显示 .

实例

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

选择屏幕设定

代码语言:javascript
代码运行次数:0
运行
复制
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 .

屏幕操作

代码语言:javascript
代码运行次数:0
运行
复制
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 .

技术总结

今天讲述的内容,又是一个经常性使用的内容.虽然该功能如果你不用也可以, 但是当你被用户吐槽,整个选择屏幕怎么需要那么多输入的内容时候时,请你想起这个功能. 还有就是做一下分离判断是可以使用该方式.比如导入和查询界面.用户就是喜欢明知道某种情况非要导入对应等内容. 用这个就可以合理避免了.

百里鸡汤

生当作人杰,死亦为鬼雄 . 不想庸庸碌碌,那就抓紧学习吧.

这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是MODIF ID .
  • 语法解析
  • 实例
    • 选择屏幕设定
    • 屏幕操作
  • 结果
  • 技术总结
  • 百里鸡汤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档