BOM 创建同步(消息类型和处理代码)

两个不同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 测试通过.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值