IDOC SEND

   DATA: ls_cntl  TYPE edidc.
    DATA: lt_edidc TYPE STANDARD TABLE OF edidc,
          lt_edidd TYPE STANDARD TABLE OF edidd.

    IF it_data[] IS INITIAL OR it_esb[] IS INITIAL.
      RETURN.
    ENDIF.

  types:
    BEGIN OF ts_edipara,
             rcvprt TYPE  edi_rcvprt,
             rcvpfc TYPE  edi_rcvpfc,
             rcvprn TYPE  edi_rcvprn,
             rcvpor TYPE  edi_rcvpor,
           END OF ts_edipara .

    DATA ls_para TYPE  ts_edipara.

  ls_para-rcvprt	=	'LS'.
  ls_para-rcvpfc	=	'LS'.
  IF sy-mandt <> '800'.
    ls_para-rcvprn	=	'E012ESB'.
    ls_para-rcvpor	=	'ZESB'.
  ELSE.
    ls_para-rcvprn	=	'E032ESB'.
    ls_para-rcvpor	=	'ZESB'.
  ENDIF.

    ls_cntl-idoctp = 'ZI0004'.   "IDOC TYPE
    ls_cntl-mestyp = 'ZMT0004'.  "MESSAGE TYPE
    ls_cntl-rcvprt = ls_para-rcvprt.          "PARTNER TYPE
    ls_cntl-rcvprn = ls_para-rcvprn.          "PARTNER NO
    ls_cntl-rcvpor = ls_para-rcvpor.
    ls_cntl-rcvpfc = ls_para-rcvpfc.

    APPEND INITIAL LINE TO lt_edidd ASSIGNING FIELD-SYMBOL(<ls_edidd>).
    <ls_edidd>-segnam = 'ZSG0004H'.
    <ls_edidd>-sdata  = is_head.

    LOOP AT it_data INTO DATA(ls_data).
      APPEND INITIAL LINE TO lt_edidd ASSIGNING <ls_edidd>.
      <ls_edidd>-segnam = 'ZSG0004'.
      <ls_edidd>-sdata  = ls_data.
    ENDLOOP.

    LOOP AT it_esb INTO DATA(ls_esb).
      APPEND INITIAL LINE TO lt_edidd ASSIGNING <ls_edidd>.
      <ls_edidd>-segnam = 'ZESB'.
      <ls_edidd>-sdata  = ls_esb.
    ENDLOOP.

    CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
      EXPORTING
        master_idoc_control            = ls_cntl
      TABLES
        communication_idoc_control     = lt_edidc[]
        master_idoc_data               = lt_edidd[]
      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.
      RETURN.
    ENDIF.

    LOOP AT lt_edidc INTO DATA(ls_edidc).
      CALL FUNCTION 'EDI_DOCUMENT_DEQUEUE_LATER'
        EXPORTING
          docnum                 = ls_edidc-docnum
        EXCEPTIONS
          idoc_is_not_to_dequeue = 1
          OTHERS                 = 2.
    ENDLOOP.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值