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.
DATA: lv_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.