Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

How to commit in a implementing class of a BADI

0 Likes
5,687

HI,

I Have an issue.

I have created a method in am implementing class of BADI in SAP EWM.  In this method i am calling the FM /SCWM/TO_CREATE_WHR in which i get the TO and WHO .

As i am using a COMMIT after this Fm it gives me a dump because it is a BADI.

So i also passed space to the Commit work.

CALL FUNCTION '/SCWM/TO_CREATE_WHR'

         EXPORTING

           iv_lgnum       = iv_lgnum "ps_pack_view-lgnum

           it_create_whr  = lt_create_whr

          IV_UPDATE_TASK 'X'

           iv_commit_work = ''

         IMPORTING

           ev_tanum       = lv_tanum

           et_ltap_vb     = lt_ltap

           et_bapiret     = lt_bapiret

           ev_severity    = lv_severity.


But i am now not able to get results in the lt_ltap and lv_tanum.


Please help.

HI,

I Have an issue.

I have created a method in am implementing class of BADI in SAP EWM.  In this method i am calling the FM /SCWM/TO_CREATE_WHR in which i get the TO and WHO .

As i am using a COMMIT after this Fm it gives me a dump because it is a BADI.

So i also passed space to the Commit work.

CALL FUNCTION '/SCWM/TO_CREATE_WHR'

         EXPORTING

           iv_lgnum       = iv_lgnum "ps_pack_view-lgnum

           it_create_whr  = lt_create_whr

          IV_UPDATE_TASK 'X'

           iv_commit_work = ''

         IMPORTING

           ev_tanum       = lv_tanum

           et_ltap_vb     = lt_ltap

           et_bapiret     = lt_bapiret

           ev_severity    = lv_severity.


But i am now not able to get results in the lt_ltap and lv_tanum.


Please help.

12 REPLIES 12
Read only

Juwin
Active Contributor
0 Likes
4,847

You are correct. You shouldn't ever be doing a COMMIT/ ROLL BACK inside a BADI/ Enhancement/ User Exit.

Hence, if you can shed some more light on what is the requirement you are trying to achieve here, it may help in finding answers.

Thanks,

Juwin

Read only

0 Likes
4,847

Hi Juwin,

Thanks for your reply.

Let me try to explain.

I am using the TO create FM to create a WHO and TO and I get these once I COMMIT them . In my method, I need those values for further processing. But as I am using this in a method which is written in the BADI implementing class , so I am not supposed to use a COMMIT. .

Later also in my method , there are various places where I need to COMMIT , I am a bit uncertain as to how to proceed.

Thanks

Gayatri

Read only

Juwin
Active Contributor
0 Likes
4,847

Still didn't explain the complete scenario. Which BADI is this?

I hope you understand by now that, this current design will not work, due to need for commit. So, what is the complete requirement you are trying to satisfy here?

Thanks

Read only

0 Likes
4,847

Description     Class for BAdI Impl.: ZDWM_REPLN_CANCEL_WT

Inst.Generation  Public.

METHOD inb_idoc_weighing_labelling.

     DATA : lt_huitm   TYPE /scwm/tt_huitm_int,

            ls_ordim_c TYPE /scwm/ordim_c,

            lv_guid_hu TYPE /scwm/guid_hu,

            ls_huitm   TYPE /scwm/s_huitm_int.

     DATAlv_vlenr TYPE /scwm/ltap_vlenr, " source HU

            lv_nlenr TYPE /scwm/ltap_nlenr, " Dest HU

            lv_ilenr TYPE /dsrt/ewm_de_ilenr.

     DATA : ls_ewm_vaslst TYPE /dsrt/ewm_vaslst,

            gs_vas_header TYPE /scwm/s_vas_header_int,

            ls_vas_header TYPE /scwm/s_vas_header_int,

            ls_dest_hdr   TYPE /scwm/s_huhdr_int,

            gs_src_hdr    TYPE /scwm/s_huhdr_int,

            ls_ewm_wal_sc TYPE /dsrt/ewm_wal_sc,

            lt_vas_act    TYPE /scwm/tt_vas_act_int,

            lo_vas_model  TYPE REF TO /scwm/cl_vas_model.

     DATA : ls_txtmsg     TYPE string.

     DATA : lv_vas_art     TYPE char04,

            lv_vas_type    TYPE /scwm/de_vas_type,

            lv_tstmp       TYPE tzntstmps,

            lv_timezone    TYPE tznzone,

            lv_quan        TYPE /scwm/de_quantity,

            lv_uom         TYPE /scwm/de_unit,

            lv_matid       TYPE /scwm/de_matid,

            lv_batch_error TYPE boole_d.

     DATA : lt_bom TYPE /scwm/tt_bom_components_vas,

            lo_log TYPE REF TO /scwm/cl_log,

            ls_bom TYPE /scwm/s_bom_components_vas.

     DATA : ls_vas_act TYPE /scwm/s_vas_act_int,

            ls_vas_itm TYPE /scwm/s_vas_itm_int.

     DATA : lt_create_whr TYPE /scwm/tt_to_prep_whr_int,

            ls_create_whr TYPE /scwm/s_to_prep_whr_int,

            lt_ltap       TYPE /scwm/tt_ltap_vb,

            ls_ltap       TYPE /scwm/ltap.

     DATA : lt_bapiret  TYPE bapirettab,

            ls_bapiret  TYPE bapiret2,

            lv_severity TYPE bapi_mtype.

     DATA : lv_tanum      TYPE  /scwm/tanum.

     DATA : ls_ordim_o    TYPE /scwm/ordim_o.

     DATA : lt_conf TYPE /scwm/to_conf_tt,

            ls_conf TYPE /scwm/to_conf.

     DATA : lo_dlv_bo_manag TYPE REF TO /scdl/cl_bo_management,

            lo_sp           TYPE REF TO /scdl/cl_sp_prd_out,

            lo_message_box  TYPE REF TO /scdl/cl_sp_message_box,

            lt_message      TYPE /scdl/dm_message_tab,

            ls_message      TYPE /scdl/dm_message_str,

            lt_k_head       TYPE  /scdl/t_sp_k_head,

            ls_k_head       TYPE /scdl/s_sp_k_head,

            lv_rejected     TYPE  boole_d,

            lt_return       TYPE /scdl/t_sp_return_code,

            ls_return       TYPE /scdl/s_sp_return_code.

     DATA:

       lt_in_stock_o  TYPE /scdl/t_sp_a_item_stock,

       lt_out_stock_o TYPE /scdl/t_sp_a_item_stock,

       ls_stock_o     TYPE /scdl/s_sp_a_item_stock,

       gv_stock_type  TYPE /scdl/dl_stock_category,

       lv_entitl      TYPE /dsrt/ewm_scc_entitled.

     DATA : lt_items      TYPE /scwm/tt_vas_item_to_post,

            lt_items_stor TYPE /scwm/tt_vas_item_to_post,

            ls_items      TYPE /scwm/s_vas_item_to_post,

            lt_kit        TYPE /scwm/tt_vas_item_to_post.

     DATA: lt_post_item     TYPE /scwm/tt_vas_post_itm,

           lt_post_item_alt TYPE /scwm/tt_vas_post_itm,

           ls_post_item     TYPE /scwm/s_vas_post_itm.

     DATA : lv_refresh TYPE xfeld,

            p_error    TYPE xfeld,

            gv_vas_err TYPE n.

     DATA : ls_read_options TYPE /scwm/dlv_query_contr_str,

            ls_include_data TYPE /scwm/dlv_query_incl_str_prd,

            ls_docno        TYPE /scwm/dlv_docno_itemno_str,

            lt_docno        TYPE /scwm/dlv_docno_itemno_tab.

     DATA : ls_inb_del TYPE /scwm/s_gr_egr,

            lt_head    TYPE /scwm/dlv_header_out_prd_tab.

     DATA : lo_prd        TYPE REF TO  /scwm/cl_dlv_management_prd.

     DATA : pt_items TYPE /scwm/dlv_item_out_prd_tab,

            ps_items TYPE /scwm/dlv_item_out_prd_str.

     DATA : lo_sp_inb TYPE REF TO /scdl/cl_sp_prd_inb.

