MASTER IDOC DISTRIBUTE: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
M1ch3lde (Diskussion | Beiträge)
Die Seite wurde neu angelegt: „== Deklaration == e1mbgmcr TYPE e1mbgmcr, e1bp2017_gm_head_01 TYPE e1bp2017_gm_head_01, e1bp2017_gm_c…“
 
M1ch3lde (Diskussion | Beiträge)
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie: Clean-Core-Level_B]]
== Deklaration ==
== Deklaration ==
 
<syntaxhighlight lang="abap">
          e1mbgmcr                    TYPE e1mbgmcr,
e1mbgmcr                    TYPE e1mbgmcr,
          e1bp2017_gm_head_01        TYPE e1bp2017_gm_head_01,
e1bp2017_gm_head_01        TYPE e1bp2017_gm_head_01,
          e1bp2017_gm_code            TYPE e1bp2017_gm_code,
e1bp2017_gm_code            TYPE e1bp2017_gm_code,
          e1bp2017_gm_item_create    TYPE e1bp2017_gm_item_create,
e1bp2017_gm_item_create    TYPE e1bp2017_gm_item_create,
          /spe/e1bp2017_servicepart_d TYPE /spe/e1bp2017_servicepart_d,
/spe/e1bp2017_servicepart_d TYPE /spe/e1bp2017_servicepart_d,
          ls_idoc_data                TYPE edidd,
ls_idoc_data                TYPE edidd,
          lt_idoc_data                TYPE TABLE OF edidd,
lt_idoc_data                TYPE TABLE OF edidd,
          lt_comm_control            TYPE TABLE OF edidc,
lt_comm_control            TYPE TABLE OF edidc,
          ls_idoc_control_master      TYPE edidc,
ls_idoc_control_master      TYPE edidc,
          lt_messages                TYPE bal_t_msg,
lt_messages                TYPE bal_t_msg,
          ls_message                  TYPE bal_s_msg.
ls_message                  TYPE bal_s_msg.
</syntaxhighlight>


== Codeschnipsel ==
== Codeschnipsel ==
 
<syntaxhighlight lang="abap">
  *  control data
  *  control data
     CLEAR ls_idoc_control_master.
     CLEAR ls_idoc_control_master.
Zeile 24: Zeile 26:
     ls_idoc_control_master-rcvpor = 'A000000005'. "Empfängerport
     ls_idoc_control_master-rcvpor = 'A000000005'. "Empfängerport
     ls_idoc_control_master-sndprt = 'LS'. "Partnerart Empfänger
     ls_idoc_control_master-sndprt = 'LS'. "Partnerart Empfänger
     ls_idoc_control_master-sndprn = 'MK'.
     ls_idoc_control_master-sndprn = 'XX'.
     CONCATENATE 'SAP' sy-sysid INTO ls_idoc_control_master-sndpor.
     CONCATENATE 'SAP' sy-sysid INTO ls_idoc_control_master-sndpor.
   
   
Zeile 54: Zeile 56:
     LOOP AT it_goodsmvtitem INTO DATA(ls_goodsmvtitem).
     LOOP AT it_goodsmvtitem INTO DATA(ls_goodsmvtitem).
       CLEAR: e1bp2017_gm_item_create, ls_idoc_data.
       CLEAR: e1bp2017_gm_item_create, ls_idoc_data.
     
       "Für Items muss eine Konvertierung stattfinden.
       "Für Items muss eine Konvertierung stattfinden.
       "LIT braucht für Paletten, Palettenmenge
       "XYZ braucht für Paletten, Palettenmenge
       "Es muss aus Gründen die Konvertierung auf führende Nullen stattfinden
       "Es muss aus Gründen die Konvertierung auf führende Nullen stattfinden
       DATA: lv_matnr_mit_nullen TYPE matnr.
       DATA: lv_matnr_mit_nullen TYPE matnr.
