4、Transaction BD60 Additional Data for Message Type
创建记录保存在表TBDME中
需要为每个message type定义一个function module,这个FM为主数据生成和分发idoc,他的命名:MASTERIDOC_CREATE_SMD_XXXXX
其中‘ XXXXX’是message type的名称
为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
一、主数据对象直接发送
这种情况会发送整个主数据的数据,通常执行已‘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
定义的 change document fields都保存在TBD62表中
2、Transaction BD50 激活message type下的change pointers
创建记录保存在表TBDA2中
3、Transaction BD61 激活change pointers-一般数据
4、Transaction BD60 Additional Data for Message Type
创建记录保存在表TBDME中
需要为每个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,使这一切都成为自动化。
在生产系统中,我们不能通过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