*    DATA : lo_dlv_bo_manag  TYPE REF TO /scdl/cl_bo_management.

*    DATA : lt_k_head TYPE /scdl/t_sp_k_head,

*           ls_k_head TYPE /scdl/s_sp_k_head.

*    DATA : lv_rejected TYPE  boole_d,

*           lt_return   TYPE /scdl/t_sp_return_code,

*           ls_return   TYPE /scdl/s_sp_return_code.

     DATA : lt_in_product  TYPE /scdl/t_sp_a_item_product,

            ls_prdct       TYPE /scdl/s_sp_a_item_product,

            lt_out_product TYPE /scdl/t_sp_a_item_product.

     DATA : lv_batchno     TYPE /scdl/dl_batchno.

     DATA:

       lt_in_stock_i  TYPE /scdl/t_sp_a_item_stock,

       lt_out_stock_i TYPE /scdl/t_sp_a_item_stock,

       ls_stock_i     TYPE /scdl/s_sp_a_item_stock.

     FIELD-SYMBOLS: <ls_items>    TYPE /scwm/dlv_item_out_prd_str.

     DATA : ls_create_hu TYPE /scwm/s_to_prep_hu_int,

            lt_create_hu TYPE /scwm/tt_to_prep_hu_int.

     CONSTANTS:

       wmegc_whr_proc_pu TYPE /scwm/de_to_whr_proc VALUE '1',

       gc_multi_batch    TYPE /scwm/de_vendor_batchno VALUE 'MULTIBATCH'.

     DATA : lv_who    TYPE /scwm/de_who,

            lt_config TYPE /dsrt/ewm_t_config,

            ls_config TYPE /dsrt/ewm_config,

            lv_src_hu TYPE /scwm/ltap_vlenr.

     DATA: lv_types     TYPE char20,

           ls_lagp      TYPE /scwm/lagp,

           lv_source_id TYPE /scwm/s_pack_view_scanner-source_id,

           lt_new_hu    TYPE /scwm/tt_huident.

     DATA : lt_hutree TYPE /scwm/tt_hutree,

            lt_huhdr  TYPE /scwm/tt_huhdr_int.

     CONSTANTS : gc_id_type_hu TYPE char1 VALUE '1'.

     DATA : go_if_pack TYPE REF TO /scwm/cl_wm_packing.

     DATA: gs_workstation TYPE /scwm/tworkst,

           gs_worksttyp   TYPE /scwm/twrktyp.

     DATA: lv_id_typ_src TYPE /scwm/s_pack_view_scanner-id_type_source,

           gt_huitm      TYPE /scwm/tt_huitm_int,

           gs_huhdr      TYPE /scwm/s_huhdr_int,

           lv_id         TYPE /scwm/s_pack_view_scanner-source_id,

           pt_huident    TYPE /scwm/tt_ident_int,

           wa_huitm      TYPE /scwm/s_huitm_int.

     DATA : v_task         TYPE char20,

            v_index_do     TYPE char4,

            gt_saved_batch TYPE TABLE OF /dsrt/s_pack_view_scanner,

            gs_saved_batch TYPE /dsrt/s_pack_view_scanner.

     " End data declarations

***************************************************************************************

     break  212106.

     CLEAR : ls_ewm_wal_sc.

     LOOP AT it_ordim_c INTO ls_ordim_c WHERE tostat = 'C'.

       SELECT SINGLE *

              INTO ls_dest_hdr

              FROM /scwm/huhdr

             WHERE huident = ls_ordim_c-nlenr. " dest HU

       SELECT SINGLE *

               INTO gs_src_hdr

               FROM /scwm/huhdr

               WHERE huident = ls_ordim_c-vlenr. " source HU

       " get the data from the table /dsrt/ewm_wal_sc for the Warehouse order

       CALL FUNCTION 'CONVERSION_EXIT_ALPH0_INPUT'

         EXPORTING

           input  = ls_ordim_c-who

         IMPORTING

           output = lv_who.

       CALL FUNCTION 'CONVERSION_EXIT_HUID_OUTPUT'

         EXPORTING

           input  = ls_ordim_c-vlenr

         IMPORTING

           output = lv_src_hu.

       " get data for the source HU

       SELECT SINGLE *

              FROM /dsrt/ewm_wal_sc

              INTO ls_ewm_wal_sc

              WHERE lgnum = ls_ordim_c-lgnum

              AND   who lv_who "ls_ordim_c-who

              AND source_id  = lv_src_hu."ls_ordim_c-vlenr."source HU

       " move the data to global attribute

       gs_ewm_wal_sc = ls_ewm_wal_sc.

