Title
SM30增强-删除前校验
之前发表过一篇关于SM30增强的文章,今天算是一点补充:使用EVENT来实现删除前的检查
一
方法1-增加事件-EVENT
TCODE: SE54 输入视图名称,然后点击环境->事件
添加序号为03的条目,写入包含检查代码的例程名称
保存后,点击编辑器,编写代码
说明:对于下面的代码主要有几点说明:
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点说明:
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.
第一种方法的效果如下图:点击删除按钮