一. SE11
进入要记录修改日志的自建表,
进入需要记录修改的字段的数据元素中,在further characteristic页面中,勾选 更改文档
二. TCODE : SCDO
输入文档对象 ZMG_TEST001,点击继续
输入描述,及需要记录日志的表名字
注:如果是对比单条记录的修改,则不需要勾选 复制为内部表.(如抬头信息) 如果需要批量对比多条记录的修改,则需要打勾.(如行项目信息) 然后点击: 插入条目
来到如下屏幕
菜单栏 : 实用程序 -> 生成更新程序
系统将自动生成一个可以记录修改日志的更新函数,只需将修改前及修改后的记录填入函数相关参数中,系统会自动判断此次对哪些字段(数据元素中更改文档已打勾)做了修改,并记录下来.
点击保存.然后退出回到前一屏
点击: 生成信息
文档修改对象创建完成
红框中的函数名即为更新程序.
三. 在程序中, (修改前的字段内容和修改后的字段内容)调用更新函数来记录修改日志. call function ' ZMG_TEST001_WRITE_DOCUMENT'
exporting
objectid = lv_obid “对象值 如PO号 tcode = sy-tcode utime = sy-uzeit udate = sy-datum username = sy-uname object_change_indicator = 'U' n_zmmsp1 = zmmsp1
o_zmmsp1 = zmmsp1_old upd_zmmsp3 = 'U' tables
icdtxt_zmm_sp = icdtxt
“修改后的数据记录(多条)
xzmmsp2 = zmmsp2_new
“修改记录的tocde “当前时间 “当前日期 “修改人
“修改后的数据记录(单条) “修改前的数据记录(单条)
yzmmsp2 = zmmsp2_old. “修改前的数据记录(多条)
四. SE37
创建读出日志并显示的函数Z_READ_HISTORY 函数相关属性如下: IMPORT
TABLES
Source code
data:editpos type table of cdred with header line, aeditpos type table of cdred with header line. data:wk_repid type repid.
if tablekey[] is initial.
call function 'CHANGEDOCUMENT_READ' exporting
objectclass = objectclass objectid = objectid username = username tablename = tablename tables
editpos = aeditpos exceptions
no_position_found = 1 wrong_access_to_archive = 2 time_zone_conversion_error = 3 others = 4.
else.
loop at tablekey .
call function 'CHANGEDOCUMENT_READ' exporting
objectclass = objectclass objectid = objectid
tablekey = tablekey-tabkey tablename = tablename
username = username tables
editpos = editpos exceptions
no_position_found = 1 wrong_access_to_archive = 2 time_zone_conversion_error = 3 others = 4.
loop at editpos.
append editpos to aeditpos. endloop. endloop. endif.
if aeditpos[] is initial. message s010(zac00). else.
if tcode ne space.
delete aeditpos where tcode ne tcode. endif.
wk_repid = objectclass.
call function 'CHANGEDOCUMENT_DISPLAY' exporting
i_applicationid = wk_repid i_objectclas = objectclass tables
i_cdred = aeditpos. endif.
注: 修改日志在AEDITPOS表中,
可以按需自己定义输入的屏幕,不需要调用函数CHANGEDOCUMENT_DISPLAY输出
五. 在程序中. 条用Z_READ_HISTORY来显示修改日志.
call function 'Z_READ_HISTORY' exporting
objectclass = ' ZMG_TEST001' objectid = lv_objid tablename = lv_tabname * USERNAME = * TCODE = tables
tablekey = tablekey .
“文档对象 “对象值 如PO号 “表名
因篇幅问题不能全部显示,请点此查看更多更全内容