*****************************************************************************************

       CLEAR gs_huhdr.

       lv_types(1) = gc_id_type_hu.

       CALL FUNCTION '/SCWM/TWORKST_READ_SINGLE'

         EXPORTING

           iv_lgnum       = ls_ordim_c-lgnum "/scwm/lagp-lgnum "pa_lgnum

           iv_workstation = 'ZZCW' "/scwm/s_wrk_pack-workstation " pa_wrkst

         IMPORTING

           es_workst      = gs_workstation

           es_wrktyp      = gs_worksttyp

         EXCEPTIONS

           OTHERS         = 3.

       IF sy-subrc <> 0.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

       ENDIF.

* Set the packing reference

       IF go_if_pack IS NOT BOUND.

         CALL METHOD /scwm/cl_wm_packing=>get_instance

           IMPORTING

             eo_instance = go_if_pack.

       ENDIF.

       CALL METHOD go_if_pack->init_by_workstation

         EXPORTING

           is_workstation = gs_workstation

*         ir_huident     =

*         ir_bin         =

*         ir_dstgrp      =

*         ir_wave        =

*         is_pack_controle =

*         ir_docno       =

*         ir_route       =

*         ir_vas         =

*         ir_vas_status  =

*         ir_entitled    =

*         ir_owner       =

*         ir_matnr       =

*         iv_trtyp       =

*         iv_no_hu_by_wc =

*         iv_empty_hu    =

         CHANGING

           it_new_hu      = lt_new_hu

         EXCEPTIONS

           error          = 1

           OTHERS         = 2.

       IF sy-subrc <> 0.

*   Implement suitable error handling here

       ENDIF.

*

       CALL METHOD /scwm/cl_wm_packing=>get_all

         IMPORTING

           et_hutree = lt_hutree

           et_huhdr  = lt_huhdr

           et_huitm  = gt_huitm.

       lv_id  = ls_ordim_c-vlenr.

       CALL FUNCTION '/SCWM/WC_SCAN_SOURCE_GEN'

         EXPORTING

           iv_types   = lv_types

           iv_id      = lv_id "ls_ordim_c-vlenr "p_source_id

           iv_lgnum   = ls_ordim_c-lgnum "/scwm/lagp-lgnum

           iv_model   = go_if_pack

         IMPORTING

           ev_id      = lv_source_id

           es_huhdr   = gs_huhdr

           es_lagp    = ls_lagp

           ev_id_type = lv_id_typ_src. "/scwm/s_pack_view_scanner-id_type_source.

*      IF /scwm/s_pack_view_scanner-id_type_source IS INITIAL.

*        MESSAGE e028(/scwm/ui_packing).

*      ENDIF.

       CALL FUNCTION '/SCWM/HUHEADER_READ'

         EXPORTING

           iv_guid_hu  = gs_huhdr-guid_hu "lv_guid_hu

         IMPORTING

           es_huheader = gs_huhdr

           et_huident  = pt_huident

         EXCEPTIONS

           not_found   = 1

           input       = 2

           error       = 3

           OTHERS      = 4.

       IF sy-subrc <> 0.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

       ENDIF.

*****************************************************************************************

*       Get data from HUITM

       CALL FUNCTION '/SCWM/HUITM_READ'

         EXPORTING

           iv_guid_hu = gs_huhdr-guid_hu "ls_ordim_c-sguid_hu "guid_stock "lv_guid_hu

         IMPORTING

           et_huitm   = lt_huitm

         EXCEPTIONS

           no_item    = 1

           OTHERS     = 2.

       READ TABLE lt_huitm INTO ls_huitm INDEX 1.

       " if the HU content qty is same as the confirmed order qty the the source HU is passed to the dest.HU

*      if ls_huitm-quan = ls_ordim_c-.

*      CLEAR: lv_vlenr, lv_nlenr, lv_ilenr.

*      lv_vlenr            = ls_ordim_c-vlenr."/scwm/s_pack_view_scanner-source_id.

*      lv_nlenr            = ls_ordim_c-vlenr. "/scwm/s_pack_view_scanner-dest_hu_prop_ui.

*      lv_ilenr            = gs_int_dest_huhdr-huident.

       " else then source HU and Dest HU would be different

*      else.

       CLEAR: lv_vlenr, lv_nlenr, lv_ilenr.

       lv_vlenr            = ls_ordim_c-vlenr."/scwm/s_pack_view_scanner-source_id.

       lv_nlenr            = ls_ordim_c-nlenr. "/scwm/s_pack_view_scanner-dest_hu_prop_ui.

*      lv_ilenr            = gs_int_dest_huhdr-huident.

*      endif.

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

           input  = lv_vlenr

         IMPORTING

           output = lv_vlenr.

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

           input  = lv_nlenr

         IMPORTING

           output = lv_nlenr.

       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

         EXPORTING

           input  = lv_ilenr

         IMPORTING

           output = lv_ilenr.

       CLEAR ls_ewm_vaslst.

       SELECT SINGLE *

             FROM /dsrt/ewm_vaslst

             INTO ls_ewm_vaslst

             WHERE lgnum = ls_ordim_c-lgnum

             AND vlenr = lv_vlenr          "source HU

             AND nlenr = lv_nlenr.         " Dest HU

       IF  sy-subrc = 0.

* Get VAS Order

         CALL METHOD /scwm/cl_vas_manager=>get_vas

           EXPORTING

             iv_lgnum    = ls_ordim_c-lgnum "ls_ewm_vaslst-lgnum

             iv_vas_id   = ls_ewm_vaslst-vas_id

           IMPORTING

             es_header   = gs_vas_header

             et_activity = lt_vas_act

             er_model    = lo_vas_model

           EXCEPTIONS

             error       = 1

             OTHERS      = 2.

         IF sy-subrc <> 0.

         ELSE.

           CLEAR ls_txtmsg.

           SHIFT ls_ewm_vaslst-vas_id LEFT DELETING LEADING '0'.

           CONCATENATE ls_ewm_vaslst-vas_id 'VAS Order Created,Please contact Super user'(e25)

           INTO ls_txtmsg SEPARATED BY space.

           MESSAGE  i001(00) WITH ls_txtmsg.

           RETURN.

         ENDIF.

       ELSE.

         CLEAR ls_ewm_vaslst.

         SELECT SINGLE *

               FROM /dsrt/ewm_vaslst

               INTO ls_ewm_vaslst

         WHERE lgnum = ls_ordim_c-lgnum"/dsrt/s_pack_view_scanner-lgnum

           AND vlenr = lv_vlenr         " source HU

           AND ilenr = lv_ilenr.

         IF  sy-subrc = 0.