Zeile 64: Zeile 67:
         IMPORTING
         IMPORTING
           output = lv_matnr_mit_nullen.
           output = lv_matnr_mit_nullen.
       zcl_ldl_functions=>calc_quant( EXPORTING iv_matnr = lv_matnr_mit_nullen iv_menge = ls_goodsmvtitem-entry_qnt iv_out = 'X' IMPORTING ev_menge = ls_goodsmvtitem-entry_qnt ).
       zcl_ldl_functions=>calc_quant( EXPORTING iv_matnr = lv_matnr_mit_nullen iv_menge = ls_goodsmvtitem-entry_qnt iv_out = 'X' IMPORTING ev_menge = ls_goodsmvtitem-entry_qnt ).
       zcl_ldl_functions=>get_partner( EXPORTING iv_code = p_ldlco IMPORTING ev_partner = ls_goodsmvtitem-vendor ).
       zcl_ldl_functions=>get_partner( EXPORTING iv_code = p_ldlco IMPORTING ev_partner = ls_goodsmvtitem-vendor ).
Zeile 118: Zeile 122:
       APPEND ls_message TO et_results.
       APPEND ls_message TO et_results.
     ENDIF.
     ENDIF.
</syntaxhighlight>

Aktuelle Version vom 31. Januar 2026, 17:02 Uhr

Deklaration

 e1mbgmcr                    TYPE e1mbgmcr,
 e1bp2017_gm_head_01         TYPE e1bp2017_gm_head_01,
 e1bp2017_gm_code            TYPE e1bp2017_gm_code,
 e1bp2017_gm_item_create     TYPE e1bp2017_gm_item_create,
 /spe/e1bp2017_servicepart_d TYPE /spe/e1bp2017_servicepart_d,
 ls_idoc_data                TYPE edidd,
 lt_idoc_data                TYPE TABLE OF edidd,
 lt_comm_control             TYPE TABLE OF edidc,
 ls_idoc_control_master      TYPE edidc,
 lt_messages                 TYPE bal_t_msg,
 ls_message                  TYPE bal_s_msg.

