开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第17天,点击查看活动详情
序
HELLO,这里是百里,一个学习中的ABAPER,今天讲的内容是选择屏幕中经常会使用的技术,MODIF ID 的使用. 在sap 开发中,选择屏幕不能像前端那种可以实现手风琴展示那种层级联动,不是很方便.只能通过操作 MODIF ID 的方式进行处理,二级联动效果.
什么是MODIF ID .
MODIF ID 通俗的解释就是将提前定义好的选择屏幕分包,而modif id 就是定义包的名称.我们通过选择屏幕明细调用对应的包明细,从而使屏幕只显示出我们设定包的查询条件.
语法解析
这是一个非常简单的东西,甚至没有什么复杂的语法.当然如果灵活的使用,不仅可以使我们的选择屏幕变的好看,减少数据的冗余,同时也增加代码的可读性,做到同样功能的放在一起 .
代码语言:javascript复制*数据准备
*选择屏幕
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复制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复制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 .
技术总结
今天讲述的内容,又是一个经常性使用的内容.虽然该功能如果你不用也可以, 但是当你被用户吐槽,整个选择屏幕怎么需要那么多输入的内容时候时,请你想起这个功能. 还有就是做一下分离判断是可以使用该方式.比如导入和查询界面.用户就是喜欢明知道某种情况非要导入对应等内容. 用这个就可以合理避免了.
百里鸡汤
生当作人杰,死亦为鬼雄 . 不想庸庸碌碌,那就抓紧学习吧.
这里是百里,一个努力的学习者. 努力学习好好记录,点滴进步,就是成功.