* Get VAS Order

           CALL METHOD /scwm/cl_vas_manager=>get_vas

             EXPORTING

               iv_lgnum    = ls_ewm_vaslst-lgnum

               iv_vas_id   = ls_ewm_vaslst-vas_id

             IMPORTING

               es_header   = gs_vas_header

               et_activity = lt_vas_act

               er_model    = lo_vas_model

             EXCEPTIONS

               error       = 1

               OTHERS      = 2.

           IF sy-subrc <> 0.

           ELSE.

             CLEAR ls_txtmsg.

             SHIFT ls_ewm_vaslst-vas_id LEFT DELETING LEADING '0'.

             CONCATENATE ls_ewm_vaslst-vas_id 'VAS Order Created,Please contact Super user'(e25)

             INTO ls_txtmsg SEPARATED BY space.

             MESSAGE  i001(00) WITH ls_txtmsg.

             RETURN.

           ENDIF.

         ENDIF.

       ENDIF.

** Check if HU already exists..

*  PERFORM check_create_desthu

* Create th VAS Order to convert the weighed item to BOM header material

* Create VAS order for weighed Qty

       CLEAR ls_vas_header.

       CALL METHOD /scwm/cl_tm=>cleanup( iv_lgnum = iv_lgnum ).

* use VAS model

       CREATE OBJECT lo_vas_model.

* Whs timezone

       CALL FUNCTION '/SCWM/LGNUM_TZONE_READ'

         EXPORTING

           iv_lgnum        = iv_lgnum "ps_pack_view-lgnum

         IMPORTING

           ev_tzone        = lv_timezone

         EXCEPTIONS

           interface_error = 1

           data_not_found  = 2

           OTHERS          = 3.

       IF sy-subrc <> 0.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

       ENDIF.

* Create start date & time

       CONVERT DATE sy-datum TIME sy-uzeit

       INTO TIME STAMP lv_tstmp TIME ZONE lv_timezone.

* Hdr

       lv_vas_art  = 'KTS'.

       lv_vas_type = 'D'.

       lv_quan     = ls_huitm-quana"ps_pack_view-sum_quantity.

       lv_uom      = ls_huitm-altme"ps_pack_view-unit.

       lv_matid    = ls_ewm_wal_sc-kts_comp_matid.

* Component

       ls_bom-productid  = ls_ewm_wal_sc-source_matid.

       ls_bom-quantity   = '1'. "ps_pack_view-sum_quantity. " IBMKBH 7 Apr 2014

       ls_bom-uom        = ls_huitm-altme."ps_pack_view-unit.

       APPEND ls_bom TO lt_bom.

* Call Create

       CALL METHOD lo_vas_model->create_vas_ktso

         EXPORTING

           iv_vas_art     = lv_vas_art

           iv_vas_type    = lv_vas_type

           iv_kit_prod    = lv_matid

           iv_quan        = lv_quan

           iv_unit        = lv_uom

           iv_warehouse   = iv_lgnum "ps_pack_view-lgnum

           iv_start       = lv_tstmp

           it_comp        = lt_bom

         IMPORTING

           es_vas_header  = ls_vas_header

           ev_batch_error = lv_batch_error

         EXCEPTIONS

           error          = 1

           OTHERS         = 2.

       IF sy-subrc <> 0.

         CLEAR ls_vas_header.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ENDIF.

       IF lv_batch_error = abap_true.

         MESSAGE i131(/scwm/vas).

       ENDIF.

* Save VAS orders

       CALL METHOD /scwm/cl_vas_manager=>save

         EXPORTING

           iv_commit = abap_false

           iv_wait   = abap_false

         EXCEPTIONS

           OTHERS    = 99.

       IF sy-subrc <> 0.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ELSE.

*        COMMIT WORK AND WAIT.

       ENDIF.

* Get VAS Order

       CALL METHOD /scwm/cl_vas_manager=>get_vas

         EXPORTING

           iv_lgnum    = iv_lgnum "ps_pack_view-lgnum

           iv_vas_id   = ls_vas_header-vas_id

*         iv_vas_guid =

*         iv_changeable =

         IMPORTING

           es_header   = ls_vas_header

           et_activity = lt_vas_act

           er_model    = lo_vas_model

         EXCEPTIONS

           error       = 1

           OTHERS      = 2.

       IF sy-subrc <> 0.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         p_error = abap_true.

         EXIT.

       ENDIF.

       gs_vas_header = ls_vas_header.

* Create & confirm WT for the generated Outb. delivery

       CALL METHOD /scwm/cl_tm=>cleanup( iv_lgnum = iv_lgnum ).

* Get ODO details

       READ TABLE lt_vas_act INTO ls_vas_act INDEX 1.

       IF sy-subrc = 0.

         READ TABLE ls_vas_act-items INTO ls_vas_itm INDEX 1.

       ENDIF.

       IF sy-subrc <> 0.

         MESSAGE e197(/dsrt/ewm_messages) WITH ls_vas_header-vas_id.

       ENDIF.

