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.
IDOC SEND
最新推荐文章于 2024-03-28 14:25:31 发布