Hello,

Sign up to join our community!

Welcome Back,

Please sign in to your account!

Forgot Password,

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

You must login to ask a question.

You must login to send a message.

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Welcome To SAPEWM HELP

Ask questions and get real answers from real Experts. Get instant solutions for your SAP Extended Warehouse Management ABAP FICO BASIS and other Modules challenges. Experts from SAP community will help you resolve you issues, optimize processes, and provide guidance.

Our Statistics

  • Questions 243
  • Answers 43
  • Best Answers 0
  • Users 14
  1. Stock mismatch between SAP EWM and ERP is a very common production issue and usually indicates that a posting or synchronization step was interrupted or bypassed. Even when no open tasks or queues are visible, inconsistencies can still exist at a deeper level. Below is a practical, real-project trouRead more

    Stock mismatch between SAP EWM and ERP is a very common production issue and usually indicates that a posting or synchronization step was interrupted or bypassed. Even when no open tasks or queues are visible, inconsistencies can still exist at a deeper level.

    Below is a practical, real-project troubleshooting guide.

    1. Understand Where the Mismatch Exists First
    Before correcting anything, identify where the inconsistency originates.

    Check:
    – /SCWM/MON for EWM stock
    – MMBE / MB52 for ERP stock
    – Compare storage location, batch, and stock type

    This helps decide whether EWM or ERP is the leading system for correction.

    2. Check for Incomplete or Failed Posting Changes
    Posting changes are a top reason for mismatches.

    – Check open or canceled posting changes in /SCWM/MON
    – Verify whether posting changes were confirmed in EWM but not posted to ERP

    3. Verify Physical Inventory Posting in Both Systems
    Even if PI documents are closed:
    – Verify PI posting in EWM
    – Check ERP material documents related to PI

    4. Check qRFC Queues Carefully
    Recheck SMQ1 / SMQ2 for:
    – Stock synchronization queues
    – Old or previously failed messages

    5. Analyze Application Logs
    Check SLG1 with objects:
    – /SCWM/ERP
    – /SCWM/PI
    – /SCWM/POST

    6. Check for Manual ERP Movements
    Ensure no goods movements were posted directly in ERP using MIGO.

    7. Validate Stock Type and Availability Group Mapping
    Ensure EWM stock types are correctly mapped to ERP stock types.

    Safest Way to Correct Stock Differences:
    – If EWM stock is correct, adjust ERP stock
    – If ERP stock is correct, adjust EWM stock using posting change or correction tools

    Never delete stock directly from database tables.

    In most real projects, stock mismatch is caused by incomplete posting changes, PI issues, manual ERP postings, or mapping errors.

    See less
  2. SAP EWM Warehouse Task Not Created After Inbound Delivery When an inbound delivery is successfully distributed to SAP EWM but Warehouse Tasks (WTs) are not created, the issue is usually related to process configuration gaps or missing master data, even if everything appears correct at first glance.BRead more

    SAP EWM Warehouse Task Not Created After Inbound Delivery

    When an inbound delivery is successfully distributed to SAP EWM but Warehouse Tasks (WTs) are not created, the issue is usually related to process configuration gaps or missing master data, even if everything appears correct at first glance.
    Below is a systematic checklist based on real project experience.


    🔍 1. Check Inbound Delivery Item Status

    • Go to /SCWM/MON

    • Navigate to the inbound delivery item

    • Verify the status:

      • “Putaway Relevance” must be active

      • Delivery item must be released for warehouse processing

    👉 If the delivery is not released, WT creation will not trigger.


    🔍 2. Verify Warehouse Process Type (WPT)

    Check whether the correct Warehouse Process Type is determined:

    • Go to SPRO → EWM → Goods Receipt → Warehouse Task → Define Warehouse Process Type

    • Ensure:

      • Putaway relevance is active

      • Correct stock removal/placement control is set

      • Confirmation control is not blocking WT creation

    👉 Wrong or incomplete WPT is one of the most common causes.


    🔍 3. Check Putaway Strategy & Storage Type Search

    • Verify Putaway Strategy in:

      • Product master (warehouse view)

      • Storage type search sequence

    • Ensure:

      • At least one storage type is found

      • Storage type allows putaway

      • No capacity or bin restriction blocks WT creation

    👉 If no valid storage type/bin is found, WT will not be created.


    🔍 4. Check Product Master Data

    In /SCWM/MAT1, confirm:

    • Putaway control indicator is maintained

    • Storage section / storage type indicators are correct

    • Handling Unit requirement matches the process

    • Batch/SLED settings (if applicable) are consistent

    👉 Missing or incorrect product master data often blocks task creation silently.


    🔍 5. Check Warehouse Task Creation Settings

    • Verify whether WT creation is:

      • Manual

      • Automatic

      • Triggered by PPF

    • If PPF is used:

      • Check PPF action status

      • Ensure action is processed successfully

    👉 If WT creation is set to manual, system will not create tasks automatically.


    🔍 6. Check Queue & Warehouse Order Settings

    • Ensure a valid queue is determined

    • Check:

      • Queue assignment

      • Warehouse Order Creation Rules (WOCR)

    • Incorrect queue determination may prevent WT processing.


    🔍 7. Check Application Logs & Queues

    Always check:

    • SLG1 – Application logs for hidden errors

    • SMQ1 / SMQ2 – qRFC queues for stuck messages

    👉 Many WT creation issues are visible only in logs, not on the UI.


    ✅ Final Recommendation (Real Project Insight)

    In most productive systems, WT not created after inbound delivery is caused by:

    1. Incorrect or incomplete Warehouse Process Type

    2. Missing putaway strategy or storage type

    3. Product master data gaps

    4. Delivery not released for warehouse processing

    5. PPF or queue-related issues

    See less
  3. This issue is commonly caused by RF framework configuration gaps or process inconsistencies. Below is a systematic troubleshooting approach based on real project experience. 🔍 1. Check Warehouse Task Confirmation Status Go to /SCWM/MON Verify whether the WT is: Fully confirmed Partially confirmed ReRead more

    This issue is commonly caused by RF framework configuration gaps or process inconsistencies. Below is a systematic troubleshooting approach based on real project experience.


    🔍 1. Check Warehouse Task Confirmation Status

    • Go to /SCWM/MON

    • Verify whether the WT is:

      • Fully confirmed

      • Partially confirmed

      • Reversed automatically

    • Ensure no follow-up WT is generated and left open

    👉 Stock will not update if WT confirmation is incomplete.


    🔍 2. Verify RF Logical Transaction & Screen Sequence

    • Go to /SCWM/RFUI

    • Check:

      • Logical transaction assigned correctly

      • Screen sequence includes confirmation screen

      • No screen is skipped due to incorrect control parameters

    👉 Missing confirmation screen can cause logical completion but no physical stock update.


    🔍 3. Validate Warehouse Process Type (WPT)

    • Ensure correct WPT is determined for RF picking

    • Check:

      • Stock removal strategy

      • Confirmation control

      • HU requirement settings

    👉 Wrong WPT may confirm WT without posting stock movement.


    🔍 4. Check Queue & Warehouse Order Creation Rules (WOCR)

    • Incorrect queue or WOCR may:

      • Delay posting

      • Assign WT to wrong resource

    • Reprocess and confirm again


    🔍 5. Inspect Posting Change & Stock Type Settings

    • Verify whether:

      • Posting change is required

      • Stock type (Available / Quality / Blocked) is changing

    • Incorrect stock type mapping can appear as “no update”


    🔍 6. Check RF User & Resource Assignment

    • Ensure:

      • RF user is correctly mapped to resource

      • Resource is active and logged on

    • Incorrect resource assignment may cause background rollback


    🔍 7. Application Logs & Queue Monitoring

    • Check:

      • SLG1 (Application Log)

      • SMQ1 / SMQ2 queues

    • Look for delayed or stuck updates


    ✅ Final Recommendation

    In most projects, this issue is caused by:

    • Incorrect RF screen sequence

    • Missing confirmation control in WPT

    • Resource not properly assigned

    Once RF flow and WPT are aligned, stock updates correctly in real time.


    See less
  4. Hi Marianne, You can get it. follow these steps. Get DOCID from /SCDL/PROCH_I or /SCDL/PROCH_O table by passing document number Pass DOCID in /SCWM/ORDIM_O and /SCWM/ORDIM_C table and get all open/confirmed tasks. let me know if you need further help on this.

    Hi Marianne,

    You can get it. follow these steps.

    Get DOCID from /SCDL/PROCH_I or /SCDL/PROCH_O table by passing document number

    Pass DOCID in /SCWM/ORDIM_O and /SCWM/ORDIM_C table and get all open/confirmed tasks.

    let me know if you need further help on this.

    See less
  5. DATA: lo_spfd TYPE REF TO /scdl/cl_sp_fd_out. DATA: lt_key TYPE /scdl/t_sp_k_head. DATA: lt_key_itm TYPE /scdl/t_sp_k_item. DATA: lv_aspect TYPE /scmb/sp_aspect VALUE '/SCDL/S_SP_A_HEAD'. DATA: lv_aspect_itm TYPE /scmb/sp_aspect VALUE '/SCDL/S_SP_A_ITEM'. DATA: lv_rejected TYPE abap_bool. DATA: lt_rRead more

    DATA: lo_spfd TYPE REF TO /scdl/cl_sp_fd_out.

    DATA: lt_key TYPE /scdl/t_sp_k_head.

    DATA: lt_key_itm TYPE /scdl/t_sp_k_item.

    DATA: lv_aspect TYPE /scmb/sp_aspect VALUE ‘/SCDL/S_SP_A_HEAD’.

    DATA: lv_aspect_itm TYPE /scmb/sp_aspect VALUE ‘/SCDL/S_SP_A_ITEM’.

    DATA: lv_rejected TYPE abap_bool.

    DATA: lt_ret TYPE /scdl/t_sp_return_code.

    DATA: lt_return TYPE bapiret2_t.

    DATA: lv_msg TYPE msgtx.

    DATA: lt_outrec TYPE /scdl/t_sp_a_head.

    DATA: lt_outrec_itm TYPE /scdl/t_sp_a_item.

    DATA: lt_docid TYPE /scwm/dlv_docid_item_tab.

    DATA: lt_key_docid TYPE /scdl/t_sp_k_head.

    DATA: lo_sp TYPE REF TO /scdl/cl_sp_prd_out.

    DATA: lo_dlv TYPE REF TO /scwm/cl_dlv_management_prd.

    DATA: lt_sp_k_head TYPE /scdl/t_sp_k_head.

    DATA: lt_sp_k_item TYPE /scdl/t_sp_k_item.

    DATA: lt_a_head_eew TYPE /scdl/t_sp_a_head_eew_prd.

    *–Append messaage for queue start

    MESSAGE s171 INTO lv_msg.

    PERFORM add_message TABLES lt_return

    USING lv_msg.

    CREATE OBJECT lo_spfd.

    *–Get OD

    SELECT docid,

    itemid

    FROM /scdl/db_dlvi_o

    INTO TABLE @lt_key_itm

    FOR ALL ENTRIES IN @it_docid

    WHERE refdocid = @it_docid-docid.

    IF sy-subrc = 0.

    lt_key = CORRESPONDING #( lt_key_itm MAPPING

    docid = docid ).

    *–Fetch corresponding FDO Details

    SELECT docid,

    itemid,

    doccat

    INTO TABLE @lt_docid

    FROM /scdl/db_dlvi_o

    FOR ALL ENTRIES IN @it_docid

    WHERE refdocid = @it_docid-docid.

    IF lt_docid[] IS NOT INITIAL.

    lt_key_docid = CORRESPONDING #( lt_docid MAPPING

    docid = docid ).

    ENDIF.

    DO 5 TIMES.

    SELECT *

    INTO TABLE @DATA(lt_msl)

    FROM /scwm/messagelog

    FOR ALL ENTRIES IN @lt_key

    WHERE docid EQ @lt_key-docid

    AND doccat = ‘FDO’.

    IF sy-subrc EQ 0 AND lt_msl IS NOT INITIAL.

    READ TABLE lt_msl INTO DATA(ls_msl)

    WITH KEY message = /scwm/if_mapping_constants=>sc_m_obdlv_change_revgi.

    IF sy-subrc NE 0.

    WAIT UP TO 2 SECONDS.

    CONTINUE.

    ELSE.

    LOOP AT lt_msl ASSIGNING FIELD-SYMBOL().

    IF -message = /scwm/if_mapping_constants=>sc_m_obdlv_change_revgi.
    -status = ‘X’.

    ELSEIF -message = /scwm/if_mapping_constants=>sc_m_obdlv_confirm_dec.
    -status = ‘X’.

    ENDIF.

    ENDLOOP.

    MODIFY /scwm/messagelog FROM TABLE lt_msl.

    COMMIT WORK AND WAIT.

    MESSAGE s167 INTO lv_msg.

    PERFORM add_message TABLES lt_return

    USING lv_msg.

    ENDIF.

    ENDIF.

    ENDDO.

    *–Check for errors

    IF VALUE #( lt_return[ type = ‘E’ ]-type OPTIONAL ) NE ‘E’.

    *–create service provider

    DATA(lo_message_box) = NEW /scdl/cl_sp_message_box( ).

    *–Create object to instantiate

    CREATE OBJECT lo_sp

    EXPORTING

    io_message_box = lo_message_box

    iv_doccat = /scdl/if_dl_doc_c=>sc_doccat_out_fd “sc_doccat_out_prd

    iv_mode = /scdl/cl_sp=>sc_mode_classic.

    *–Get real warehouse

    /scwm/cl_tm=>set_lgnum( iv_lgnum ).

    *–Lock dlv

    lo_sp->lock(

    EXPORTING

    inkeys = lt_key

    aspect = /scdl/if_sp_c=>sc_asp_head

    lockmode = /scdl/if_sp1_locking=>sc_exclusive_lock

    IMPORTING

    rejected = lv_rejected

    return_codes = DATA(lt_return_codes) ).

    *–read item details into buffer

    lo_sp->select(

    EXPORTING

    inkeys = lt_key_itm

    aspect = /scdl/if_sp_c=>sc_asp_item

    IMPORTING

    outrecords = lt_outrec_itm

    rejected = lv_rejected

    return_codes = lt_ret ).

    *–read header details into buffer

    lo_sp->select(

    EXPORTING

    inkeys = lt_key

    aspect = /scdl/if_sp_c=>sc_asp_head

    IMPORTING

    outrecords = lt_outrec

    rejected = lv_rejected

    return_codes = lt_ret ).

    *–Delete the FDO

    lo_sp->delete(

    EXPORTING

    inkeys = lt_key

    aspect = /scdl/if_sp_c=>sc_asp_head

    IMPORTING

    rejected = lv_rejected

    return_codes = lt_ret

    ).

    *–Check if any error occurred

    IF line_exists( lt_return_codes[ failed = abap_true ] ) OR lv_rejected EQ abap_true.

    *–Error to fail queue

    ELSE.

    lo_sp->save(

    IMPORTING

    rejected = lv_rejected ).

    *–Commit / rollback based on errors

    IF lv_rejected IS INITIAL.

    CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’

    EXPORTING

    wait = abap_true.

    CALL METHOD lo_sp->(‘CLEANUP’)

    EXPORTING

    reason = /scmb/if_sp_transaction=>sc_cleanup_commit.

    *–Clear buffers and release locks

    /scwm/cl_tm=>cleanup( ).

    ELSE.

    CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

    *–Clear buffers and release locks

    /scwm/cl_tm=>cleanup( ).

    ENDIF.

    ENDIF.

    See less
  6. I think this is not how PARAMETER ID is intended to be used. For transfering values from and to memory you should use MEMORY ID (EXPORT TO or IMPORT FROM).

    I think this is not how PARAMETER ID is intended to be used. For transfering values from and to memory you should use MEMORY ID (EXPORT TO or IMPORT FROM).

    See less
  7. Here is the sample code to read HU Create Instance for /scwm/cl_wm_packing class *--Get docid from the source HU       CALL METHOD /scwm/cl_wm_packing=>get_instance         IMPORTING           eo_instance = DATA(lo_wm_pack). * --init warehouse,application       CALL METHOD lo_wm_pack->init_pacRead more

    Here is the sample code to read HU

    Create Instance for /scwm/cl_wm_packing class
    
    *--Get docid from the source HU
          CALL METHOD /scwm/cl_wm_packing=>get_instance
            IMPORTING
              eo_instance = DATA(lo_wm_pack).
    
    
    
    * --init warehouse,application
          CALL METHOD lo_wm_pack->init_pack
            EXPORTING
              iv_badi_appl = 'WME'
              iv_lgnum     = is_ltap-lgnum
            EXCEPTIONS
              error        = 1
              OTHERS       = 2.
    
    
    
    * --get hu data, in this case only item data
          CALL METHOD lo_wm_pack->get_hu
            EXPORTING
              iv_guid_hu = is_ltap-sguid_hu                 " Unique Internal Identification of a Handling Unit
            IMPORTING
              et_huitm   = DATA(lt_huitm)                   " Material Items in the HU
            EXCEPTIONS
              not_found  = 1
              OTHERS     = 2.

     

    See less

Recent Posts on sapewmhelp.com

SAP EWM Help Latest Articles

Create TU in SAP Extended Warehouse Management – EWM

TRY.          lo_tu_cntrl->create_new_bo_tu( EXPORTING is_bo_tu_new = ls_new_tu_head                                         IMPORTING eo_bo_tu     = eo_bo_tu ). IF eo_bo_tu IS BOUND.             es_tu_act_num = eo_bo_tu->get_num( ).             APPEND es_tu_act_num TO lt_inkeys.          ENDIF.             lo_tu_cntrl->save( ). *--Commit work             COMMIT WORK AND WAIT.             tu_num = es_tu_act_num-tu_num.             "Log something in case of success           CATCH /scwm/cx_sr_error INTO lo_tu_exception.             ROLLBACK WORK. *--Log something in case of error

How can you extract specific fields from an internal table using FOR … WHERE inside a VALUE expression?

This creates a new string table containing only the names of users whose status = ‘ACTIVE’—short, clean, and readable. — REDUCE Example —Total Amount: 500 Output: — FILTER Example —Alice ACTIVECharlie ACTIVE — FOR Expression Example —AliceCharlie

Explore Our Blog