*----Begin Update Stock type Q4 for outbound delivery

       /scwm/cl_tm=>set_lgnum( iv_lgnum ).

       FREE lt_in_stock_o.

       IF  gv_stock_type IS NOT INITIAL

       AND gv_stock_type = 'Q4'.

         CLEAR ls_k_head.FREE lt_k_head.

         ls_k_head-docid = ls_vas_itm-rdocid.

         APPEND ls_k_head TO lt_k_head.

         SELECT SINGLE ecc_entitled

         FROM zdwmctycode

         INTO lv_entitl

         WHERE lgnum = iv_lgnum."ps_pack_view-lgnum.

         TRY.

             CREATE OBJECT lo_message_box.

             CREATE OBJECT lo_sp

               EXPORTING

                 io_message_box = lo_message_box

                 iv_doccat      = /scdl/if_dl_doc_c=>sc_doccat_out_prd

                 iv_mode        = /scdl/cl_sp=>sc_mode_classic.

         ENDTRY.

         CLEAR ls_stock_o.

         ls_stock_o-docid                = ls_vas_itm-rdocid.

         ls_stock_o-itemid               = ls_vas_itm-ritmid.

         ls_stock_o-stock_cat_ind        = 'M'.

         ls_stock_o-stock_category       = gv_stock_type.

         ls_stock_o-stock_owner          = lv_entitl.

         ls_stock_o-stock_owner_role     ='BP'.

         APPEND ls_stock_o TO lt_in_stock_o.

         IF  lt_in_stock_o[] IS NOT INITIAL.

* lock delivery for editing

           lo_sp->lock(

           EXPORTING inkeys       = lt_k_head

             lockmode     = /scdl/if_sp1_locking=>sc_exclusive_lock

             aspect       = /scdl/if_sp_c=>sc_asp_head

           IMPORTING rejected     = lv_rejected

             return_codes = lt_return ).

*   update inbound delivery stock category

           CLEAR lv_rejected.

           CALL METHOD lo_sp->/scdl/if_sp1_aspect~update

             EXPORTING

               aspect       = /scdl/if_sp_c=>sc_asp_item_stock

               inrecords    = lt_in_stock_o

             IMPORTING

               outrecords   = lt_out_stock_o

               rejected     = lv_rejected

               return_codes = lt_return.

* save delivery

           CALL METHOD lo_sp->before_save

             IMPORTING

               rejected = lv_rejected.

           IF lv_rejected IS INITIAL.

             CALL METHOD lo_sp->save

               EXPORTING

                 synchronously = abap_true

               IMPORTING

                 rejected      = lv_rejected.

           ENDIF.

           IF lv_rejected IS INITIAL.

             CALL METHOD lo_sp->cleanup

               EXPORTING

                 reason = /scmb/if_sp_transaction=>sc_cleanup_end.

             CALL METHOD lo_sp->end_of_queue.

             lo_dlv_bo_manag = /scdl/cl_bo_management=>get_instance( ).

             lo_dlv_bo_manag->save( ).

*            COMMIT WORK AND WAIT.

             lo_dlv_bo_manag->cleanup( ).

           ELSE.

             ROLLBACK WORK.

             MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

             EXIT.

           ENDIF.

         ENDIF.

       ENDIF.

*----End Update Stock type Q4 for outbound delivery

* Create WT for ODO

       ls_create_whr-rdoccat = ls_vas_itm-rdoccat.

       ls_create_whr-rdocid  = ls_vas_itm-rdocid.

       ls_create_whr-ritmid  = ls_vas_itm-ritmid.

* Ensure that the stock is taken from the interim HU that has

* been weighed in the previous steps

       ls_create_whr-vlenr ls_dest_hdr-huident.

       APPEND ls_create_whr TO lt_create_whr.

       CALL FUNCTION '/SCWM/TO_CREATE_WHR'

*        STARTING NEW TASK v_task

*        DESTINATION IN GROUP DEFAULT

*        CALLING result_to_create ON END OF TASK

         EXPORTING

           iv_lgnum       = iv_lgnum "ps_pack_view-lgnum

           it_create_whr  = lt_create_whr

           iv_update_task = 'X'

           iv_commit_work = ''

         IMPORTING

           ev_tanum       = lv_tanum

           et_ltap_vb     = lt_ltap

           et_bapiret     = lt_bapiret

           ev_severity    = lv_severity.

       IF lv_tanum IS INITIAL OR lv_severity CA 'EA'.

         MESSAGE e330(/scwm/rf_en).

       ELSE.

*        COMMIT WORK AND WAIT.

*        CALL METHOD /scwm/cl_tm=>cleanup( ).

*        CALL METHOD me->result_to_create.

       ENDIF.

* Read WT open items

       CALL FUNCTION '/SCWM/TO_READ_SINGLE'

         EXPORTING

           iv_lgnum     = iv_lgnum  "ps_pack_view-lgnum

           iv_tanum     = lv_tanum

           iv_flglock   = ' '

         IMPORTING

           es_ordim_o   = ls_ordim_o

         EXCEPTIONS

           wrong_input  = 1

           not_found    = 2

           foreign_lock = 3

           error        = 4

           OTHERS       = 5.

       IF sy-subrc <> 0.

         p_error = abap_true.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ENDIF.

* Confirm the WT with Catchweight & Batch

       MOVE-CORRESPONDING ls_ordim_o TO ls_conf.

       MOVE 'X' TO ls_conf-squit.

       ls_conf-cwquan = ls_huitm-cwquan."ps_pack_view-sum_cwquantity.

       ls_conf-cwunit = ls_huitm-cwunit."ps_pack_view-cwunit.

*       Check if batch already used before in this run

*      DESCRIBE TABLE gt_saved_batch LINES gv_lines.

*      IF gv_lines > 1.                                                     "chk this

*        ls_conf-dbatch = gc_multi_batch.

*      ELSE.

*

       ls_conf-dbatch = ls_ewm_wal_sc-orig_batch_ref."ps_pack_view-orig_batch_ref.

*

*      ENDIF.

       APPEND ls_conf TO lt_conf.

       CALL FUNCTION '/SCWM/TO_CONFIRM'

         EXPORTING

           iv_lgnum       = iv_lgnum "ps_pack_view-lgnum

           it_conf        = lt_conf

           iv_update_task = 'X'

           iv_commit_work = ''

         IMPORTING

           ev_severity    = lv_severity

           et_bapiret     = lt_bapiret.

       IF lv_severity CA 'EA'.

         p_error = abap_true.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ENDIF.

*      COMMIT WORK AND WAIT.

* Only continue when the TO has been confirmed ...

* otherwise the VAS Order does not have any items to POST

       DO 3 TIMES.

         SELECT SINGLE tanum INTO lv_tanum

         FROM /scwm/ordim_c

         WHERE lgnum = iv_lgnum"ps_pack_view-lgnum

         AND tanum = lv_tanum.

         IF sy-subrc = 0.

           EXIT.

         ENDIF.

