Showing posts with label ABAP EWM. Show all posts
Showing posts with label ABAP EWM. Show all posts

Jun 21, 2026

Convert Warehouse from WM to EWM Vice Versa.

Function Modules to Convert EWM to WM Vice Versa


Data Delaration: Include LZDIFG_EWMTOP

FUNCTION-POOL zdifg_ewm.                    "MESSAGE-ID ..

DATAgt_whmap TYPE /scwm/tt_tmapwhnum.


Function: ZDIFM_EWM_TO_WM

FUNCTION zdifm_ewm_to_wm.
*"--------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IV_WHEWM) TYPE  /SCWM/LGNUM
*"  CHANGING
*"     VALUE(CV_WHWM) TYPE  HUM_LGNUM
*"--------------------------------------------------------------------

  IF gt_whmap[] IS INITIAL.
    SELECT * FROM /scwm/tmapwhnum INTO TABLE gt_whmap.
  ENDIF.

  cv_whwm = VALUE #( gt_whmap[ whnumwme = iv_whewm ]-whnumerp OPTIONAL ).

ENDFUNCTION.


Function: ZDIFM_WM_TO_EWM

FUNCTION zdifm_wm_to_ewm.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IV_WHWM) TYPE  HUM_LGNUM
*"  CHANGING
*"     VALUE(CV_WHEWM) TYPE  /SCWM/LGNUM
*"----------------------------------------------------------------------

  IF gt_whmap[] IS INITIAL.
    SELECT FROM /scwm/tmapwhnum INTO TABLE gt_whmap.
  ENDIF.

  cv_whewm VALUE #gt_whmap[ whnumerp iv_whwm ]-whnumerp OPTIONAL ).

ENDFUNCTION.



SAP ABAP EWM Sample Code for Goods Movement, Reversal, GR and GI

This Function module works for Goods Movement, Reversal, GR and GI 

FUNCTION zdifm_goods_movement .
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IV_DOCNO) TYPE  /SCDL/DL_DOCNO_INT
*"     VALUE(IV_REVERSAL) TYPE  XFELD OPTIONAL
*"  EXPORTING
*"     VALUE(ET_MESSAGE) TYPE  /SCDL/DM_MESSAGE_TAB
*"----------------------------------------------------------------------

  DATAlo_dlv_save TYPE REF TO /scwm/cl_dlv_management_prd,
        lo_message  TYPE REF TO /scdl/cl_dm_message,
        lt_dlv      TYPE        /scwm/dlv_docid_item_tab,
        ls_dlv      TYPE        /scwm/dlv_docid_item_str,
        lv_gmcat    TYPE        /scdl/dl_doccat.


  lo_dlv_save /scwm/cl_dlv_management_prd=>get_instance).

  SELECT i~docidi~itemidh~docnoh~doccat
    FROM /scdl/db_proci_i AS i
    INNER JOIN /scdl/db_proch_i AS h
      ON h~docid i~docid
    INTO TABLE @DATA(lt_pdi)
    WHERE h~docno @iv_docno.


  CHECK sy-subrc IS INITIAL.

  LOOP AT lt_pdi INTO DATA(ls_pdi).

    IF sy-tabix 1.
      lo_dlv_save->get_warehouse(
               EXPORTING iv_doccat ls_pdi-doccat
                         iv_docid  ls_pdi-docid
               IMPORTING ev_whno   DATA(lv_lgnum).
    ENDIF.

    ls_dlv-docid  ls_pdi-docid.
    ls_dlv-itemid ls_pdi-itemid.
    ls_dlv-doccat ls_pdi-doccat.
    APPEND ls_dlv TO lt_dlv.

  ENDLOOP.


  CHECK lt_dlv[] IS NOT INITIAL.

  /scwm/cl_tm=>cleanupiv_lgnum lv_lgnum ).

  "Reversal GM
  IF iv_reversal IS NOT INITIAL.
    CASE ls_pdi-doccat.
* Goods receipt
      WHEN wmegc_doccat_pdi.                    "PDI Inbound delivery
        "GRR Reverse Goods Receipt/SCDL/IF_DL_DOC_C=>SC_DOCCAT_GRR
        lv_gmcat /scwm/if_docflow_c=>sc_grr.
* Goods issue
      WHEN wmegc_doccat_pdo                     "PDO Outbound del
        OR /scdl/if_dl_doc_c=>sc_doccat_out_fd"FDO Document type delivery
        "GI (Goods Issue)  /SCDL/IF_DL_DOC_C=>SC_DOCCAT_GI
        lv_gmcat /scwm/if_docflow_c=>sc_gir.
    ENDCASE.

  ELSE.                                       "Create Goods Movement
    CASE ls_pdi-doccat.
* Goods receipt
      WHEN wmegc_doccat_pdi.                    "PDI Inbound delivery
        "GR (Goods Receipt)  /SCDL/IF_DL_DOC_C=>SC_DOCCAT_GR
        lv_gmcat /scwm/if_docflow_c=>sc_gr.
* Goods issue
      WHEN wmegc_doccat_pdo                     "PDO Outbound del
        OR /scdl/if_dl_doc_c=>sc_doccat_out_fd"FDO Document type delivery
        "GI (Goods Issue)  /SCDL/IF_DL_DOC_C=>SC_DOCCAT_GI
        lv_gmcat /scwm/if_docflow_c=>sc_gi.
    ENDCASE.

  ENDIF.

  /scwm/cl_goods_movement=>/scwm/if_gm_dlv~post_dlv(
                 EXPORTING it_dlv     lt_dlv
                           iv_gmcat   lv_gmcat
                 IMPORTING eo_message lo_message ).

  "Message handling
  IF lo_message IS BOUND.
    et_message lo_message->get_messages).
    IF et_message[] IS INITIAL.
      ##NEEDED
      lo_dlv_save->saveIMPORTING ev_rejected DATA(lv_flag_rejected)
                                   et_message  et_message ).
    ENDIF.
  ENDIF"lo_message IS BOUND.


  LOOP AT et_message INTO DATA(ls_message)
                     WHERE msgty CA 'AXE'.
    EXIT.
  ENDLOOP.

  IF sy-subrc EQ AND
     ls_message IS NOT INITIAL.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait abap_true.
  ENDIF.

*   /scwm/cl_tm=>cleanup( iv_lgnum = lv_lgnum ).
  CALL METHOD /scwm/cl_tm=>cleanup).
  CALL FUNCTION '/SCWM/HUMAIN_REFRESH'.


ENDFUNCTION.