表维护生成器添加事件

作者:斌将军 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程
表维护生成器添加事 - 封面图
表维护生成器添加事 - 封面图

** 1、业务说明 **

自建表中需要记录日志,当修改自建表数据时,需要记录下修改日期、时间和修改人,所以就需要将自建表中添加日志字段:日期、时间和用户。

为了实现每次更新时,不手动给这三个字段传值,需要在建表维护生成器时,添加事件,实现自动记录。

此处还有个技巧,即创建完表维护生成器之后,再添加这三个日志字段,如此,SM30中没有显示,防止人为更改日志字段,但是却仍然能正常记录日志

** 2、实现方法 **

1、自建表创建表维护生成器,并添加日期、时间、用户字段

表维护生成器添加事 - 封面图
表维护生成器添加事 - 封面图

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.

"-----------------------------@斌将军-----------------------------

斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「表维护生成器添加事件.md」整理生成,仅用于内部技术分享与学习交流。