SAP change document T-code SCDO(SAP更改字段级记录)
2013-04-02 21:02
921 查看
项目中遇到了一个需求:对自建表的数据进行操作的时候,需要对更改信息进行记录,到字段级别~
使用到了SAP 的chenge document 功能.
Tcode : SCDO
首先建立一个自己的change document object ,在对象里面填上需要记录的表的名字. 要是需要记录删除字段信息的话,把第二个checkbox选上.
然后选择生成更新程序 -> 保存.
点击生成信息的话,可以看见生成的程序还有function module信息,要是上面截图第一个checkbox被选择的话,还会生成新的structure .
到这里,change document object就建立好了~
在程序里面直接调用生成的function module把原始值和更新值传进去就可以了`
*------------------start-----------------------------------------------*
REFRESH : lt_icdtxt .
CALL FUNCTION 'ZYW8_WRITE_DOCUMENT'
EXPORTING
objectid = ls-objectid
tcode = ls-tcode
utime = ls-utime
udate = ls-udate
username = ls-username
* PLANNED_CHANGE_NUMBER = ' '
object_change_indicator = 'U'
* PLANNED_OR_REAL_CHANGES = ' '
* NO_CHANGE_POINTERS = ' '
* UPD_ICDTXT_ZYW8 = ' '
upd_zidowndata = 'U'
TABLES
icdtxt_zyw8 = lt_icdtxt
xzidowndata = lt_8_new
yzidowndata = lt_8_old .
*------------------end-------------------------------------------------*
SAP提供了一个标准的报表查看修改记录: RSSCD100 .
需要注意的一点,凡是需要记录的字段,dataelement里面的 changedocument属性必须设置~
自己实现的一个测试程序:
REPORT ZZ_TEST24.
data ls_person TYPE ztblperson.
data ls_person_old TYPE ztblperson.
data lt_person TYPE TABLE OF ztblperson.
data ls_person1 TYPE YZTBLPERSON.
data lt_person_new TYPE TABLE
OF YZTBLPERSON.
data lt_person_old TYPE TABLE
OF YZTBLPERSON.
ls_person-name = 'N10'.
ls_person-age = 50.
ls_person-job = 'ABAP'.
INSERT ls_person INTO TABLE
lt_person.
MOVE-CORRESPONDING ls_person to ls_person1.
ls_person-name = 'N12'.
ls_person-age = 50.
ls_person-job = 'ABAP'.
INSERT ls_person INTO TABLE
lt_person.
MOVE-CORRESPONDING ls_person to ls_person1.
INSERT ls_person1 INTO TABLE
lt_person_old.
MODIFY ztblperson FROM TABLE
lt_person. " update + insert
data lt_cdtxt TYPE TABLE OF CDTXT.
data ls_cdtxt TYPE CDTXT.
ls_cdtxt-TEILOBJID = ls_person-name.
ls_cdtxt-UPDKZ = 'I'.
INSERT ls_cdtxt INto table
lt_cdtxt.
CALL FUNCTION 'ZPERSON_WRITE_DOCUMENT'
EXPORTING
OBJECTID =
'ZPERSON'
TCODE =
sy-tcode
UTIME =
sy-uzeit
UDATE =
sy-datum
USERNAME =
sy-uname
* PLANNED_CHANGE_NUMBER =
' '
OBJECT_CHANGE_INDICATOR = 'U'
* PLANNED_OR_REAL_CHANGES =
' '
* NO_CHANGE_POINTERS
使用到了SAP 的chenge document 功能.
Tcode : SCDO
首先建立一个自己的change document object ,在对象里面填上需要记录的表的名字. 要是需要记录删除字段信息的话,把第二个checkbox选上.
然后选择生成更新程序 -> 保存.
点击生成信息的话,可以看见生成的程序还有function module信息,要是上面截图第一个checkbox被选择的话,还会生成新的structure .
到这里,change document object就建立好了~
在程序里面直接调用生成的function module把原始值和更新值传进去就可以了`
*------------------start-----------------------------------------------*
REFRESH : lt_icdtxt .
CALL FUNCTION 'ZYW8_WRITE_DOCUMENT'
EXPORTING
objectid = ls-objectid
tcode = ls-tcode
utime = ls-utime
udate = ls-udate
username = ls-username
* PLANNED_CHANGE_NUMBER = ' '
object_change_indicator = 'U'
* PLANNED_OR_REAL_CHANGES = ' '
* NO_CHANGE_POINTERS = ' '
* UPD_ICDTXT_ZYW8 = ' '
upd_zidowndata = 'U'
TABLES
icdtxt_zyw8 = lt_icdtxt
xzidowndata = lt_8_new
yzidowndata = lt_8_old .
*------------------end-------------------------------------------------*
SAP提供了一个标准的报表查看修改记录: RSSCD100 .
需要注意的一点,凡是需要记录的字段,dataelement里面的 changedocument属性必须设置~
自己实现的一个测试程序:
REPORT ZZ_TEST24.
data ls_person TYPE ztblperson.
data ls_person_old TYPE ztblperson.
data lt_person TYPE TABLE OF ztblperson.
data ls_person1 TYPE YZTBLPERSON.
data lt_person_new TYPE TABLE
OF YZTBLPERSON.
data lt_person_old TYPE TABLE
OF YZTBLPERSON.
ls_person-name = 'N10'.
ls_person-age = 50.
ls_person-job = 'ABAP'.
INSERT ls_person INTO TABLE
lt_person.
MOVE-CORRESPONDING ls_person to ls_person1.
ls_person-name = 'N12'.
ls_person-age = 50.
ls_person-job = 'ABAP'.
INSERT ls_person INTO TABLE
lt_person.
MOVE-CORRESPONDING ls_person to ls_person1.
INSERT ls_person1 INTO TABLE
lt_person_old.
MODIFY ztblperson FROM TABLE
lt_person. " update + insert
data lt_cdtxt TYPE TABLE OF CDTXT.
data ls_cdtxt TYPE CDTXT.
ls_cdtxt-TEILOBJID = ls_person-name.
ls_cdtxt-UPDKZ = 'I'.
INSERT ls_cdtxt INto table
lt_cdtxt.
CALL FUNCTION 'ZPERSON_WRITE_DOCUMENT'
EXPORTING
OBJECTID =
'ZPERSON'
TCODE =
sy-tcode
UTIME =
sy-uzeit
UDATE =
sy-datum
USERNAME =
sy-uname
* PLANNED_CHANGE_NUMBER =
' '
OBJECT_CHANGE_INDICATOR = 'U'
* PLANNED_OR_REAL_CHANGES =
' '
* NO_CHANGE_POINTERS
相关文章推荐
- SAP 查找User更改历史记录
- SAP change_document
- SAP生产工单更改(CO02)记录详细教程
- SAP change_document
- SAP 批量查看凭证更改记录
- 数据库更改记录
- openssh 源码更改实现记录日志功能及动态回放思路
- SAP保存操作记录CDHDR和CDPOS表
- Change the base unit of measure(更改度量单位)
- SAP前一期间更改物料价格
- 用document.onreadystatechange和document.readyState确保文档加载完毕才获取DOM
- 错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)
- 错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)
- 记录一下EditText监听输入法回车,以及更改输入法回车状态
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
- 如何记录对Cisco设备配置的更改(Configuration Logging)
- 2016.9.12工作记录更改前置条件
- SAP 簇表 A017 物料信息记录 (指定工厂) 包含的透明表
- SAP-ABAP-Smartforms调用参数的利用与打印次数的记录
- SAP Standard BAPI Error: /AFS/BAPI_SALESORD_CHANGE & BAPI_SALESORDER_CHANGE