表维护视图 中变更日志写入自定义日志表

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.

 事件5是插入

原文地址:https://www.cnblogs.com/caizjian/p/8064753.html