前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ABAP-SM30删除前检查

ABAP-SM30删除前检查

作者头像
Tab Zhu
发布2022-06-27 17:28:55
5110
发布2022-06-27 17:28:55
举报
文章被收录于专栏:TAB的coding生活TAB的coding生活

Title

SM30增强-删除前校验

之前发表过一篇关于SM30增强的文章,今天算是一点补充:使用EVENT来实现删除前的检查

方法1-增加事件-EVENT

TCODE: SE54 输入视图名称,然后点击环境->事件

添加序号为03的条目,写入包含检查代码的例程名称

保存后,点击编辑器,编写代码

说明:对于下面的代码主要有几点说明:

  1. EXTRACT-MARK字段为X表示选中了该行
  2. 文中代码为当CONTEXT = '标准订单'时,MARK = SPACE,同时报出警告不允许删除
  3. 注意在执行SM30功能前需要激活程序,保存SE54的配置,然后退出,在运行SM30(PS:我在测试的时候一直都是保存,激活程序,没有退出SE54配置界面,测试SM30一直不行,导致我一度怀疑维护事件03不能实现删除前检查的功能) FORM frm_before_delete

FIELD-SYMBOLS <field> TYPE any. FIELD-SYMBOLS <value> TYPE any. DATA ls_zvjxzhu TYPE zvjxzhu_01. DATA lv_message TYPE c. LOOP AT extract. ASSIGN COMPONENT 'MARK' OF STRUCTURE extract TO <field>. IF <field> IS ASSIGNED AND <field> IS NOT INITIAL. ASSIGN COMPONENT 'CONTEXT' OF STRUCTURE extract TO <value>. IF sy-subrc EQ 0 AND <value> = '标准订单'. lv_message = 'X'. clear <field>. MODIFY extract. ENDIF. ENDIF. ENDLOOP. IF lv_message = 'X'. MESSAGE '标准订单不允许删除' TYPE 'I' DISPLAY LIKE 'S'. ENDIF. ENDFORM.

方法2-直接在函数组屏幕过程中修改代码

对于这个方法2点说明:

  1. VIM_MARKED表示是否选择该行
  2. FUNCTION为当前功能按钮,删除为'DELE'

MODULE delete_before_check INPUT. DATA ls_zvjxzhu TYPE zvjxzhu_01. IF vim_marked NE space AND function = 'DELE'. IF zvjxzhu_01-context = '标准订单'. CLEAR vim_marked. ENDIF. ENDIF. ENDMODULE.

第一种方法的效果如下图:点击删除按钮

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAP TAB 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档