*   No confirmation found, wait

         WAIT UP TO 1 SECONDS.

       ENDDO.

* Post VAS order items

       CALL METHOD /scwm/cl_tm=>cleanup( iv_lgnum = ls_vas_header-lgnum ).

       REFRESH lt_vas_act.

* Get Latest VAS Order details

       CALL METHOD /scwm/cl_vas_manager=>get_vas

         EXPORTING

           iv_lgnum    = ls_vas_header-lgnum

           iv_vas_id   = ls_vas_header-vas_id

*         iv_vas_guid =

*         iv_changeable =

         IMPORTING

           es_header   = ls_vas_header

           et_activity = lt_vas_act

           er_model    = lo_vas_model

         EXCEPTIONS

           error       = 1

           OTHERS      = 2.

       IF sy-subrc <> 0.

         gv_vas_err = 2.

*        PERFORM update_vas_process_error.                  ***********chk this*************

         CALL METHOD me->update_vas_process_error

           EXPORTING

             huident       = ls_create_whr-vlenr

             vas_id        = ls_ewm_vaslst-vas_id

             iv_lgnum      = iv_lgnum

             it_ordim_c    = it_ordim_c

             gs_vas_header = gs_vas_header

             ls_ordim_c    = ls_ordim_c

             gs_dest_huhdr = ls_dest_hdr

             gv_vas_err    = gv_vas_err.

         p_error = abap_true.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ENDIF.

* Get items to post

       LOOP AT lt_vas_act INTO ls_vas_act.

         CHECK ls_vas_act-activity-kit_act IS NOT INITIAL.

         CALL METHOD lo_vas_model->get_items_to_post

           EXPORTING

             iv_act_guid = ls_vas_act-activity-act_guid

           IMPORTING

             et_comp     = lt_items

*           et_kit      = lt_kit

*           et_comp_hu  =

*           et_kit_hu   =

           EXCEPTIONS

             error       = 1

             OTHERS      = 2.

         IF sy-subrc <> 0.

           gv_vas_err = 2.

*          PERFORM update_vas_process_error.                   ***********chk this*************

           CALL METHOD me->update_vas_process_error

             EXPORTING

               huident       = ls_create_whr-vlenr

               vas_id        = ls_ewm_vaslst-vas_id

               iv_lgnum      = iv_lgnum

               it_ordim_c    = it_ordim_c

               gs_vas_header = gs_vas_header

               ls_ordim_c    = ls_ordim_c

               gs_dest_huhdr = ls_dest_hdr

               gv_vas_err    = gv_vas_err.

           p_error = abap_true.

           MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

           EXIT.

         ENDIF.

         APPEND LINES OF lt_items TO lt_items_stor.

       ENDLOOP.

       CHECK p_error IS INITIAL.

* Gather items to post

       LOOP AT lt_items_stor INTO ls_items.

         CLEAR ls_post_item.

         ls_post_item-ritmid  = ls_items-ritmid.

         ls_post_item-rdocid  = ls_items-rdocid.

         ls_post_item-rdoccat = ls_items-rdoccat.

         ls_post_item-matid   = ls_items-matid.

         ls_post_item-batchid = ls_items-batchid.

         ls_post_item-quan    = ls_items-ui_to_postqty.

         ls_post_item-unit    = ls_items-unit.

         ls_post_item-cwquan  = ls_items-ui_to_postqty_cw.

         ls_post_item-cwunit  = ls_items-cwunit.

         ls_post_item-complete = abap_true.

         IF ls_items-av_qty > 0.

*     check if we have any avail.qty items first

           APPEND ls_post_item TO lt_post_item.

         ELSE.

           APPEND ls_post_item TO lt_post_item_alt.

         ENDIF.

       ENDLOOP.

* If no avail.qty item to post.. post other

       IF lt_post_item IS INITIAL.

         lt_post_item = lt_post_item_alt.

       ENDIF.

* Post

       CALL METHOD /scwm/cl_vas_manager=>post

         EXPORTING

           iv_vas_guid = ls_vas_header-vas_guid

           it_comp     = lt_post_item

         IMPORTING

           ev_refresh  = lv_refresh

         EXCEPTIONS

           error       = 1

           OTHERS      = 2.

       IF sy-subrc <> 0.

         gv_vas_err = 2.

*        PERFORM update_vas_process_error.                    "check this

         CALL METHOD me->update_vas_process_error

           EXPORTING

             huident       = ls_create_whr-vlenr

             vas_id        = ls_ewm_vaslst-vas_id

             iv_lgnum      = iv_lgnum

             it_ordim_c    = it_ordim_c

             gs_vas_header = gs_vas_header

             ls_ordim_c    = ls_ordim_c

             gs_dest_huhdr = ls_dest_hdr

             gv_vas_err    = gv_vas_err.

         p_error = abap_true.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ENDIF.

* save VAS order

       CALL METHOD /scwm/cl_vas_manager=>save

         EXPORTING

           iv_commit = abap_false

           iv_wait   = abap_false

         EXCEPTIONS

           OTHERS    = 99.

       IF sy-subrc <> 0.

         gv_vas_err = 2.

*        PERFORM update_vas_process_error.                    "check this

         CALL METHOD me->update_vas_process_error

           EXPORTING

             huident       = ls_create_whr-vlenr

             vas_id        = ls_ewm_vaslst-vas_id

             iv_lgnum      = iv_lgnum

             it_ordim_c    = it_ordim_c

             gs_vas_header = gs_vas_header

             ls_ordim_c    = ls_ordim_c

             gs_dest_huhdr = ls_dest_hdr

             gv_vas_err    = gv_vas_err.

         p_error = abap_true.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ELSE.

*        COMMIT WORK AND WAIT.

       ENDIF.

       CHECK p_error IS INITIAL.

* Update Inb. delivery delivery with Documentary batch

       CALL METHOD /scwm/cl_tm=>cleanup( iv_lgnum = ls_vas_header-lgnum ).

* Set whs internal

       /scwm/cl_tm=>set_lgnum( ls_vas_header-lgnum ).

* Read existing data

       ls_read_options-data_retrival_only = abap_true.

       ls_read_options-mix_in_object_instances = /scwm/if_dl_c=>sc_mix_in_load_instance.

