Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 1065

Re: How to commit in a implementing class of a BADI

$
0
0

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.


Viewing all articles
Browse latest Browse all 1065

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>