表維護視圖 中變更日誌寫入自定義日誌表
阿新 • • 發佈:2017-12-19
com 寫入 動作 blog 數據 loop nts 發的 pen
SE54 輸入維護視圖: 菜單-》環境-》事件 添加事件1和2編輯器中寫入代碼:
事件1 點擊保存,會觸發,但是保存還沒有commit ,
total 內表中存有視圖每行的數據
<ACTION>的值有N -新增、U -更新、I -插入(新增)、D - 刪除的動作
<VIM_TOTAL_STRUC> loop total 每行的記錄
FORM before_save. CONSTANTS: cn_zfit005(14) TYPE c VALUE ‘ZFIT005‘. DATA ln_zfit005 TYPE zfit005. IF x_header-viewname = cn_zfit005. LOOP AT total. IF <action> = ‘I‘ OR <action> = ‘U‘ OR <action> = ‘N‘ OR <action> = ‘D‘. gs_nzfit005 = <vim_total_struc>. gs_nzfit005-chngind = <action>. IF gs_nzfit005-chngind = ‘N‘. gs_nzfit005-chngind = ‘I‘. ENDIF. APPEND gs_nzfit005 TO gt_nzfit005. ENDIF. ENDLOOP. ENDIF. ENDFORM.
事件2 點擊保存按鈕後的觸發的事件,此時也沒有更新,需要手動提交commit
FORM after_save. CONSTANTS: cn_zfit005(14) TYPE c VALUE ‘ZFIT005‘. DATA: lt_zfit005_log TYPE TABLE OF zfit005_log, ls_zfit005_log TYPE zfit005_log. IF x_header-viewname = cn_zfit005. LOOP AT gt_nzfit005 INTO gs_nzfit005. ls_zfit005_log-bukrs = gs_nzfit005-bukrs. ls_zfit005_log-lifnr = gs_nzfit005-lifnr. ls_zfit005_log-djdte = gs_nzfit005-djdte. ls_zfit005_log-chngind = gs_nzfit005-chngind. ls_zfit005_log-uname = sy-uname. ls_zfit005_log-datum = sy-datum. ls_zfit005_log-uzeit = sy-uzeit. APPEND ls_zfit005_log TO lt_zfit005_log. CLEAR ls_zfit005_log. ENDLOOP. INSERT zfit005_log FROM TABLE lt_zfit005_log. IF sy-subrc NE 0. ROLLBACK WORK. ELSE. COMMIT WORK AND WAIT. ENDIF. ENDIF.
表維護視圖 中變更日誌寫入自定義日誌表