* Read data for items

       ls_docno-docno  = ls_vas_header-rdocno.

       ls_docno-itemno = ls_vas_header-ritmno.

       ls_docno-doccat = ls_vas_header-rdoccat.

       APPEND ls_docno TO lt_docno.

       TRY.

           lo_prd = /scwm/cl_dlv_management_prd=>get_instance( ).

           lo_prd->query(

           EXPORTING it_docno        = lt_docno

             iv_doccat       = ls_vas_header-rdoccat          "/scdl/if_dl_doc_c=>sc_doccat_inb_prd

             iv_whno         = ls_vas_header-lgnum

             is_read_options = ls_read_options

           IMPORTING et_items        = pt_items ).

         CATCH /scdl/cx_delivery.                        "#EC NO_HANDLER

       ENDTRY.

* Update delivery item with Batchno

* Service provider

       TRY.

           CREATE OBJECT lo_sp_inb

             EXPORTING

               iv_doccat = /scdl/if_dl_doc_c=>sc_doccat_inb_prd

               iv_mode   = /scdl/cl_sp=>sc_mode_classic.

       ENDTRY.

       READ TABLE pt_items INTO ps_items INDEX 1.

       ls_k_head-docid = ps_items-docid.

       APPEND ls_k_head TO lt_k_head.

* lock delivery for editing

       lo_sp_inb->lock(

       EXPORTING inkeys       = lt_k_head

         lockmode             = /scdl/if_sp1_locking=>sc_exclusive_lock

         aspect               = /scdl/if_sp_c=>sc_asp_head

       IMPORTING

         rejected     = lv_rejected

         return_codes = lt_return ).

       IF lt_return[] IS NOT INITIAL.

         READ TABLE lt_return INTO ls_return

         WITH KEY failed = 'X'.

         IF sy-subrc = 0 OR

         lv_rejected IS NOT INITIAL.

           gv_vas_err = 4.

*          PERFORM update_vas_process_error.                              " check this

           CALL METHOD me->update_vas_process_error

             EXPORTING

               huident       = ls_create_whr-vlenr

               vas_id        = ls_ewm_vaslst-vas_id

               iv_lgnum      = iv_lgnum

               it_ordim_c    = it_ordim_c

               gs_vas_header = gs_vas_header

               ls_ordim_c    = ls_ordim_c

               gs_dest_huhdr = ls_dest_hdr

               gv_vas_err    = gv_vas_err.

           p_error = abap_true.

           MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

           EXIT.

         ENDIF.

       ENDIF.

*      DESCRIBE TABLE gt_saved_batch LINES gv_lines.

*      IF gv_lines > 1.

*        lv_batchno = gc_multi_batch.

*      ELSE.

*        lv_batchno = ps_pack_view-new_charg.

*      ENDIF.

* Set new Product batch no

       FREE: lt_in_stock_i.

       LOOP AT pt_items ASSIGNING  <ls_items>"INTO ls_items.

         MOVE-CORRESPONDING <ls_items> TO ls_prdct.

         MOVE-CORRESPONDING <ls_items>-product TO ls_prdct.

         ls_prdct-batchno = lv_batchno.

         IF  gv_stock_type IS NOT INITIAL

         AND gv_stock_type = 'Q4'.

           IF <ls_items>-stock-stock_category = gv_stock_type.

           ELSE.

             <ls_items>-stock-stock_cat_ind = 'M'.

             <ls_items>-stock-stock_category = gv_stock_type.

             CLEAR ls_stock_i.

             MOVE-CORRESPONDING <ls_items> TO ls_stock_i.

             MOVE-CORRESPONDING <ls_items>-stock TO ls_stock_i.

             APPEND ls_stock_i TO lt_in_stock_i.

           ENDIF.

         ENDIF.

         APPEND ls_prdct TO lt_in_product.

       ENDLOOP.

       IF  gv_stock_type IS NOT INITIAL

       AND gv_stock_type = 'Q4'

       AND  lt_in_stock_i[] IS NOT INITIAL.

*   update inbound delivery stock category

         CALL METHOD lo_sp_inb->/scdl/if_sp1_aspect~update

           EXPORTING

             aspect       = /scdl/if_sp_c=>sc_asp_item_stock

             inrecords    = lt_in_stock_i

           IMPORTING

             outrecords   = lt_out_stock_i

             rejected     = lv_rejected

             return_codes = lt_return.

       ENDIF.

*---------End IBMHRE MOD+++ 13.01.2015 INBOUND Delivery

* Update product

       CALL METHOD lo_sp_inb->/scdl/if_sp1_aspect~update

         EXPORTING

           aspect       = /scdl/if_sp_c=>sc_asp_item_product

           inrecords    = lt_in_product

         IMPORTING

           outrecords   = lt_out_product

           rejected     = lv_rejected

           return_codes = lt_return.

* save delivery

       CALL METHOD lo_sp_inb->before_save

         IMPORTING

           rejected = lv_rejected.

       IF lv_rejected IS INITIAL.

         CALL METHOD lo_sp_inb->save

           EXPORTING

             synchronously = abap_true

           IMPORTING

             rejected      = lv_rejected.

       ENDIF.

       IF lv_rejected IS INITIAL.

         CALL METHOD lo_sp_inb->cleanup

           EXPORTING

             reason = /scmb/if_sp_transaction=>sc_cleanup_end.

         CALL METHOD lo_sp_inb->end_of_queue.

         lo_dlv_bo_manag = /scdl/cl_bo_management=>get_instance( ).

         lo_dlv_bo_manag->save( ).

*        COMMIT WORK AND WAIT.

         lo_dlv_bo_manag->cleanup( ).

       ELSE.

         ROLLBACK WORK.

         gv_vas_err = 4.

*        PERFORM update_vas_process_error.                      " chk this

         CALL METHOD me->update_vas_process_error

           EXPORTING

             huident       = ls_create_whr-vlenr

             vas_id        = ls_ewm_vaslst-vas_id

             iv_lgnum      = iv_lgnum

             it_ordim_c    = it_ordim_c

             gs_vas_header = gs_vas_header

             ls_ordim_c    = ls_ordim_c

             gs_dest_huhdr = ls_dest_hdr

             gv_vas_err    = gv_vas_err.

         p_error = abap_true.

         MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

         EXIT.

       ENDIF.

       CHECK p_error IS INITIAL.

