您的当前位置:首页正文

SAP-SCDO-表的修改日志记录

2021-09-26 来源:易榕旅网
SAP系统中,如果有需要对自建表的数据记录修改日志的,可以创建文档记录,由系统自动记录表字段的修改. 程序中只需要传入修改前和修改后的数据即可. 需要显示日志时,只需要读出修改记录,显示即可.

一. 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号 “表名

因篇幅问题不能全部显示,请点此查看更多更全内容