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.