Codeschnipsel

 *   control data
    CLEAR ls_idoc_control_master.
    ls_idoc_control_master-mestyp = 'MBGMCR'.
    ls_idoc_control_master-idoctp = 'MBGMCR03'.
    ls_idoc_control_master-rcvprt = 'LI'. "Partnerart Empfänger
    ls_idoc_control_master-rcvpfc = 'ZW'.  "Partnerrolle Empfänger
    zcl_ldl_functions=>get_partner( EXPORTING iv_code = p_ldlco IMPORTING ev_partner = ls_idoc_control_master-rcvprn ).
    ls_idoc_control_master-rcvpor = 'A000000005'. "Empfängerport
    ls_idoc_control_master-sndprt = 'LS'. "Partnerart Empfänger
    ls_idoc_control_master-sndprn = 'XX'.
    CONCATENATE 'SAP' sy-sysid INTO ls_idoc_control_master-sndpor.
 
 * for segment 'E1MBGMCR'                                               *
    CLEAR: e1mbgmcr, ls_idoc_data, lt_idoc_data.
    ls_idoc_data-sdata  = e1mbgmcr.
    ls_idoc_data-segnam = 'E1MBGMCR'.
    APPEND ls_idoc_data TO lt_idoc_data.
 
 *   for segment 'E1BP2017_GM_HEAD_01'                                  *
    CLEAR: e1bp2017_gm_head_01, ls_idoc_data.
    MOVE-CORRESPONDING is_goodsmvtheader TO e1bp2017_gm_head_01. "#EC ENHOK
    IF NOT e1bp2017_gm_head_01 IS INITIAL.
      ls_idoc_data-sdata = e1bp2017_gm_head_01.
      ls_idoc_data-segnam = 'E1BP2017_GM_HEAD_01'.
      APPEND ls_idoc_data TO lt_idoc_data.
    ENDIF.
 
 *   for segment 'E1BP2017_GM_CODE'                                     *
    CLEAR: e1bp2017_gm_code, ls_idoc_data.
    MOVE-CORRESPONDING is_goodsmvtcode TO e1bp2017_gm_code. "#EC ENHOK
    IF NOT e1bp2017_gm_code IS INITIAL.
      ls_idoc_data-sdata = e1bp2017_gm_code.
      ls_idoc_data-segnam = 'E1BP2017_GM_CODE'.
      APPEND ls_idoc_data TO lt_idoc_data.
    ENDIF.
 
 *   for segment 'E1BP2017_GM_ITEM_CREATE'    
    LOOP AT it_goodsmvtitem INTO DATA(ls_goodsmvtitem).
      CLEAR: e1bp2017_gm_item_create, ls_idoc_data.
      
      "Für Items muss eine Konvertierung stattfinden.
      "XYZ braucht für Paletten, Palettenmenge
      "Es muss aus Gründen die Konvertierung auf führende Nullen stattfinden
      DATA: lv_matnr_mit_nullen TYPE matnr.
      DATA: lv_mhd_int_date TYPE char08.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = ls_goodsmvtitem-material
        IMPORTING
          output = lv_matnr_mit_nullen.
 
      zcl_ldl_functions=>calc_quant( EXPORTING iv_matnr = lv_matnr_mit_nullen iv_menge = ls_goodsmvtitem-entry_qnt iv_out = 'X' IMPORTING ev_menge = ls_goodsmvtitem-entry_qnt ).
      zcl_ldl_functions=>get_partner( EXPORTING iv_code = p_ldlco IMPORTING ev_partner = ls_goodsmvtitem-vendor ).
      SHIFT ls_goodsmvtitem-vendor LEFT DELETING LEADING '0'.
      "MHD wird wie folgt gebraucht -> YYYYMMDD
      READ TABLE it_servicepart_data INTO DATA(ls_need_hu_for_mhd) INDEX 1.
      SELECT SINGLE mhd FROM zbestand_ldl INTO lv_mhd_int_date WHERE code = p_ldlco AND sscc = ls_need_hu_for_mhd-hu_number.
      ls_goodsmvtitem-expirydate = lv_mhd_int_date.
      "Mapping MOVE_TYPE in LDL Bewegungsart
      zcl_ldl_functions=>map_mmt( EXPORTING iv_bwa = ls_goodsmvtitem-move_type iv_out = 'X' IMPORTING ev_bwa = ls_goodsmvtitem-move_type ).
      MOVE-CORRESPONDING ls_goodsmvtitem TO e1bp2017_gm_item_create. "#EC ENHOK
      CONDENSE e1bp2017_gm_item_create-entry_qnt.
      CONDENSE e1bp2017_gm_item_create-po_pr_qnt.
      CONDENSE e1bp2017_gm_item_create-amount_lc.
      CONDENSE e1bp2017_gm_item_create-amount_sv.
      CONDENSE e1bp2017_gm_item_create-su_pl_stck_1.
      CONDENSE e1bp2017_gm_item_create-st_un_qtyy_1.
      CONDENSE e1bp2017_gm_item_create-su_pl_stck_2.
      CONDENSE e1bp2017_gm_item_create-st_un_qtyy_2.
      e1bp2017_gm_item_create-material = zcl_ldl_functions=>convert_matnr_external( iv_matnr = e1bp2017_gm_item_create-material ).
      ls_idoc_data-sdata = e1bp2017_gm_item_create.
      ls_idoc_data-segnam = 'E1BP2017_GM_ITEM_CREATE'.
      APPEND ls_idoc_data TO lt_idoc_data.
 **     for segment 'E1BP2017_GM_ITEM_CREATE1'                           *
 *      CLEAR: e1bp2017_gm_item_create1, ls_idoc_data, lt_idoc_data.
 *      MOVE-CORRESPONDING goodsmvtitem
 *          TO e1bp2017_gm_item_create1.                      "#EC ENHOK
 *      CONDENSE e1bp2017_gm_item_create1-quantity.
 *      idoc_data-sdata = e1bp2017_gm_item_create1.
 *      idoc_data-segnam = 'E1BP2017_GM_ITEM_CREATE1'.
 *      APPEND ls_idoc_data TO lt_idoc_data.
    ENDLOOP.
 
    CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
      EXPORTING
        master_idoc_control            = ls_idoc_control_master
 *       OBJ_TYPE                       = ''
 *       CHNUM                          = ''
      TABLES
        communication_idoc_control     = lt_comm_control
        master_idoc_data               = lt_idoc_data
      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.
      READ TABLE lt_comm_control INTO DATA(ls_comm_doc) INDEX 1.
      ls_message-msgty = 'E'.
      ls_message-msgid = 'ZLDL_BESTMONI'.
      ls_message-msgno = '021'.
      ls_message-msgv1 = ls_comm_doc-docnum.
      APPEND ls_message TO et_results.
    ENDIF.