2020.05.07 【ABAP隨筆】- ABAP-SM30刪除前檢查


之前發表過一篇關於SM30增強的文章

【ABAP隨筆】SM30常見增強操作-自動帶描述

,今天算是一點補充:使用EVENT來實現刪除前的檢查

方法1-增加事件-EVENT

TCODE: SE54 輸入視圖名稱,然后點擊環境->事件

blob.png

添加序號為03的條目,寫入包含檢查代碼的例程名稱

blob.png

保存后,點擊編輯器,編寫代碼

說明:對於下面的代碼主要有幾點說明:

  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 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'

blob.png

blob.png

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.

第一種方法的效果如下圖:

blob.png

 

【ABAP隨筆】SM30常見增強操作-自動帶描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM