** 1、业务说明 **
自建表中需要记录日志,当修改自建表数据时,需要记录下修改日期、时间和修改人,所以就需要将自建表中添加日志字段:日期、时间和用户。
为了实现每次更新时,不手动给这三个字段传值,需要在建表维护生成器时,添加事件,实现自动记录。
此处还有个技巧,即创建完表维护生成器之后,再添加这三个日志字段,如此,SM30中没有显示,防止人为更改日志字段,但是却仍然能正常记录日志
** 2、实现方法 **
添加01和05事件
01 在数据库中保存数据前
05 建立新的条目
新增数据时记录日志
"-----------------------------@斌将军-----------------------------FORM z_insert_data . zpst_prart-zgxdate = sy-datum. zpst_prart-zgxtime = sy-uzeit. zpst_prart-zgxuser = sy-uname.ENDFORM.
"-----------------------------@斌将军-----------------------------
修改数据时记录日志
"-----------------------------@斌将军-----------------------------FORM z_update_data . FIELD-SYMBOLS : <fs_field> TYPE any . LOOP AT total . CHECK <action> EQ aendern. ASSIGN COMPONENT 'ZGXUSER' OF STRUCTURE <vim_total_struc> TO <fs_field> . IF sy-subrc = 0 . <fs_field> = sy-uname . ENDIF. ASSIGN COMPONENT 'ZGXDATE' OF STRUCTURE <vim_total_struc> TO <fs_field> . IF sy-subrc = 0 . <fs_field> = sy-datum . ENDIF. ASSIGN COMPONENT 'ZGXTIME' OF STRUCTURE <vim_total_struc> TO <fs_field> . IF sy-subrc = 0 . <fs_field> = sy-uzeit . ENDIF. READ TABLE extract WITH KEY <vim_xtotal_key>. IF sy-subrc = 0. extract = total . MODIFY extract INDEX sy-tabix. ENDIF. MODIFY total. ENDLOOP.ENDFORM.
"-----------------------------@斌将军-----------------------------