Dcsea Us Auto Allocation FRM 20220928
Dcsea Us Auto Allocation FRM 20220928
Dcsea Us Auto Allocation FRM 20220928
FORM checkauthority .
IF sy-subrc <> 0.
MESSAGE e008(/dcsea/us_msg) WITH s_werks-low.
ENDIF.
ENDFORM.
FORM validate_selscr_data.
ENDFORM.
FORM conv_ext_mat_grp_to_mat.
SELECT * FROM cvlc04 INTO TABLE @DATA(it_cvlc04) WHERE cntrl = 'USS1' AND
aktion = 'ZADL'.
IF it_cvlc04 IS NOT INITIAL.
DATA(s_ss) = VALUE fiwtin_t_selopt( FOR wa_cvlc04 IN it_cvlc04 ( sign = 'I'
option = 'EQ' low = wa_cvlc04-statu_new ) ).
APPEND LINES OF s_ss TO s_sdsta.
ENDIF.
ENDIF.
ENDFORM.
FORM summary_rep_fetch_data_dis.
FIELD-SYMBOLS : <fs1>.
DATA(lv_where) = cl_shdb_seltab=>combine_seltabs(
it_named_seltabs = VALUE #(
( name = 'WERKS' dref = REF #( s_werks[] ) )
( name = 'SDSTA' dref = REF #( s_sdsta[] ) )
( name = 'MMSTA' dref = REF #( s_mmsta[] ) )
( name = 'VHUSG' dref = REF #( s_vhusg[] ) )
( name = 'MATNR' dref = REF #( s_matnr[] ) )
( name = 'ZZ_ADDL_FIELD5' dref = REF #( s_my[] ) )
( name = 'ZZ_ORDER_CYCLE' dref = REF #( s_oc[] ) )
( name = 'AVAIL' dref = REF #( s_avail[] ) )
( name = 'KUNNR' dref = REF #( s_kunnr[] ) )
( name = 'ZZ_ALLOC_TYPE' dref = REF #( s_at[] ) )
( name = 'ZZ_VPCSTATUS' dref = REF #( s_vps[] ) )
( name = 'ZZ_PORT_OF_DEST' dref = REF #( s_pofd[] ) )
( name = 'ZZ_REGION' dref = REF #( s_region[] ) )
( name = 'ZZ_MARKET' dref = REF #( s_market[] ) )
) ).
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"""""""""""""""""""""""""""""""" First ALV
""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"Regional Summary
APPEND VALUE #( fieldname = 'MODEL' scrtext_l = 'Model' scrtext_m =
'Model' scrtext_s = 'Model' col_opt = 'X') TO it_fcat1.
APPEND VALUE #( fieldname = 'MODEL_YEAR' scrtext_l = 'Model Year' scrtext_m =
'Model Year' scrtext_s = 'Model Year' col_opt = 'X' ) TO it_fcat1.
SELECT * FROM /dcsea/us_regiot INTO TABLE @DATA(it_regio) WHERE spras = @sy-langu
AND werks IN @s_werks.
IF it_regio IS NOT INITIAL .
LOOP AT it_regio INTO DATA(wa_regio).
APPEND VALUE #( fieldname = wa_regio-region scrtext_l = wa_regio-vtext
scrtext_m = wa_regio-vtext scrtext_s = wa_regio-vtext col_opt = 'X' ) TO
it_fcat1.
ENDLOOP.
ENDIF.
DATA(it_regional_summary) = gt_regional_summary.
DELETE it_regional_summary WHERE indicator <> '120'.
DATA(it_rs_trim) = it_regional_summary.
SORT it_rs_trim BY modelname modelyear.
DELETE ADJACENT DUPLICATES FROM it_rs_trim COMPARING modelname modelyear.
ENDLOOP.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"""""""""""""""""""""""""""""""" Second ALV
"""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"Market Summary
APPEND VALUE #( fieldname = 'MODEL' scrtext_l = 'Model' scrtext_m =
'Model' scrtext_s = 'Model' col_opt = 'X' ) TO it_fcat2.
APPEND VALUE #( fieldname = 'MODEL_YEAR' scrtext_l = 'Model Year' scrtext_m =
'Model Year' scrtext_s = 'Model Year' col_opt = 'X' ) TO it_fcat2.
APPEND VALUE #( fieldname = 'REGION' scrtext_l = 'Region Code' scrtext_m =
'Region Code' scrtext_s = 'Region Code' col_opt = 'X' ) TO it_fcat2.
DATA(it_market_summary) = gt_market_summary.
DELETE it_market_summary WHERE indicator <> '240'.
DELETE it_market_summary WHERE region EQ ''.
DELETE it_market_summary WHERE market EQ ''.
DELETE it_market_summary WHERE modelyear EQ '0000'.
DELETE it_market_summary WHERE modelyear EQ ''.
DATA(it_ms_trim) = it_market_summary.
SORT it_ms_trim BY modelname modelyear region.
DELETE ADJACENT DUPLICATES FROM it_ms_trim COMPARING modelname modelyear region.
ENDLOOP.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"""""""""""""""""""""""""""""""" Third ALV
""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"Allocation Type Summary
APPEND VALUE #( fieldname = 'MODEL' scrtext_l = 'Model' scrtext_m =
'Model' scrtext_s = 'Model' col_opt = 'X' ) TO it_fcat3.
APPEND VALUE #( fieldname = 'MODEL_YEAR' scrtext_l = 'Model Year' scrtext_m =
'Model Year' scrtext_s = 'Model Year' col_opt = 'X' ) TO it_fcat3.
DATA(it_allocation_type) = gt_allocation_type.
DELETE it_allocation_type WHERE indicator <> '120'.
DELETE it_allocation_type WHERE alloc_type EQ ''.
DELETE it_allocation_type WHERE modelyear EQ '0000'.
DELETE it_allocation_type WHERE modelyear EQ ''.
DATA(it_at_trim) = it_allocation_type.
SORT it_at_trim BY modelname modelyear.
DELETE ADJACENT DUPLICATES FROM it_at_trim COMPARING modelname modelyear.
ENDLOOP.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"""""""""""""""""""""""""""""""" Fourth ALV
""""""""""""""""""""""""""""""""""""""""""
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""
"Market Summary
APPEND VALUE #( fieldname = 'MODEL' scrtext_l = 'Model' scrtext_m =
'Model' scrtext_s = 'Model' col_opt = 'X' ) TO it_fcat4.
APPEND VALUE #( fieldname = 'MODEL_YEAR' scrtext_l = 'Model Year' scrtext_m =
'Model Year' scrtext_s = 'Model Year' col_opt = 'X' ) TO it_fcat4.
SELECT * FROM /dcsea/us_vpcst INTO TABLE @DATA(it_vpcst) WHERE spras = @sy-langu
AND werks IN @s_werks.
IF it_vpcst IS NOT INITIAL .
SORT it_vpcst BY vpcs.
DELETE ADJACENT DUPLICATES FROM it_vpcst COMPARING vpcs.
LOOP AT it_vpcst INTO DATA(wa_vpcst).
APPEND VALUE #( fieldname = wa_vpcst-vpcs scrtext_l = wa_vpcst-vtext
scrtext_m = wa_vpcst-vtext scrtext_s = wa_vpcst-vtext col_opt = 'X' ) TO
it_fcat4.
ENDLOOP.
ENDIF.
DATA(it_port_of_destination) = gt_port_of_destination.
DELETE it_port_of_destination WHERE indicator <> '120'.
DELETE it_port_of_destination WHERE vpcs EQ ''.
DELETE it_port_of_destination WHERE modelyear EQ '0000'.
DELETE it_port_of_destination WHERE modelyear EQ ''.
DATA(it_pod_trim) = it_port_of_destination.
SORT it_pod_trim BY modelname modelyear.
DELETE ADJACENT DUPLICATES FROM it_pod_trim COMPARING modelname modelyear.
ENDLOOP.
ENDFORM.
FORM detailed_rep_fetch_data_dis.
)
).
grid->set_table_for_first_display(
EXPORTING
is_layout = VALUE #( zebra = abap_true cwidth_opt =
abap_true )
CHANGING
it_fieldcatalog = it_fcat
it_outtab = it_final
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
).
IF sy-subrc EQ 0.
CALL SCREEN 9000.
ENDIF.
ELSE.
MESSAGE 'No Data Found of given input'(008) TYPE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
tab-activetab = g_tab_appl-pressed_tab.
IF tab-activetab = 'TAB1'.
g_tab_appl-subscreen = '9002'.
ELSEIF tab-activetab = 'TAB2'.
g_tab_appl-subscreen = '9003'.
ELSEIF tab-activetab = 'TAB3'.
g_tab_appl-subscreen = '9004'.
ELSEIF tab-activetab = 'TAB4'.
g_tab_appl-subscreen = '9005'.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
CASE sy-ucomm.
WHEN 'TAB1'.
tab-activetab = 'TAB1'.
g_tab_appl-pressed_tab = 'TAB1'.
WHEN 'TAB2'.
tab-activetab = 'TAB2'.
g_tab_appl-pressed_tab = 'TAB2'.
WHEN 'TAB3'.
tab-activetab = 'TAB3'.
g_tab_appl-pressed_tab = 'TAB3'.
WHEN 'TAB4'.
tab-activetab = 'TAB4'.
g_tab_appl-pressed_tab = 'TAB4'.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'ESC' OR 'EXIT'.
LEAVE PROGRAM.
WHEN '&AUPPM'.
IF sy-ucomm = '&AUPPM'.
IF p_ars IS INITIAL.
MESSAGE 'Please check ''Allocation Relevant Status'' before
proceeding'(019) TYPE 'E'.
LEAVE TO SCREEN 0.
EXIT.
ENDIF.
ENDIF.
IF grid2 IS BOUND.
grid2->get_selected_rows( IMPORTING et_index_rows = it_rs_index ).
LOOP AT it_rs_index INTO DATA(wa_rs_index).
READ TABLE <t_dyntable1> ASSIGNING FIELD-SYMBOL(<wa_dyntable1>) INDEX
wa_rs_index-index.
IF sy-subrc EQ 0.
LOOP AT it_fcat1 INTO DATA(wa_fcat1).
IF wa_fcat1-fieldname EQ 'MODEL'.
ASSIGN COMPONENT wa_fcat1-fieldname OF STRUCTURE <wa_dyntable1> TO
FIELD-SYMBOL(<fs_m>).
IF <fs_m> IS ASSIGNED.
/dcsea/us_allocation_inf_popup-model = <fs_m> .
ENDIF.
ENDIF.
IF wa_fcat1-fieldname EQ 'MODEL_YEAR'.
ASSIGN COMPONENT wa_fcat1-fieldname OF STRUCTURE <wa_dyntable1> TO
FIELD-SYMBOL(<fs_my>).
IF <fs_my> IS ASSIGNED.
/dcsea/us_allocation_inf_popup-model_year = <fs_my> .
ENDIF.
ENDIF.
IF wa_fcat1-fieldname NE 'MODEL' AND wa_fcat1-fieldname NE
'MODEL_YEAR'.
ASSIGN COMPONENT wa_fcat1-fieldname OF STRUCTURE <wa_dyntable1> TO
FIELD-SYMBOL(<fs_vc>).
IF <fs_vc> IS ASSIGNED.
gv_vc = gv_vc + <fs_vc> .
ENDIF.
ENDIF.
ENDLOOP.
* /dcsea/us_allocation_inf_popup-no_of_vehicles = gv_vc.
* condense : /dcsea/us_allocation_inf_popup-no_of_vehicles.
*Begin of change rammane
/dcsea/us_allocation_inf_popup-vehusg = '01'.
/dcsea/us_allocation_inf_popup-reason_code = '01'.
*End of change rammane
ENDIF.
IF grid3 IS BOUND.
grid3->get_selected_rows( IMPORTING et_index_rows = it_ms_index ).
LOOP AT it_ms_index INTO DATA(wa_ms_index).
READ TABLE <t_dyntable2> ASSIGNING FIELD-SYMBOL(<wa_dyntable2>) INDEX
wa_ms_index-index.
IF sy-subrc EQ 0.
IF grid4 IS BOUND.
grid4->get_selected_rows( IMPORTING et_index_rows = it_at_index ).
LOOP AT it_at_index INTO DATA(wa_at_index).
READ TABLE <t_dyntable3> ASSIGNING FIELD-SYMBOL(<wa_dyntable3>) INDEX
wa_at_index-index.
IF sy-subrc EQ 0.
ENDIF.
IF grid5 IS BOUND.
grid5->get_selected_rows( IMPORTING et_index_rows = it_pd_index ).
LOOP AT it_pd_index INTO DATA(wa_pd_index).
READ TABLE <t_dyntable4> ASSIGNING FIELD-SYMBOL(<wa_dyntable4>) INDEX
wa_pd_index-index.
IF sy-subrc EQ 0.
CALL SCREEN 9006 STARTING AT 30 05
ENDING AT 150 18.
ENDIF.
ENDLOOP.
ENDIF.
ENDCASE.
ENDMODULE.
"Regional Summary
MODULE status_9002 OUTPUT.
grid2->set_table_for_first_display(
EXPORTING
is_layout = VALUE #( zebra = abap_true cwidth_opt =
abap_true sel_mode = 'A' )
CHANGING
it_fieldcatalog = it_fcat1
it_outtab = <t_dyntable1>
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
).
ELSE.
CALL METHOD grid2->refresh_table_display.
ENDIF.
ENDMODULE.
"Market Summary
MODULE status_9003 OUTPUT.
ENDMODULE.
ELSE.
CALL METHOD grid4->refresh_table_display.
ENDIF.
ENDMODULE.
ELSE.
CALL METHOD grid5->refresh_table_display.
ENDIF.
ENDMODULE.
MODULE status_9006 OUTPUT.
SET PF-STATUS 'POPUP'.
IF sy-ucomm = 'ABORT' OR sy-ucomm = 'ABOORT'.
CLEAR : /dcsea/us_allocation_inf_popup.
LEAVE TO SCREEN 0.
SET SCREEN 9005.
sy-ucomm = 'ABORT'.
ENDIF.
LOOP AT SCREEN .
IF screen-name = 'R1' OR
screen-name = 'R2' OR
screen-name = 'R3'.
screen-invisible = 1.
MODIFY SCREEN .
ENDIF.
ENDLOOP.
ENDMODULE.
CASE sy-ucomm.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
LEAVE PROGRAM.
WHEN 'GVC'.
REFRESH : lt_error_log.
IF /dcsea/us_allocation_inf_popup-kunnr IS INITIAL.
wa_error_log-msgid = 'E4'.
wa_error_log-msgty = 'E'.
wa_error_log-msgv1 = 'Enter From Home Office Dealer Code'.
wa_error_log-lineno = wa_error_log-lineno + 1.
APPEND wa_error_log TO lt_error_log.
ENDIF.
IF lv_my = /dcsea/us_allocation_inf_popup-model_year.
DATA(lv_matnrc) = wa_mara-matnr.
ENDIF.
ENDLOOP.
ENDIF.
REFRESH : it_marac.
DATA(lv_where_aic) = cl_shdb_seltab=>combine_seltabs(
it_named_seltabs = VALUE #(
( name = 'WERKS' dref = REF #( s_werks[] ) )
( name = 'SDSTA' dref = REF #( s_sdsta[] ) )
( name = 'MMSTA' dref = REF #( s_mmsta[] ) )
( name = 'VHUSG' dref = REF #( s_vhusg[] ) )
( name = 'MATNR' dref = REF #( it_matnrc[] ) )
( name = 'ZZ_ADDL_FIELD5' dref = REF #( it_myc[] ) )
( name = 'ZZ_ORDER_CYCLE' dref = REF #( s_oc[] ) )
( name = 'AVAIL' dref = REF #( s_avail[] ) )
( name = 'KUNNR' dref = REF #( it_kunnrc[] ) )
( name = 'ZZ_ALLOC_TYPE' dref = REF #( s_at[] ) )
( name = 'ZZ_VPCSTATUS' dref = REF #( s_vps[] ) )
( name = 'ZZ_PORT_OF_DEST' dref = REF #( s_pofd[] ) )
( name = 'ZZ_REGION' dref = REF #( s_region[] ) )
( name = 'ZZ_MARKET' dref = REF #( s_market[] ) )
) ).
/dcsea/us_allocation_inf_popup-no_of_vehicles = lv_rowcnt.
CONDENSE : /dcsea/us_allocation_inf_popup-no_of_vehicles.
WHEN 'ENTER'.
REFRESH : lt_error_log.
IF /dcsea/us_allocation_inf_popup-model IS INITIAL.
wa_error_log-msgid = 'E4'.
wa_error_log-msgty = 'E'.
wa_error_log-msgv1 = 'Enter Vehicle Model'.
wa_error_log-lineno = 1.
APPEND wa_error_log TO lt_error_log.
ENDIF.
IF /dcsea/us_allocation_inf_popup-model_year IS INITIAL.
wa_error_log-msgid = 'E4'.
wa_error_log-msgty = 'E'.
wa_error_log-msgv1 = 'Enter Vehicle Model Year'.
wa_error_log-lineno = wa_error_log-lineno + 1.
APPEND wa_error_log TO lt_error_log.
ENDIF.
IF /dcsea/us_allocation_inf_popup-kunnr IS INITIAL.
wa_error_log-msgid = 'E4'.
wa_error_log-msgty = 'E'.
wa_error_log-msgv1 = 'Enter From Home Office Dealer Code'.
wa_error_log-lineno = wa_error_log-lineno + 1.
APPEND wa_error_log TO lt_error_log.
ENDIF.
IF /dcsea/us_allocation_inf_popup-allocation_to IS INITIAL.
wa_error_log-msgid = 'E4'.
wa_error_log-msgty = 'E'.
wa_error_log-msgv1 = 'Enter Allocation To'.
wa_error_log-lineno = wa_error_log-lineno + 1.
APPEND wa_error_log TO lt_error_log.
ENDIF.
IF /dcsea/us_allocation_inf_popup-allocation_to = '1'.
IF /dcsea/us_allocation_inf_popup-vehusg IS INITIAL.
wa_error_log-msgid = 'E4'.
wa_error_log-msgty = 'E'.
wa_error_log-msgv1 = 'Enter To region Inventory Type'.
wa_error_log-lineno = wa_error_log-lineno + 1.
APPEND wa_error_log TO lt_error_log.
ENDIF.
ENDIF.
IF /dcsea/us_allocation_inf_popup-no_of_vehicles IS INITIAL.
wa_error_log-msgty = 'E'.
wa_error_log-msgv1 = 'Enter Number Of vehicles to be Allocated'.
wa_error_log-lineno = wa_error_log-lineno + 1.
APPEND wa_error_log TO lt_error_log.
ENDIF.
IF lv_my = /dcsea/us_allocation_inf_popup-model_year.
DATA(lv_matnr) = wa_mara-matnr.
ENDIF.
ENDLOOP.
ENDIF.
REFRESH : it_mara.
DATA(lv_where_ai) = cl_shdb_seltab=>combine_seltabs(
it_named_seltabs = VALUE #(
( name = 'WERKS' dref = REF #( s_werks[] ) )
( name = 'SDSTA' dref = REF #( s_sdsta[] ) )
( name = 'MMSTA' dref = REF #( s_mmsta[] ) )
( name = 'VHUSG' dref = REF #( s_vhusg[] ) )
( name = 'MATNR' dref = REF #( it_matnr[] ) )
( name = 'ZZ_ADDL_FIELD5' dref = REF #( it_my[] ) )
( name = 'ZZ_ORDER_CYCLE' dref = REF #( s_oc[] ) )
( name = 'AVAIL' dref = REF #( s_avail[] ) )
( name = 'KUNNR' dref = REF #( it_kunnr[] ) )
( name = 'ZZ_ALLOC_TYPE' dref = REF #( s_at[] ) )
( name = 'ZZ_VPCSTATUS' dref = REF #( s_vps[] ) )
( name = 'ZZ_PORT_OF_DEST' dref = REF #( s_pofd[] ) )
( name = 'ZZ_REGION' dref = REF #( s_region[] ) )
( name = 'ZZ_MARKET' dref = REF #( s_market[] ) )
) ).
IF lt_error_log IS INITIAL.
REFRESH : it_matnr,it_my,it_kunnr.
CLEAR : lv_where_ai.
lv_where_ai = cl_shdb_seltab=>combine_seltabs(
it_named_seltabs = VALUE #(
( name = 'WERKS' dref = REF #( s_werks[] ) )
( name = 'SDSTA' dref = REF #( s_sdsta[] ) )
( name = 'MMSTA' dref = REF #( s_mmsta[] ) )
( name = 'VHUSG' dref = REF #( s_vhusg[] ) )
( name = 'MATNR' dref = REF #( it_matnr[] ) )
( name = 'ZZ_ADDL_FIELD5' dref = REF #( it_my[] ) )
( name = 'ZZ_ORDER_CYCLE' dref = REF #( s_oc[] ) )
( name = 'AVAIL' dref = REF #( s_avail[] ) )
( name = 'KUNNR' dref = REF #( it_kunnr[] ) )
( name = 'ZZ_ALLOC_TYPE' dref = REF #( s_at[] ) )
( name = 'ZZ_VPCSTATUS' dref = REF #( s_vps[] ) )
( name = 'ZZ_PORT_OF_DEST' dref = REF #( s_pofd[] ) )
( name = 'ZZ_REGION' dref = REF #( s_region[] ) )
( name = 'ZZ_MARKET' dref = REF #( s_market[] ) )
) ).
DATA(lv_where_calqty) = cl_shdb_seltab=>combine_seltabs(
it_named_seltabs = VALUE #(
( name = 'WERKS' dref = REF #( s_werks[] ) )
( name = 'MODEL' dref = REF #( it_matnr[] ) )
( name = 'MODEL_YEAR' dref = REF #( it_my[] ) )
) ).
REFRESH : et_vlcvehicle,et_tim_calqty,et_calqty_values,et_dealer_vpcs.
lv_no_of_veh = /dcsea/us_allocation_inf_popup-no_of_vehicles.
BREAK mmaddil.
REFRESH : it_popupalv1,it_popupalv2,it_popupalv3.
DATA : it_configuration TYPE TABLE OF conf_out.
*Begin of change market (03) for the region
IF /dcsea/us_allocation_inf_popup-allocation_to = '1'. " REGION
DATA(lt_output_mkt) = et_output[].
SORT lt_output_mkt BY werks model_year region market.
DELETE ADJACENT DUPLICATES FROM lt_output_mkt COMPARING werks model_year
region market.
ENDIF.
ENDIF.
IF /dcsea/us_allocation_inf_popup-allocation_to = '1'.
DELETE et_output WHERE region_total_cars = '0'.
SORT et_output BY region.
DELETE ADJACENT DUPLICATES FROM et_output COMPARING region.
ELSEIF /dcsea/us_allocation_inf_popup-allocation_to = '2'.
DELETE et_output WHERE dealer_total_cars = '0'.
* delete et_output WHERE port_of_dest is INITIAL.
* delete adjacent duplicates from et_output comparing market dealer.
ENDIF.
TYPES:BEGIN OF ty_vechtemp.
INCLUDE STRUCTURE vlcvehicle.
TYPES:region TYPE char15,
case TYPE char1,
count TYPE int2,
flag TYPE char1,
dealer TYPE /dcsea/us_dealerno,
END OF ty_vechtemp,
tt_vechtemp TYPE STANDARD TABLE OF ty_vechtemp.
* CASE /dcsea/us_allocation_inf_popup-allocation_to.
* WHEN '1'.
* lv_spart = '01'.
* WHEN '2'.
* lv_spart = '02'.
* ENDCASE.
CASE /dcsea/us_allocation_inf_popup-allocation_to.
WHEN '1'.
lv_spart = 'RH'.
WHEN '2'.
lv_spart = '01'.
ENDCASE.
ENDIF.
ENDIF.
* Reduce ompleately allocated vehicles for perform next step
* Region input check
IF ( ( ( lv_count1 = lv_mkt_totcars OR <lw_mkt1>-
market_total_cars EQ 0 ) ) AND
( /dcsea/us_allocation_inf_popup-allocation_to =
'1' ) ).
IF <lw_locregion>-region_total_cars IS ASSIGNED.
IF <lw_locregion>-region_total_cars EQ 0.
DELETE lt_output_temp INDEX lv_index2.
ENDIF.
ENDIF.
IF <lw_mkt1>-market_total_cars EQ 0 .
DELETE lt_output_mkt INDEX lv_index3.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR:lv_count1,lv_mkt_totcars,lv_reg_totcars.
ENDLOOP.
*****End of chagne for VRM5584 Market level
Allocation***************************************************
ELSE. " No Market scenario ..there will be no market under region to
assign
LOOP AT lt_vechtemp ASSIGNING FIELD-SYMBOL(<lw_locvechtemp>) WHERE
flag IS INITIAL.
IF lv_count1 NE lv_reg_totcars.
lv_count1 = lv_count1 + 1.
CONDENSE:lv_count1.
<lw_locvechtemp>-flag = 'X'.
<lw_locvechtemp>-case = 'L'. " Local Scenario/Domestic veicle
case
<lw_locvechtemp>-region = <lw_locregion>-region.
<lw_locvechtemp>-count = lv_count1.
<lw_locvechtemp>-dealer = <lw_locregion>-dealer.
<lw_locvechtemp>-zz_market = <lw_locregion>-market.
lv_total_allocated = lv_total_allocated + 1.
* Reduce the count after allocation
<lw_locregion>-region_total_cars = <lw_locregion>-
region_total_cars - 1.
<lw_locregion>-dealer_total_cars = <lw_locregion>-
dealer_total_cars - 1.
CONDENSE: <lw_locregion>-region_total_cars,
<lw_locregion>-dealer_total_cars.
ENDIF.
* Reduce ompleately allocated vehicles for perform next step
* Region input check
IF ( ( ( lv_count1 EQ lv_reg_totcars ) OR ( <lw_locregion>-
region_total_cars EQ 0 ) ) AND
( /dcsea/us_allocation_inf_popup-allocation_to = '1' ) ).
DELETE lt_output_temp INDEX lv_index2.
EXIT.
ENDIF.
* Dealer input check
IF ( ( ( lv_count1 EQ lv_reg_totcars ) OR ( <lw_locregion>-
dealer_total_cars EQ 0 ) ) AND
( /dcsea/us_allocation_inf_popup-allocation_to = '2' ) ).
DELETE lt_output_temp WHERE dealer = <lw_locregion>-dealer.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR:lv_reg_totcars,lv_count1.
ENDLOOP.
ENDIF.
*************************************************************************
********************************************************
*** Assignment of A and B Scenarios
*A. Where vehicles port of destination can�t be changed*
********************************************************
werks = <lw_vechtemp2>-werks.
IF sy-subrc = 0.
READ TABLE lt_cvlc04 INTO DATA(lw_cvlc04m) WITH KEY cntrl =
lw_vlcfindcntr2-mmcntrl
statu_old =
<lw_vechtemp2>-mmsta.
IF sy-subrc NE 0 AND <lw_mkt2>-port_of_dest = <lw_vechtemp2>-
zz_port_of_dest. "A case
IF lv_count1 NE lv_mkt_totcars.
lv_count1 = lv_count1 + 1.
CONDENSE:lv_count1.
<lw_vechtemp2>-flag = 'X'.
<lw_vechtemp2>-case = 'A'. " Scenarion A
<lw_vechtemp2>-region = <lw_region>-region.
<lw_vechtemp2>-count = lv_count1.
<lw_vechtemp2>-dealer = <lw_mkt2>-dealer.
<lw_vechtemp2>-zz_market = <lw_mkt2>-market.
lv_total_allocated = lv_total_allocated + 1.
* Reduce the count after allocation
<lw_region>-region_total_cars = <lw_region>-
region_total_cars - 1.
<lw_region>-dealer_total_cars = <lw_region>-
dealer_total_cars - 1.
<lw_mkt2>-market_total_cars = <lw_mkt2>-market_total_cars
- 1.
CONDENSE: <lw_region>-region_total_cars,
<lw_region>-dealer_total_cars,
<lw_mkt2>-market_total_cars.
ENDIF.
* Reduce ompleately allocated vehicles for perform next step
* Region input check
IF ( ( ( lv_count1 = lv_mkt_totcars OR <lw_mkt2>-
market_total_cars EQ 0 ) ) AND
( /dcsea/us_allocation_inf_popup-allocation_to = '1'
) ).
IF <lw_region>-region_total_cars EQ 0.
DELETE lt_output_temp INDEX lv_index1.
ENDIF.
IF <lw_mkt2>-market_total_cars EQ 0.
DELETE lt_output_mkt INDEX lv_index3.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR:lv_reg_totcars,lv_count1,lv_mkt_totcars.
ENDLOOP.
*****End of chagne for VRM5584 Market level
Allocation***************************************************
ELSE.
LOOP AT lt_vechtemp ASSIGNING FIELD-SYMBOL(<lw_vechtemp>) WHERE flag
IS INITIAL.
READ TABLE lt_vlcfindcntrl INTO DATA(lw_vlcfindcntrl) WITH KEY
matnr = <lw_vechtemp>-matnr
werks = <lw_vechtemp>-werks.
IF sy-subrc = 0.
READ TABLE lt_cvlc04 INTO DATA(lw_cvlc04) WITH KEY cntrl =
lw_vlcfindcntrl-mmcntrl
statu_old =
<lw_vechtemp>-mmsta.
IF sy-subrc NE 0 AND <lw_region>-port_of_dest = <lw_vechtemp>-
zz_port_of_dest. "A case
IF lv_count1 NE lv_reg_totcars.
lv_count1 = lv_count1 + 1.
CONDENSE:lv_count1.
<lw_vechtemp>-flag = 'X'.
<lw_vechtemp>-case = 'A'. " Scenarion A
<lw_vechtemp>-region = <lw_region>-region.
<lw_vechtemp>-count = lv_count1.
<lw_vechtemp>-dealer = <lw_region>-dealer.
<lw_vechtemp>-zz_market = <lw_region>-market.
lv_total_allocated = lv_total_allocated + 1.
* Reduce the count after allocation
<lw_region>-region_total_cars = <lw_region>-region_total_cars
- 1.
<lw_region>-dealer_total_cars = <lw_region>-dealer_total_cars
- 1.
CONDENSE: <lw_region>-region_total_cars,
<lw_region>-dealer_total_cars.
ENDIF.
* Reduce ompleately allocated vehicles for perform next step
* Region input check
IF ( ( ( lv_count1 EQ lv_reg_totcars ) OR ( <lw_region>-
region_total_cars EQ 0 ) ) AND
( /dcsea/us_allocation_inf_popup-allocation_to = '1' )
).
DELETE lt_output_temp INDEX lv_index1.
EXIT.
ENDIF.
* Dealer input check
IF ( ( ( lv_count1 EQ lv_reg_totcars ) OR ( <lw_region>-
dealer_total_cars EQ 0 ) ) AND
( /dcsea/us_allocation_inf_popup-allocation_to = '2' )
).
DELETE lt_output_temp WHERE dealer = <lw_region>-dealer.
EXIT.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR:lv_reg_totcars,lv_count1.
* UNASSIGN <lw_region>.
ENDLOOP.
* ***************************************************************
* Assignment of B Scenarios
*Where vehicles port of destination (VLCVEHICLE-ZZ_PORT_OF_DEST)*
* is matching with customers Port of destination******
****************************************************************
*b. Where vehicles port of destination (VLCVEHICLE-ZZ_PORT_OF_DEST) is matching
with customers Port of destination
LOOP AT lt_output_temp ASSIGNING <lw_region>. ""
lv_index1 = sy-tabix. ""
lv_reg_totcars = <lw_region>-region_total_cars. ""
*****Begin of chagne for VRM5584 Market level
Allocation***************************************************
READ TABLE lt_output_mkt INTO lw_mkt WITH KEY region = <lw_region>-
region.
IF sy-subrc = 0 AND /dcsea/us_allocation_inf_popup-allocation_to = '1'.
" Makrket level distibution
LOOP AT lt_output_mkt ASSIGNING FIELD-SYMBOL(<lw_mkt3>) WHERE region
= <lw_region>-region.
lv_index3 = sy-tabix.
lv_mkt_totcars = <lw_mkt3>-market_total_cars.
LOOP AT lt_vechtemp ASSIGNING <lw_vechtemp> WHERE flag IS INITIAL
AND zz_port_of_dest = <lw_mkt3>-
port_of_dest. " B Case
IF lv_count1 NE lv_mkt_totcars.
lv_count1 = lv_count1 + 1.
CONDENSE:lv_count1.
<lw_vechtemp>-count = lv_count1.
<lw_vechtemp>-flag = 'X'.
<lw_vechtemp>-case = 'B'. " Scenarion B
<lw_vechtemp>-region = <lw_region>-region.
<lw_vechtemp>-dealer = <lw_mkt3>-dealer.
<lw_vechtemp>-zz_market = <lw_mkt3>-market.
IF lv_count1 = lv_lines OR
lv_total_allocated EQ lv_no_of_veh OR
lt_output_temp[] IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ELSEIF /dcsea/us_allocation_inf_popup-allocation_to = '2'. " Dealer
DO lv_lines TIMES.
LOOP AT lt_output_temp ASSIGNING <lw_region>.
lv_index1 = sy-tabix.
* Possibility to assign multiple vehicles based up on the dealer total cars
DO <lw_region>-dealer_total_cars TIMES.
READ TABLE lt_vechtemp ASSIGNING <lw_vechtemp> WITH KEY flag =
space .
IF sy-subrc = 0.
READ TABLE lt_vlcfindcntrl INTO lw_vlcfindcntrl WITH KEY matnr
= <lw_vechtemp>-matnr
werks
= <lw_vechtemp>-werks. " C Case
IF sy-subrc = 0.
READ TABLE lt_cvlc04 INTO lw_cvlc04 WITH KEY cntrl =
lw_vlcfindcntrl-mmcntrl
statu_old =
<lw_vechtemp>-mmsta.
IF sy-subrc = 0.
<lw_vechtemp>-case = 'C'. " Scenarion C
<lw_vechtemp>-flag = 'X'.
<lw_vechtemp>-region = <lw_region>-region.
<lw_vechtemp>-dealer = <lw_region>-dealer.
<lw_vechtemp>-zz_market = <lw_region>-market.
lv_count1 = lv_count1 + 1.
CONDENSE:lv_count1.
<lw_vechtemp>-count = lv_count1.
* Reduce the count after allocation
<lw_region>-region_total_cars = <lw_region>-
region_total_cars - 1.
<lw_region>-dealer_total_cars = <lw_region>-
dealer_total_cars - 1.
lv_total_allocated = lv_total_allocated + 1.
CONDENSE:<lw_region>-region_total_cars,
lv_total_allocated,<lw_region>-dealer_total_cars.
* * Reduce compleately allocated vehicles
* Dealer Count
IF <lw_region>-dealer_total_cars EQ 0 AND
/dcsea/us_allocation_inf_popup-allocation_to = '2'.
DELETE lt_output_temp INDEX lv_index1.
EXIT.
ENDIF.
ELSE.
<lw_vechtemp>-flag = 'F'. " Failed to assign
ENDIF.
ENDIF.
ELSE.
EXIT. " NO vehicle to allocate
ENDIF.
ENDDO.
ENDLOOP.
IF lv_count1 = lv_lines OR
lv_total_allocated EQ lv_no_of_veh OR
lt_output_temp[] IS INITIAL.
EXIT.
ENDIF.
ENDDO.
ENDIF.
ENDIF.
CLEAR:lv_count1,gv_rcount,
lv_lines, lv_index1.
* CLEAR:lv_total_allocated.
****Begin of un assigned vehicles Region ,Dealre and Market ****************
CONDENSE lv_total_allocated.
CLEAR:lv_count1,lv_reg_totcars.
IF lv_total_allocated < lv_no_of_veh.
lv_lines = lv_no_of_veh - lv_total_allocated.
ENDIF.
CLEAR:lv_mktflag.
DATA(lt_vechtemp_un) = lt_vechtemp[].
DO lv_lines TIMES.
LOOP AT lt_output_temp ASSIGNING <lw_region>.
lv_index1 = sy-index.
IF /dcsea/us_allocation_inf_popup-allocation_to = '1'. " Region
Scenarion
READ TABLE lt_output_mkt ASSIGNING FIELD-SYMBOL(<lw_mkt9>) WITH KEY
region = <lw_region>-region.
IF sy-subrc = 0 AND <lw_mkt9> IS ASSIGNED.
lv_mktflag = 'X'.
<lw_mkt9>-market_total_cars = <lw_mkt9>-market_total_cars - 1.
ENDIF.
ENDIF.
READ TABLE lt_vechtemp_un ASSIGNING <lw_vechtemp> WITH KEY flag = 'F'.
IF <lw_vechtemp> IS ASSIGNED.
<lw_region>-region_total_cars = <lw_region>-region_total_cars - 1.
<lw_region>-dealer_total_cars = <lw_region>-dealer_total_cars - 1.
<lw_vechtemp>-flag = 'M'. " Mapped Dealer ,Markter and Region
lv_count1 = lv_count1 + 1.
CONDENSE:lv_count1.
<lw_vechtemp>-count = lv_count1.
lv_total_allocated = lv_total_allocated + 1.
CONDENSE:<lw_region>-region_total_cars,<lw_region>-dealer_total_cars,
lv_total_allocated,lv_count1.
ENDIF.
<lw_vechtemp>-region = <lw_region>-region.
IF lv_mktflag IS INITIAL .
<lw_vechtemp>-dealer = <lw_region>-dealer.
<lw_vechtemp>-zz_market = <lw_region>-market.
ELSE.
IF <lw_mkt9> IS ASSIGNED .
<lw_vechtemp>-dealer = <lw_mkt9>-dealer.
<lw_vechtemp>-zz_market = <lw_mkt9>-market.
ENDIF.
ENDIF.
IF <lw_region>-region_total_cars EQ 0 AND
/dcsea/us_allocation_inf_popup-allocation_to = '1'.
DELETE lt_output_temp INDEX lv_index1.
ENDIF.
IF /dcsea/us_allocation_inf_popup-allocation_to = '1'.
IF <lw_mkt9>-market_total_cars IS ASSIGNED.
IF <lw_mkt9>-market_total_cars EQ 0.
DELETE lt_output_mkt WHERE region = <lw_mkt9>-region
AND market = <lw_mkt9>-market.
ENDIF.
ENDIF.
ENDIF.
IF <lw_region>-dealer_total_cars EQ 0 AND
/dcsea/us_allocation_inf_popup-allocation_to = '2'.
DELETE lt_output_temp INDEX lv_index1.
ENDIF.
CLEAR:lv_mktflag.
ENDLOOP.
IF lv_count1 = lv_lines OR
lv_total_allocated EQ lv_no_of_veh OR
lt_output_temp[] IS INITIAL.
EXIT.
ENDIF.
ENDDO.
****End of un assigned vehicles Region ,Dealre and Market ****************
DATA(lt_vechtemp1) = lt_vechtemp[].
wa_popupalv-case = lw_vechtemp-case.
IF lw_vechtemp-flag = 'X'.
IF lw_vechtemp-case = 'A' OR lw_vechtemp-case = 'B'.
MOVE-CORRESPONDING wa_vlcvehicle TO wa_r1_data.
APPEND wa_r1_data TO it_r1_data.
ELSEIF lw_vechtemp-case = 'C'.
MOVE-CORRESPONDING wa_vlcvehicle TO wa_r2_data.
wa_r2_data-zz_port_of_dest = wa_popupalv-port_of_dest.
APPEND wa_r2_data TO it_r2_data.
ELSEIF lw_vechtemp-case = 'L'. " Local Vehicles
* Domestic vehicles target and source VPC same
wa_popupalv-target_vpc = wa_vlcvehicle-zz_vpcstatus.
MOVE-CORRESPONDING wa_vlcvehicle TO wa_r1_data.
APPEND wa_r1_data TO it_r1_data.
ENDIF.
ENDIF.
CLEAR : wa_r1_data,wa_popupalv,
wa_r2_data,lw_vpcs1,lw_output,
wa_vlcvehicle,lw_dealer.
REFRESH : it_configuration.
CLEAR:lv_flag,lw_vechtemp.
ENDLOOP.
REFRESH:lt_zais_alty[],lt_dealer[],
lt_vechtemp1[],lt_mkttemp[],
lt_output_mkt[],lt_vechtemp_un[].
ENDIF.
ENDCASE.
ENDMODULE.
REFRESH : it_popupalv.
* set titlebar 'TITLEA'.
APPEND LINES OF it_popupalv1 TO it_popupalv.
REFRESH:lt_fcode[].
APPEND 'CONTINUE' TO lt_fcode.
APPEND 'ABORT' TO lt_fcode.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = 'POPUPALV'
p_program = co_prog_name
TABLES
p_exclude = lt_fcode.
REFRESH:lt_fieldcat[].
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = co_sname
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDLOOP.
ENDMODULE.
MODULE user_command_9007 INPUT.
CASE sy-ucomm.
WHEN 'ABORT' OR 'CANCEL'.
CLEAR:lv_reg_from,lv_reg_to. " RAMMANE
LEAVE TO SCREEN 0.
LEAVE TO LIST-PROCESSING.
CLEAR:gv_pf.
WHEN 'CONTINUE'.
CLEAR:gv_pf.
DELETE gt_output_temp WHERE region_total_cars = '0'.
SORT gt_output_temp BY region.
DELETE ADJACENT DUPLICATES FROM gt_output_temp COMPARING region.
CASE /dcsea/us_allocation_inf_popup-allocation_to.
WHEN '1'.
lv_spart = 'RH'.
WHEN '2'.
lv_spart = '01'.
ENDCASE.
IF gv_local IS NOT INITIAL." Domestic vehicle found
REFRESH :it_r2_data[].
ENDIF.
*Submit batch if the records are more than 50 to perform action
IF gv_rcount GT 50.
lv_werks = s_werks-low.
EXPORT et_vlcvehicle TO DATABASE indx(zk) ID 'VEC'.
EXPORT it_popupalv TO DATABASE indx(zl) ID 'OUTPUT'.
EXPORT it_r1_data TO DATABASE indx(zm) ID 'R1'.
EXPORT it_r2_data TO DATABASE indx(zn) ID 'R2'.
EXPORT /dcsea/us_allocation_inf_popup TO DATABASE indx(zp) ID 'POP'.
EXPORT lv_werks TO DATABASE indx(zo) ID 'WRK'.
WAIT UP TO 5 SECONDS .
CONCATENATE sy-datlo sy-timlo+0(4) INTO lv_timestamp.
CONDENSE lv_timestamp. .
** create a job
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = lv_jobname
IMPORTING
jobcount = lv_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE e121(smi_general)."Error creating job
EXIT.
ENDIF.
*
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
authcknam = sy-uname
jobcount = lv_jobcount
jobname = lv_jobname
report = co_bg_program
variant = lv_variant
EXCEPTIONS
bad_priparams = 1
bad_xpgflags = 2
invalid_jobdata = 3
jobname_missing = 4
job_notex = 5
job_submit_failed = 6
lock_failed = 7
program_missing = 8
prog_abap_and_extpg_set = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE e122(smi_general)."Error on job submission
ENDIF.
*
**lv_repetition_minutes = fdelay. "re-run every fdelay minutes
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = lv_jobcount
jobname = lv_jobname
prdmins = lv_repetition_minutes
strtimmed = lv_immediate
targetserver = lv_servername
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
OTHERS = 9.
IF sy-subrc <> 0.
MESSAGE e123(smi_general)."Error closing job
ENDIF.
IF sy-subrc = 0.
MESSAGE s601(/dcsea/us_msg) WITH lv_jobname."success message
* DELETE FROM DATABASE indx(zk) ID 'VEC'.
* DELETE FROM DATABASE indx(zl) ID 'OUTPUT'.
* DELETE FROM DATABASE indx(zm) ID 'R1'.
* DELETE FROM DATABASE indx(zn) ID 'R2'.
* DELETE FROM DATABASE indx(zp) ID 'POP'.
* DELETE FROM DATABASE indx(zo) ID 'WRK'.
SET SCREEN 9006.
sy-ucomm = 'ABORT'.
ENDIF.
CLEAR:lv_timestamp ,lv_jobname,lv_jobcount.
ELSE.
************************************************************
ls_vlcdiavehi-zz_uname = sy-uname."RAMMANE
APPEND ls_vlcdiavehi TO lt_vlcdiavehi.
CLEAR : ls_vlcdiavehi.
CLEAR: ls_vlcactdata-ernam.
"Dequeue vehicle
CALL FUNCTION 'VELO09_VEHICLE_DEQUEUE'
TABLES
vlcdiavehi_it = lt_vlcdiavehi[].
ls_vlcactdata-zz_vehusg = /dcsea/us_allocation_inf_popup-
vehusg.
* ls_vlcactdata-zz_alloc_type = lv_spart.
ls_vlcactdata-zz_reason_code = /dcsea/us_allocation_inf_popup-
reason_code.
ls_vlcactdata-zz_uname = sy-uname.
CLEAR: ls_vlcactdata-ernam.
"Dequeue vehicle
CALL FUNCTION 'VELO09_VEHICLE_DEQUEUE'
TABLES
vlcdiavehi_it = lt_vlcdiavehi[].
READ TABLE lt_messages INTO wa_messages WITH KEY msgty = 'E'.
IF sy-subrc NE 0 .
READ TABLE it_popupalv1 ASSIGNING <lw_output> WITH KEY vhcle =
wa_r1_data-vhcle.
<lw_output>-status = 'Assignment Success'(016).
COMMIT WORK.
ELSE.
PERFORM output_msg_prepare USING wa_messages
CHANGING lv_message.
READ TABLE it_popupalv1 ASSIGNING <lw_output> WITH KEY vhcle =
wa_r1_data-vhcle.
IF sy-subrc = 0.
<lw_output>-status = lv_message.
ENDIF.
REFRESH : lt_messages.
ENDIF..
ELSE.
"Dequeue vehicle
CALL FUNCTION 'VELO09_VEHICLE_DEQUEUE'
TABLES
vlcdiavehi_it = lt_vlcdiavehi[].
"Dequeue vehicle
CALL FUNCTION 'VELO09_VEHICLE_DEQUEUE'
TABLES
vlcdiavehi_it = lt_vlcdiavehi[].
WHEN OTHERS.
CLEAR:lv_reg_from,lv_reg_to.
CLEAR:gv_pf.
LEAVE TO SCREEN 0.
LEAVE TO LIST-PROCESSING.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form OUTPUT_MSG_PREPARE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_MESSAGE text
* <--P_LV_MESSAGE text
*----------------------------------------------------------------------*
FORM output_msg_prepare USING uw_message TYPE vlch_mssg_ps
CHANGING cv_message TYPE char100.
lv_msg_id = uw_message-msgid.
lv_msgno = uw_message-msgno.
lv_msg1 = uw_message-msgv1.
lv_msg2 = uw_message-msgv2.
lv_msg3 = uw_message-msgv3.
lv_msg4 = uw_message-msgv4.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FR_OUTPUT_MSG_PREPARE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_MESSAGES text
* <--P_LV_MESSAGE text
*----------------------------------------------------------------------*
FORM fr_output_msg_prepare USING uw_message TYPE vlch_mssg_ps
CHANGING cv_message TYPE char100.
DATA:lv_msg_id TYPE t100-arbgb,
lv_msgno TYPE t100-msgnr,
lv_msg1 TYPE mssg_ret-msgv1,
lv_msg2 TYPE mssg_ret-msgv2,
lv_msg3 TYPE mssg_ret-msgv3,
lv_msg4 TYPE mssg_ret-msgv4.
lv_msg_id = uw_message-msgid.
lv_msgno = uw_message-msgno.
lv_msg1 = uw_message-msgv1.
lv_msg2 = uw_message-msgv2.
lv_msg3 = uw_message-msgv3.
lv_msg4 = uw_message-msgv4.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FR_VEHICLE_DETAILS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LV_VGUID text
* <--P_LT_VLCDIAVEHI text
*----------------------------------------------------------------------*
FORM fr_vehicle_details USING uv_vguid TYPE vlc_guid
CHANGING ct_vlcdiavehi TYPE tt_vlcdiavehi.
DATA:lw_vlcvehicle TYPE vlcvehicle,
lw_vlcdiavehi TYPE ty_vlcdiavehi.
CLEAR:lw_vlcvehicle.
* Fetch Data from VLCVEHICLE
SELECT * FROM vlcvehicle UP TO 1 ROWS INTO lw_vlcvehicle
WHERE vguid = uv_vguid.
ENDSELECT.
* Move data to relevant structure
MOVE-CORRESPONDING lw_vlcvehicle TO lw_vlcdiavehi.
APPEND lw_vlcdiavehi TO ct_vlcdiavehi.
CLEAR : lw_vlcdiavehi.
ENDFORM.