二维码

[IDOC] 出栈主数据Master Data的分发

Twilight发表于 2014-11-03 16:28CK_Rocky 最后回复于 2016-05-10 16:34 [复制链接] 6987 1

主数据能通过下面两种方法进行分发,在这两种情况下,idoc仅仅为一个主数据接收数据。
一、主数据对象直接发送
这种情况会发送整个主数据的数据,通常执行已‘RBDSEXXX’命名的程序来触发他。
'RBDSEXXX'中的‘XXX’表示message type的前三个字符
如:message type :MATMAS  ----->program:RBDSRMAT
message type :DEBMAS  ----->program:RBDSEDEB

在report程序中调用function为主数据生成和分发idoc,这些function module的命名规则:MASTERIDOC_CREATE_REQ__XXXXX,其中的'XXXXX '表示message type的名称。
这种function module生成和分发idoc的顺序:
1)、为每条主数据创建idoc,每个segment的第一个字段(MSGFN)都是'005'
        DATA: C_MSGFN_R LIKE BDIMARAKEY-MSGFN VALUE '005'.
2)、调用FM:MASTER IDOC_DISTRIBUTE,传输IDOC到ALE层
3)、执行FM:COMMIT WORK和FM:DEQUEUE_ALL

二、使用SMD tool (Shared master data tool) 分发主数据
SMD tools会记录主数据的更改,当主数据更改/创建或者删除时,都会产生一个变更日志。仅仅被更改的数值会被生成idoc传输到ALE层,然后分发到别的系统。
例如:当使用T-code:XD02更改客户数据保存时,一条记录就会保存到BDCPS/ BDCP2表,这条记录开始创建时这个表的PROCESS字段是空值,一旦change pointer执行完成这个字段就会被标记为‘X’。
SMD相关表
BDCP : change point
BDCPS:Change pointer: Status
BDCP2: Aggregated Change Pointers (BDCP, BDCPS)

使用SMD tool分发主数据的配置步骤:
1、Transaction BD52 为message type定义change document item
Distributing Master Data 1.jpg
定义的 change document fields都保存在TBD62表中
Distributing Master Data 2.jpg

2、Transaction BD50 激活message type下的change pointers
创建记录保存在表TBDA2中
Distributing Master Data 3.jpg

3、Transaction BD61 激活change pointers-一般数据
Distributing Master Data 4.jpg

4、Transaction BD60 Additional Data for Message Type
创建记录保存在表TBDME中
Distributing Master Data 5.jpg
Distributing Master Data 6.jpg
需要为每个message type定义一个function module,这个FM为主数据生成和分发idoc,他的命名:MASTERIDOC_CREATE_SMD_XXXXX
其中‘ XXXXX’是message type的名称

这个FM执行change pointers生成IDOC的流程:
1)使用FM:CHANGE_POINTERS_READ从表BDCP中读取分配给message type的没有被处理changed pointers
表BDCP获取的每条记录都包含IDOC segments,每个segment的第一个字段MSGFN有如下值:
009 – 主数据中有新建  
004 – 主数据中有修改
003 – 主数据中有删除
018 – 没有改动,但是附属于它的segment需要分发
2)使用FM: MASTER IDOC_DISTRIBUTE分发idoc到ALE层
3)对应已经处理的主数据,使用FM:CHANGE_POINTER_STATUS_WRITE将表BDCP的change pointer状态设置成'已处理'。

5、Transaction BD64  为partner profile分配message type,然后生成参数伙伴文件

6、依据change pointers创建IDOC
T-code :BD21 它对应的是程序 RBDMIDOC,它会根据BD60中的配置,找到相应的Function进行分发。在实际应用中,会设置batch job,使这一切都成为自动化。
Distributing Master Data 7.jpg
在生产系统中,我们不能通过T-code:BD21直接发送,而是后台定义job执行的

为idoc扩展自定义字段(增强
RBDSEXXX程序call function module:MASTERIDOC_CREATE_REQ_XXXXX ,而MASTERIDOC_CREATE_REQ_XXXXX 调用 Function module :MASTERIDOC_CREATE_XXXXX
RBDMIDOC程序调用MASTERIDOC_CREATE_SMD_XXXXX,但现需要用transaction BD60配置
For e.g for message type MATMAS for material download  
Function Module: MASTERIDOC_CREATE_MATMAS
USER EXIT:EXIT_SAPLMV01_002
ENHANCEMENT: MGV00001  
Extended IDOC Field:IDOC_CIMTYPE  

Append的在标准表中的数据,如果要实现change point功能,那么需要在它的Data element中,Further Characteristics label中勾选change document
回复

使用道具 举报

CK_Rocky
LZ,我发现我们系统上的BDCP这张表都没有数据,要做什么设置才可以使这张表会保存修改数据??
感谢!
回复 支持 反对

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表