关于ZGJTFI_RCPZ表通过维护视图存储操作日志过程。
以修改的状态进入到表维护生成器,再环境》修改》事件
进入事件的界面后,选择修改,新增条目,选中下图红框的按钮,可查看系统提供的事件相关信息
填入子例程名称,点击编辑器栏的按钮,创建子例程,也可以手工创建。
然后编写代码
其中gs_zgjtfi_rcpz、gt_zgjtfi_rcpz为FM全局变量,在FM中找到包含文件带有TOP字样的文件定义即可,也可以找到合适的位置定义。
保存数据前的操作01
FORM fm_save_log_before.
IF x_header-viewname = 'ZGJTFI_RCPZ'.
LOOP AT total.
IF <action> = 'I' OR <action> = 'U' OR <action> = 'N' OR <action> = 'D'.
gs_zgjtfi_rcpz = <vim_total_struc>.
gs_zgjtfi_rcpz-chngind = <action>.
IF gs_zgjtfi_rcpz-chngind = 'N'.
gs_zgjtfi_rcpz-chngind = 'I'.
ENDIF.
APPEND gs_zgjtfi_rcpz TO gt_zgjtfi_rcpz.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. "FM_SAVE_LOG_BEFORE
保存数据后的操作02
FORM fm_save_log_after.
DATA:ls_zgjtfi_rcpz_log LIKE zgjtfi_rcpz_log,
lt_zgjtfi_rcpz_log LIKE TABLE OF ls_zgjtfi_rcpz_log.
IF x_header-viewname = 'ZGJTFI_RCPZ'.
LOOP AT gt_zgjtfi_rcpz INTO gs_zgjtfi_rcpz.
ls_zgjtfi_rcpz_log-bukrs = gs_zgjtfi_rcpz-include-bukrs.
ls_zgjtfi_rcpz_log-wrbtr = gs_zgjtfi_rcpz-include-wrbtr.
ls_zgjtfi_rcpz_log-change_ind = gs_zgjtfi_rcpz-chngind.
ls_zgjtfi_rcpz_log-UDATE = sy-datum.
ls_zgjtfi_rcpz_log-UTIME = sy-uzeit.
ls_zgjtfi_rcpz_log-UNAME = sy-uname.
APPEND ls_zgjtfi_rcpz_log TO lt_zgjtfi_rcpz_log.
CLEAR ls_zgjtfi_rcpz_log.
ENDLOOP.
INSERT zgjtfi_rcpz_log FROM TABLE lt_zgjtfi_rcpz_log.
IF SY-SUBRC NE 0.
rollback work.
ELSE.
commit WORK AND WAIT.
ENDIF.
ENDIF.
ENDFORM. "FM_SAVE_LOG
以上为维护视图操作存储日志的过程,谢谢!