点击蓝字 关注我们
一
前言
通用修改程序是对一类程序(修改主数据或单据的特定字段)的总结.
详见链接
无峰,公众号:ABAP 技巧与实战SAP工具箱 通用修改程序(一 简介)
本文主要介绍通用修改程序补充的显示变更文档内容的功能,并简单介绍变更文档对象.
二
变更文档对象
变更文档对象是ABAP中的一个标准功能. 通过事务代码SCDO 维护,维护好并生成变更文档对象,系统会生成一些代码. 程序中引入这些代码,可以完成变更文档的记录.
-
图一是单表创建的变更文档对象
-
图二是主从表创建的变更文档对象
-
图三是标准的物料主数据的变更文档对象
-
图四是变更文档对象生成的代码清单
图一 单表创建的变更文档对象
图二 主从表创建的变更文档对象
图三 标准的物料主数据的变更文档对象
图四 变更文档对象生成的代码清单
三
变更文档使用
在程序中引入变更文档生成的代码,并在保存数据后调用变更文档的例程
FORM CD_CALL_<变更文档ID>
可以完成变更文档的记录.
调用之前需要准备单表的原值/变更后的值. 内表的原值/变更后的值
比如变更对象ZBC106C生成如下代码
-
TOP(调用数据声明)FZBC106CCDT
-
全局有效的数据声明 FZBC106CCDF 包含在 FZBC106CCDT
-
对象特定的数据声明 FZBC106CCDV 包含在 FZBC106CCDT
-
调用更新函数模块 FZBC106CCDC
程序中使用 FZBC106CCDT FZBC106CCDC.
四
变更文档与数据元素
如果希望变更对象完成对特定字段的修改的记录,在定义字段时,必须通过数据元素定义,并且勾选数据元素的属性 <变更文档>. 否则变更文档对象不会记录该字段的变更.
定义字段时需要注意设置该标记,但也不是所有的字段都需要设置.比如一些记录日期,时间,用户,时间戳信息的字段无需设置该标记.
五
变更文档查询
可以通过标准报表程序RSSCD100查询变更记录
变更文档存在的表CDHDR / CDPOS
可以直接关联这两个表实现变更记录的查询.
标准事务都有菜单可以进入变更文档的查询.
图五 RSSCD100查询
图六 标准物料主数据的查询
六
通用修改程序与变更文档
通用修改程序通过 任意表字段更新 完成字段内容的修改
详见链接
无峰,公众号:ABAP 技巧与实战SAP工具箱 批量更新任意表字段内容
也可以通过扩展函数调用BAPI完成字段内容的修改
这两种方式都会记录变更文档.
在通用修改程序界面上添加按钮 <变更> 可以对选中的行显示变更记录.(只显示通用修改程序涉及到的字段的变更).
七
总结
通过补充显示变更文档功能,进一步完善通用修改程序的功能.
需要注意的是,物料的修改对象与其它修改对象有点差异, 它在修改对象中没有放标准表, 而是放了一些D<标准表> . 这个特性给记录/显示变更文档带来了一些麻烦. 有可能还有其它的变更文档使用了一些不同的方式. 这些未知方式目前尚未纳入通用变更程序的处理范围. 只能后续碰到再优化.
下面两个图片是物料主数据(MAKT表)和自定义的表的记录差异. 仔细看表键字段,可以看出二者的差异
物料主数据的MAKT<表键>字段没有记录物料编码(DMAKT中没有物料编码).
自定义的修改对象把所有主键(包括集团)内容合并放入<表键>字段
<对象值>字段似乎放的排除集团的第一个主键字段内容(定义表的时候, 如果是联合主键, 尽量把更重要的字段放到前面,比如 MARC 把物料放到工厂前面)
THE
END