* Pack the Generated Inb. delvy material into scanned label HU

*      PERFORM pack_vas_inb_del USING /dsrt/s_pack_view_scanner

*            gs_huhdr

*            lt_items

*      CHANGING gs_lbl_dest_huhdr

*        gv_error.

* Create the WT for the Inb.del and confirm

       CALL METHOD /scwm/cl_tm=>cleanup( iv_lgnum = iv_lgnum ).

* fill TO create structure

       CLEAR ls_create_hu.

       ls_create_hu-guid_hu   = ls_dest_hdr-guid_hu"gs_lbl_dest_huhdr-guid_hu.

       ls_create_hu-procty    = ls_dest_hdr-procty.   "gs_lbl_dest_huhdr-procty.

*  ls_create_hu-squit = 'X'. (to confirm the task)

       APPEND ls_create_hu TO lt_create_hu.

*To create Warehouse order with HU warehouse Task

* without confirmation for Inbound delivery

       CALL FUNCTION '/SCWM/TO_CREATE_WHR'

         EXPORTING

           iv_lgnum       = iv_lgnum "ps_pack_view-lgnum

           iv_process     = wmegc_whr_proc_pu

           iv_mve_hu      = 'X'

           it_crea_hu     = lt_create_hu

           iv_commit_work = ' '

         IMPORTING

           ev_tanum       = lv_tanum

           et_ltap_vb     = lt_ltap

           et_bapiret     = lt_bapiret

           ev_severity    = lv_severity.

       READ TABLE lt_ltap  INTO  ls_ltap  INDEX 1.

       IF sy-subrc = 0.

         lv_tanum = ls_ltap-tanum.

       ENDIF.

       IF lv_tanum IS INITIAL OR lv_severity CA 'EA'.

*        ROLLBACK WORK.

         MESSAGE e330(/scwm/rf_en).

       ELSE.

*        COMMIT WORK AND WAIT.

         CALL METHOD /scwm/cl_tm=>cleanup( ).

       ENDIF.

       CHECK p_error IS INITIAL.

       gv_vas_err = 8.

*      PERFORM update_vas_process_error.                      " chk this

       CALL METHOD me->update_vas_process_error

         EXPORTING

           huident       = ls_create_whr-vlenr

           vas_id        = ls_ewm_vaslst-vas_id

           iv_lgnum      = iv_lgnum

           it_ordim_c    = it_ordim_c

           gs_vas_header = gs_vas_header

           ls_ordim_c    = ls_ordim_c

           gs_dest_huhdr = ls_dest_hdr

           gv_vas_err    = gv_vas_err.

       IF p_error IS INITIAL.

         CLEAR : lt_huitm,ls_ordim_c,lv_guid_hu,ls_huitm,lv_vlenr,lv_nlenr,lv_ilenr,ls_ewm_vaslst,

                 gs_vas_header,ls_vas_header,ls_dest_hdr,ls_ewm_wal_sc,lt_vas_act,lo_vas_model,

                 ls_txtmsg,lv_vas_art,lv_vas_type,lv_tstmp,lv_timezone,lv_quan,lv_uom,lv_matid,

                 lv_batch_error,lt_bom,lo_log,ls_bom,ls_vas_act,ls_vas_itm,lt_create_whr,ls_create_whr ,

                 lt_ltap,ls_ltap,lt_bapiret,ls_bapiret,lv_severity,lv_tanum,ls_ordim_o,lt_conf,ls_conf,

                 lo_dlv_bo_manag,lo_sp,lo_message_box,lt_message,ls_message,lt_k_head,ls_k_head,lv_rejected,

                 lt_return,ls_return,lt_in_stock_o,lt_out_stock_o,ls_stock_o,gv_stock_type ,lv_entitl,

                 lt_items,lt_items_stor,ls_items,lt_kit,lt_post_item,lt_post_item_alt,ls_post_item,

                 lv_refresh,p_error,gv_vas_err,ls_read_options,ls_include_data,ls_docno,lt_docno,

                 ls_inb_del,lt_head,lo_prd,pt_items,ps_items,lo_sp_inb,lt_in_product,ls_prdct,lt_out_product,

                 lt_in_stock_i,lt_out_stock_i,ls_stock_i,lv_batchno,ls_create_hu,lt_create_hu.

       ENDIF.

     ENDLOOP.

   ENDMETHOD.


This is the code. Now there are many places where I need to commit but not able to do how.

Message was edited by: Gayatri Rajani Bellala

Read only

Juwin
Active Contributor
0 Likes
4,847

Madam, I asked for complete requirements, not complete code.

Thanks

Read only

Former Member
0 Likes
4,847

Gayatri,

I do not know what this FM does but looking at the parameter interface, when you pass an 'X' to update task, I am guessing this FM will be called only after a COMMIT work. Since COMMIT inside the BADI is not allowed, did you try passing update task as SPACE?

Thanks,

Vikram.M

Read only

Former Member
0 Likes
4,847

Hi,

Mentioned BADI might be triggering after save and before commit. Already LUW is in process, so session will not allow to use commit / update task.

So for this purpose you have to check another enhancement point which is before save or after store.

Regards,

Chandra

Read only

Former Member
0 Likes
4,847

Hi

I don't think the problem is the BADI, but in which moment the BADI is called

Probably you should post the dump, but I suppose that badi is called in the saving so probably you don't need any commit and you should call the fm /SCWM/TO_CREATE_WHR with IV_UPDATE_TASK  = space

but I don't know that fm

Max

Read only

0 Likes
4,847

I Understand that I need to use a new LUW, If that is the case how should the values be called again to the parent method as basing on these values a lot of COMMITS need to happen in the further process.

Read only

0 Likes
4,847

Hi

Why do you think you need a new LUW?

Try to call the fm without the option IV_UPDATE_TASK

Read only

0 Likes
4,847

I tried but did not work

Read only

Former Member
0 Likes
4,847

Gayatri,

Commit in a BADI is going to dump anytime. Is there not another way to create WHO and TO before this BADI? When is this BADI called and why do you want to create a WHO and TO inside a BADI? Please explain the scenario.

Thanks,

Sowbhagya