0
点赞
收藏
分享

微信扫一扫

SAP change_document

货铺QQ群号:834508274
申请时请提供您哪个模块顾问,否则是一律不通过的。
进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合
不修改昵称会被不定期踢除,谢谢配合


干货部分:

1、通过TCODE:SCDO 创建一个change document object。


1)输入TCODE:SCDO

SAP change_document_数据

SAP change_document_数据_02

2)为change document object命名


Namespace(名字空间)可以不填;


注意:Customers change document object必须以Z或Y开始。

SAP change_document_数据_03

SAP change_document_全局变量_04

3)change document object指定一个application table;然后插入条目;

SAP change_document_字段_05

SAP change_document_数据_06


4)返回到如下界面,将光标放在更改对象上,点击生成更新程序;

SAP change_document_字段_07

SAP change_document_数据_08

5)出现如下界面,在功能组栏输入一个function group 名称。


此function group名称如果在b步中指定的package中不存在,则会自动创建一个新的function group。直接点击“生成”;

SAP change_document_全局变量_09

SAP change_document_全局变量_10

6)出现如下将要生成的清单;

SAP change_document_数据_11

7)点击“保存”按钮。

SAP change_document_数据_12

8)查看生成的代码:

SAP change_document_字段_13

至此, 成功创建了一个你所指定的application table的change document object,


2、如何记录数据库字段


1)对需要修改的字段,数据元素—更改文档打钩

SAP change_document_全局变量_14

SAP change_document_全局变量_15

2)调用程序更新change document


分别有两种方式:


方式一:通过上面介绍的4个包含程序;


先为FZLM_TEST001CDF和FZLM_TEST001CDV中定义的变量赋值.然后使用perform语法去调用FZLM_TEST001CDC这个include中的form


方式二:程序中直接调用


CALL FUNCTION 'ZBP_TEST_WRITE_DOCUMENT' IN UPDATE TASK


因为方式一perform的那个form实际做的也是call 这个function module.


下面详述下这种方式的步骤:


Ø 先为Document header的管理数据等全局变量赋值;


Object Id:是document key的一部分,所以需要考虑好起什么样的object id,以便今后搜索方便。一种方式是把changed record的KEY作为object id;


global fieldstcode,utime,udate,username输入当前的transaction code,change time and date以及改变数据的user name即可.


UPD_   = 'U '表示做的是更新;


UPD_   = 'I '表示做的是创建;


UPD_   = 'D '表示做的是删除;


Ø 封装程序修改之前的数据和修改之后的数据。通过与表结构一样的结构体去封装;


Ø 在同一个SAP LUW中去做application table的更新和change document的更新;


Ø 提交事务。



程序demo如下:

SAP change_document_数据_16


执行结果:

SAP change_document_数据_17

SAP change_document_全局变量_18

3、查看change document


通过TCODE: RSSCD100

SAP change_document_数据_19

SAP change_document_数据_20

附录:


1、命名规则和功能简介:


1更新函数模块:它是自动创建的,命名规则是:_WRITE_DOCUMENT


在这个例子中就为ZLM_TEST001_WRITE_DOCUMENT;


通过调用这个function module,按照它的要求去传参数就能实现我们的记录表的更新的作用;该方法是update V1


2)四个包含程序:命名规则分别是:


FCDT 对应 FZLM_TEST001CDT


FCDF 对应 FZLM_TEST001CDF


FCDV 对应 FZLM_TEST001CDV


FCDC 对应 FZLM_TEST001CDC


分别打开四个包含程序,可以看到:


a)  FZLM_TEST001CDT内容是:


include fzlm_test001cdf.include fzlm_test001cdv.


b)  FZLM_TEST001CDF内容是:


一些全局变量的定义,任何一个change document object的创建都会有这些,与具体的application table无关;


c)  FZLM_TEST001CDV内容是:


一些与该change document object对应的application table相关的变量定义;


d)  FZLM_TEST001CDC内容是:


一个form 程序。参数是:FZLM_TEST001CDF和FZLM_TEST001CDV定义的变量。


这个form


CALL FUNCTION 'ZLM_TEST001_WRITE_DOCUMENT' IN UPDATE TASK


……


注意:要加上IN UPDATE TASK.


 


2、各种模式的测试:

SAP change_document_数据_21

1)当插入使用‘I’模式时,能体现记录情况,没有插入的新旧值记录


2)删除使用‘D’模式,显示删除记录,没有记录删除的新旧值变化


3)在插入时使用‘U’模式:体现了插入的新值变化


4)删除时使用’U’,没有操作记录,所有删除不能使用U模式



举报

相关推荐

0 条评论