两个不同SAP系统间的BOM创建需要同步, 涉及的IDoc消息类型和处理代码如下:
消息类型 BOMMAT
处理代码:BOMM
伙伴参数设置截图:
WE20 -- LS 逻辑系统
Outbound
Inbound
其他的配置基本按照本博的IDOC标准流程配置就OK了.
测试代码:
DATA: wa_e1stzum TYPE e1stzum, " BOM主记录
wa_e1mastm TYPE e1mastm, " 主物料 BOM
wa_e1stkom TYPE e1stkom, " STKO
wa_e1stpom TYPE e1stpom, " 主记录 BOM 项目
wa_edidc TYPE edidc,
it_edidc TYPE TABLE OF edidc,
it_edidd TYPE TABLE OF edidd WITH HEADER LINE.
CLEAR wa_edidc.
*系统根据下面4行即可与WE20设置关联起来
wa_edidc-mestyp = 'BOMMAT'. "Message Type
wa_edidc-idoctp = 'BOMMAT04'. "IDOC Type
wa_edidc-rcvprn = 'TODES'. "Partner Number of Recipient
wa_edidc-rcvprt = 'LS'. "Partner Type of Receiver
*添加IDOC结点
CLEAR it_edidd.
it_edidd-segnam = 'E1STZUM'."结点名称
it_edidd-dtint2 = 0.
CLEAR wa_e1stzum.
wa_e1stzum-stlan = '1'.
wa_e1stzum-ztext = 'BOM IDoc Test'. "
wa_e1stzum-stldt = sy-datum.
wa_e1stzum-stltm = sy-uzeit.
it_edidd-sdata = wa_e1stzum. "结点内容
APPEND it_edidd.
CLEAR it_edidd.
it_edidd-segnam = 'E1MASTM'.
it_edidd-dtint2 = 0.
CLEAR wa_e1mastm.
wa_e1mastm-matnr = 'MATNO0000'.
wa_e1mastm-werks = '1000'.
wa_e1mastm-stlan = '1'.
wa_e1mastm-stlal = '01'.
it_edidd-sdata = wa_e1mastm.
APPEND it_edidd.
CLEAR it_edidd.
it_edidd-segnam = 'E1STKOM'.
it_edidd-dtint2 = 0.
CLEAR wa_e1stpom.
wa_e1stkom-stlal = '1'.
wa_e1stkom-datuv = sy-datum.
wa_e1stkom-bmein = 'PCS'.
wa_e1stkom-bmeng = '1.00'.
wa_e1stkom-stktx = '12355'.
wa_e1stkom-stlst = '01'.
it_edidd-sdata = wa_e1stkom.
APPEND it_edidd.
CLEAR it_edidd.
it_edidd-segnam = 'E1STPOM '.
it_edidd-dtint2 = 0.
CLEAR wa_e1stpom.
wa_e1stpom-stlkn = '00000001'.
wa_e1stpom-idnrk = 'MATNO0001'.
wa_e1stpom-postp = 'L'.
wa_e1stpom-posnr = '0010'.
wa_e1stpom-meins = 'PCS'.
wa_e1stpom-menge_c = '1.00'.
it_edidd-sdata = wa_e1stpom.
APPEND it_edidd.
*
CLEAR it_edidd.
it_edidd-segnam = 'E1STPOM '.
it_edidd-dtint2 = 0.
CLEAR wa_e1stpom.
wa_e1stpom-stlkn = '00000002'.
wa_e1stpom-idnrk = 'MATNO0002'.
wa_e1stpom-postp = 'L'.
wa_e1stpom-posnr = '0020'.
wa_e1stpom-sortf = ''.
wa_e1stpom-meins = 'PCS'.
wa_e1stpom-menge_C = '1.00'.
it_edidd-sdata = wa_e1stpom.
APPEND it_edidd.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
EXPORTING
master_idoc_control = wa_edidc "Export
TABLES
communication_idoc_control = it_edidc "Import
master_idoc_data = it_edidd "Export
EXCEPTIONS
error_in_idoc_control = 1
error_writing_idoc_status = 2
error_in_idoc_data = 3
sending_logical_system_unknown = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
COMMIT WORK.
BREAK-POINT.
WRITE: 'Idoc sent:'.
LOOP AT it_edidc INTO wa_edidc.
NEW-LINE.
WRITE: 'Idoc number is', wa_edidc-docnum,
'; receiver partner is', wa_edidc-rcvprn,
'; sender partner',wa_edidc-sndprn.
ENDLOOP.
ENDIF.
注: 实时同步时, 可以CS01 / 02 相应的增强中写代码, 提交IDoc即可实现.
以上代码, ECC6 测试通过.