Professional Documents
Culture Documents
CALC_DATE
= s_budat-low.
S_BUDAT-LOW+4(2) = '01'.
S_BUDAT-LOW+6(2) = '01'.
s_budat-sign = 'I'.
s_budat-option = 'BT'.
s_budat-high = sy-datum.
APPEND s_budat.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
restriction
= gwa_restrict
EXCEPTIONS
too_late
= 1
repeated
= 2
selopt_without_options = 3
selopt_without_signs = 4
invalid_sign
= 5
empty_option_list
= 6
invalid_kind
= 7
repeated_kind_a
= 8
OTHERS
= 9.
PERFORM init_variant.
************************************************************************
* AT SELECTION-SCREEN ON VALUE-REQUEST
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
*AT SELECTION-SCREEN ON so_matnr.
* PERFORM check_material_type.
***********************************************************************
*
AT-SELECTION SCREEN
*
***********************************************************************
AT SELECTION-SCREEN.
PERFORM set_ucomm CHANGING sscrfields-ucomm.
***======================================================================
**
START-OF-SELECTION
*
***======================================================================
START-OF-SELECTION.
IF so_matnr IS INITIAL OR so_werks IS INITIAL.
MESSAGE 'Please Enter both : Material and Plant' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ELSE.
IF gv_index IS INITIAL.
PERFORM get_data.
ELSE.
PERFORM get_data_from_cluster.
ENDIF.
ENDIF.
***======================================================================
**
END-OF-SELECTION
*
***======================================================================
END-OF-SELECTION.
CLEAR gv_index.
CASE gc_ucomm.
WHEN 'FC01'.
gv_ucomm = gc_ucomm.
* Pop-up ALV for list selection - execute if file selected
CREATE OBJECT cluster.
TRY.
CALL METHOD cluster->get_file_list
EXPORTING
im_sort = sy-cprog
im_relid = 'PP'.
gv_index = cluster->v_sort.
ENDTRY.
IF gv_index IS NOT INITIAL.
CLEAR: p_utext.
gc_ucomm = 'ONLI'.
ENDIF.
WHEN 'ONLI'.
IF p_utext IS NOT INITIAL AND sy-batch IS INITIAL.
MESSAGE 'The saved list job will be submitted in background'(105) TYPE '
I'.
gc_ucomm = 'SJOB'.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDFORM.
" SET_UCOMM
*&---------------------------------------------------------------------*
*&
Form CHECK_MATERIAL_TYPE
*&---------------------------------------------------------------------*
*FORM check_material_type.
* IF NOT so_matnr IS INITIAL.
*
SELECT *
*
FROM mara
*
INTO CORRESPONDING FIELDS OF TABLE gt_mat_info
*
WHERE matnr IN so_matnr
*
AND mtart NOT IN ('ROH','VERP').
*
IF sy-subrc EQ 0.
*
MESSAGE 'Kindly check the selection criteria. Materials entered should be
of material type either VERP or ROH' TYPE 'I' DISPLAY LIKE 'E'.
*
LEAVE LIST-PROCESSING.
*
ENDIF.
* ENDIF.
*ENDFORM.
" CHECK_MATERIAL_TYPE
*&---------------------------------------------------------------------*
*&
Form RESTRICT_RANGES
*&---------------------------------------------------------------------*
FORM restrict_ranges .
** restricting the matnr selection to only EQ.
* gwa_optlist-name = 'OBJECTKEY1'.
* gwa_optlist-options-eq = 'X'.
* APPEND gwa_optlist TO gwa_restrict-opt_list_tab.
*
* gwa_ass-kind = 'S'.
* gwa_ass-name = 'S_MATNR'.
* gwa_ass-sg_main = 'I'.
* gwa_ass-sg_addy = space.
* gwa_ass-op_main = 'OBJECTKEY1'.
* APPEND gwa_ass TO gwa_restrict-ass_tab.
*
* CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
*
EXPORTING
*
restriction
= gwa_restrict
*
EXCEPTIONS
*
too_late
= 1
*
repeated
= 2
*
selopt_without_options = 3
*
selopt_without_signs = 4
*
invalid_sign
= 5
*
empty_option_list
= 6
*
invalid_kind
= 7
*
repeated_kind_a
= 8
*
OTHERS
= 9.
ENDFORM.
" RESTRICT_RANGES
********************************************************************************
*************
*&---------------------------------------------------------------------*
*& Include
ZV2P_DATA_DECLARATION
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*
TYPE DECLARATION
*
*&---------------------------------------------------------------------*
TYPES : BEGIN OF ty_mara,
matnr TYPE matnr,
mtart TYPE mtart,
matkl TYPE matkl,
lvorm TYPE lvorm,
mstae TYPE mstae, "X-Plant Status
dismm TYPE dismm, "MRP Type
werks TYPE werks_d,
mmsta TYPE mmsta,
dispo TYPE dispo,
"MRP Controller
sobsl TYPE sobsl,
" Special procurement key
END OF ty_mara,
BEGIN OF ty_mard,
matnr TYPE matnr,
werks TYPE werks_d,
labst TYPE labst,
umlme TYPE umlmd,
insme TYPE insme,
einme TYPE einme,
speme TYPE speme,
retme TYPE retme,
END OF ty_mard,
BEGIN OF ty_eban,
banfn TYPE banfn,
bnfpo TYPE bnfpo,
ernam TYPE ernam,
statu TYPE banst,
estkz TYPE estkz,
loekz TYPE eloek,
bsart TYPE bbsrt,
knttp TYPE knttp,
lifnr TYPE wlief,
pstyp TYPE pstyp,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
matnr TYPE matnr,
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
banfn,
bnfpo,
bsart,
knttp,
pstyp,
statu,
flief,
END OF ty_open_pr_po,
BEGIN OF ty_marc,
matnr TYPE matnr,
werks TYPE werks_d,
sobsl TYPE sobsl,
END OF ty_marc,
BEGIN OF ty_lfa1,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
END OF ty_lfa1,
BEGIN OF ty_mseg,
matnr TYPE matnr,
budat_mkpf TYPE budat,
werks TYPE werks_d,
bwart TYPE bwart,
END OF ty_mseg,
BEGIN OF ty_final,
***
Component Material
matnr TYPE matnr,
werks TYPE werks_d, " Plant
mmsta TYPE mmsta, " Plant specific Material Status
lvorm TYPE lvorm, " DF Client Level
dismm TYPE dismm, " MRP Type
mstae TYPE mstae, " X-Plant Status
dispo TYPE dispo, " MRP Controller
sobsl TYPE sobsl, " Special procurement key
ltext_matnr TYPE ltext, " Special procurement key Desc
available_stock TYPE p DECIMALS 3, " Available Stock
count_po TYPE i,
" Open PO
count_pr TYPE i,
" Open Pr
last_movt_date TYPE sy-datum,
" Last Movement Date
***
HALB Material
matnr_halb TYPE matnr,
werks_halb TYPE werks_d, " Plant
mmsta_halb TYPE mmsta,
" Plant specific Material Status
lvorm_halb TYPE lvorm,
" DF Client Level
dismm_halb TYPE dismm,
" MRP Type
mstae_halb TYPE mstae,
" X-Plant Status
dispo_halb TYPE dispo,
" MRP Controller
sobsl_halb TYPE sobsl,
" Special procurement key
ltext_halb TYPE ltext,
" Special procurement key Desc
stlst_halb TYPE sttxt,
" Syrup BOM Status
available_stock_halb TYPE p DECIMALS 3, " Available Stock
bom_cost_date_halb TYPE c,
" Syrup BOM Costed (Y/N)
bom_cost_valid_from_halb TYPE sy-datum, " Syrup Costing Valid from
bom_cost_valid_to_halb TYPE sy-datum,
" Syrup Costing Valid from
last_movt_date_halb TYPE sy-datum ,
" Last Movement Date
***
FERT Material
matnr_fert TYPE matnr, " FG Material
werks_fert TYPE werks_d, " Plant
c_x
TYPE char1
VALUE 'X'.
****************************************************************************
*&---------------------------------------------------------------------*
*& Include
ZV2P_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
*
Declaration of Selection Screen (Parameters / SelectOptions)
*
*----------------------------------------------------------------------*
SELECTION-SCREEN : FUNCTION KEY 1.
SELECTION-SCREEN : BEGIN OF BLOCK input WITH FRAME TITLE text-001.
SELECT-OPTIONS : so_matnr FOR mara-matnr NO INTERVALS OBLIGATORY,
so_werks FOR t001w-werks OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK input.
SELECTION-SCREEN BEGIN OF BLOCK variant WITH FRAME TITLE text-064.
PARAMETERS: p_vari TYPE disvariant-variant.
SELECTION-SCREEN : END OF BLOCK variant.
SELECTION-SCREEN BEGIN OF BLOCK stored_list_name WITH FRAME TITLE text-065.
PARAMETERS: p_utext TYPE zzsave_name.
SELECTION-SCREEN END OF BLOCK stored_list_name.
SELECT-OPTIONS : s_budat FOR sy-datum NO-DISPLAY.
****************************************************************************
*&---------------------------------------------------------------------*
*& Include
ZV2P_EVENT_CLASS
*&---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION FINAL.
PUBLIC SECTION.
METHODS:
* Method for Handling the Hotspot for PO and PR
handle_hotspot_po FOR EVENT hotspot_click
OF cl_gui_alv_grid
IMPORTING
e_column_id
es_row_no.
ENDCLASS.
"lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD handle_hotspot_po.
CASE e_column_id.
WHEN 'COUNT_PO' OR 'COUNT_PR'.
CLEAR : hotspot_flag, gwa_final.
MOVE e_column_id TO hotspot_flag.
CONDENSE hotspot_flag.
*
IF sy-subrc EQ 0.
******
" For PR
IF hotspot_flag = 'COUNT_PO'.
IF NOT gwa_final-count_po EQ 0.
LOOP AT gt_ekko_ekpo INTO gwa_ekko_ekpo WHERE matnr_i = gwa_finalmatnr AND werks_i = gwa_final-werks.
MOVE-CORRESPONDING gwa_ekko_ekpo TO gwa_open_pr_po.
gwa_open_pr_po-ebelp = gwa_ekko_ekpo-ebelp_i.
gwa_open_pr_po-werks = gwa_ekko_ekpo-werks_i.
gwa_open_pr_po-matnr = gwa_ekko_ekpo-matnr_i.
gwa_open_pr_po-txz01 = gwa_ekko_ekpo-txz01_i.
READ TABLE gt_lfa1 INTO gwa_lfa1 WITH KEY lifnr = gwa_ekko_ekpolifnr.
IF sy-subrc EQ 0.
gwa_open_pr_po-name1 = gwa_lfa1-name1.
CLEAR : gwa_lfa1.
ENDIF.
APPEND gwa_open_pr_po TO gt_open_pr_po.
CLEAR : gwa_open_pr_po.
ENDLOOP.
PERFORM build_fcat_200 USING hotspot_flag CHANGING gt_fcat_200.
CALL SCREEN 200.
ENDIF.
******
IF hotspot_flag = 'COUNT_PR'
ELSE.
REFRESH gt_open_pr_po.
CLEAR gwa_open_pr_po.
IF NOT gwa_final-count_pr EQ 0.
LOOP AT gt_eban INTO gwa_eban WHERE matnr EQ gwa_final-matnr AND
werks = gwa_final-werks.
MOVE-CORRESPONDING gwa_eban TO gwa_open_pr_po.
move gwa_eban-FLIEF to gwa_open_pr_po-lifnr.
gwa_open_pr_po-matnr = gwa_eban-matnr.
gwa_open_pr_po-txz01 = gwa_eban-txz01.
READ TABLE gt_lfa1 INTO gwa_lfa1 WITH KEY lifnr = gwa_eban-lifnr
.
IF sy-subrc EQ 0.
gwa_open_pr_po-name1 = gwa_lfa1-name1.
CLEAR : gwa_lfa1.
ENDIF.
APPEND gwa_open_pr_po TO gt_open_pr_po.
CLEAR gwa_open_pr_po.
ENDLOOP.
ENDIF.
PERFORM build_fcat_200 USING hotspot_flag CHANGING gt_fcat_200.
CALL SCREEN 300.
ENDIF.
ENDIF.
ENDCASE.
ENDMETHOD.
ENDCLASS.
"handle_hotspot_po
"lcl_event_handler IMPLEMENTATION
********************************************************************************
**********
*&---------------------------------------------------------------------*
*& Include
ZV2P_FETCH_DATA
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form GET_DATA
*&---------------------------------------------------------------------*
FORM get_data .
DATA : lv_flag TYPE c.
SELECT
matnr mtart matkl lvorm mstae
FROM mara
INTO CORRESPONDING FIELDS OF TABLE gt_mat_info
WHERE matnr IN so_matnr
AND mtart NOT IN ('ROH','VERP').
IF sy-subrc EQ 0.
MESSAGE 'Kindly check the selection criteria. Materials entered should be of
material type either VERP or ROH' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
*Pick Raw Material & Fert Material
SELECT a~matnr a~mtart a~matkl a~lvorm a~mstae b~dismm b~werks b~mmsta b~dispo
b~sobsl
FROM mara AS a INNER JOIN marc AS b
ON a~matnr = b~matnr
INTO TABLE gt_mat_info
WHERE a~matnr IN so_matnr
AND a~mtart IN ('ROH','VERP')
AND b~werks IN so_werks
AND b~mmsta IN ('Z3' , 'Z4' , 'Z7').
CHECK NOT gt_mat_info IS INITIAL.
SORT gt_mat_info BY matnr werks matkl.
*** Fetching valid contracts for material in gt_mat_info table.
SELECT
ebeln ebelp_i bukrs ekorg lifnr bstyp kdatb kdate autlf matnr_i werks_i elik
z_i matkl_i txz01_i ernam aedat
FROM wb2_v_ekko_ekpo2
INTO TABLE gt_ekko_ekpo
FOR ALL ENTRIES IN gt_mat_info
WHERE matnr_i EQ gt_mat_info-matnr
AND werks_i EQ gt_mat_info-werks
AND matkl_i EQ gt_mat_info-matkl
AND loekz EQ ''
" Header level deletion indication
AND loekz_i EQ ''
" Item level deletion indication
AND elikz_i EQ ''
AND ekorg IN ('1000','2140')
AND kdate IN valid_period
" between sy-datum and 31/12/9999
AND bstyp = 'K'.
IF NOT gt_ekko_ekpo IS INITIAL.
*** Deleting material for which valid contracts exists.
SORT gt_ekko_ekpo BY matnr_i werks_i.
*
LOOP AT gt_mat_info INTO gwa_mat_info.
*
READ TABLE gt_ekko_ekpo WITH KEY matnr_i = gwa_mat_info-matnr INTO gwa_ek
ko_ekpo BINARY SEARCH.
*
IF sy-subrc EQ 0.
*
DELETE gt_mat_info INDEX sy-tabix.
*
ENDIF.
*
ENDLOOP.
gt_ekko_ekpo_temp = gt_ekko_ekpo. " Copy to set valid contract flag in out
put
REFRESH gt_ekko_ekpo.
CLEAR gwa_ekko_ekpo.
ENDIF.
* REFRESH gt_ekko_ekpo.
* CLEAR gwa_ekko_ekpo.
*** Checking gt_mat_info again for not to be initial
CHECK NOT gt_mat_info IS INITIAL.
*** If valid contract does not exist for a material
*** then check if valid source list exist
SELECT
matnr werks lifnr flifn vdatu bdatu srm_contract_id srm_contract_itm
FROM eord
INTO TABLE gt_eord
FOR ALL ENTRIES IN gt_mat_info
WHERE matnr EQ gt_mat_info-matnr
AND werks EQ gt_mat_info-werks
*
AND srm_contract_id NE ''
AND ebeln NE ''
AND bdatu IN valid_period.
*
AND vdatu IN valid_period.
IF NOT gt_eord IS INITIAL.
SORT gt_eord BY matnr werks.
*** Deleting material for which valid contracts exists.
*
LOOP AT gt_mat_info INTO gwa_mat_info.
*
READ TABLE gt_eord WITH KEY matnr = gwa_mat_info-matnr INTO gwa_eord BINA
RY SEARCH.
*
IF sy-subrc EQ 0.
*
DELETE gt_mat_info INDEX sy-tabix.
*
ENDIF.
*
ENDLOOP.
gt_eord_temp = gt_eord.
" Copy to set valid source list flag in output
REFRESH gt_eord.
CLEAR gwa_eord.
ENDIF.
* REFRESH gt_eord.
* CLEAR gwa_eord.
CHECK NOT gt_mat_info IS INITIAL.
*** Fetching Open PO for remaining Materials
REFRESH gt_ekko_ekpo.
CLEAR gwa_ekko_ekpo.
SELECT
ebeln ebelp_i bukrs ekorg lifnr bstyp kdatb kdate autlf matnr_i werks_i elik
z_i matkl_i txz01_i ernam aedat
FROM wb2_v_ekko_ekpo2
INTO TABLE gt_ekko_ekpo
FOR ALL ENTRIES IN gt_mat_info
WHERE matnr_i EQ gt_mat_info-matnr
AND werks_i EQ gt_mat_info-werks
AND matkl_i EQ gt_mat_info-matkl
AND bsart EQ 'ZR'
AND autlf EQ ''
AND loekz EQ ''
" Header level deletion indication
AND loekz_i EQ ''
" Item level deletion indication
AND elikz_i EQ ''
AND ekorg IN ('1000','2140').
IF NOT gt_ekko_ekpo IS INITIAL.
SELECT
lifnr name1
FROM lfa1
INTO TABLE gt_lfa1
FOR ALL ENTRIES IN gt_ekko_ekpo
WHERE lifnr EQ gt_ekko_ekpo-lifnr.
ENDIF.
** Fetching Open PR for remaining Materials
SELECT
banfn bnfpo ernam statu estkz loekz bsart knttp lifnr pstyp ebeln ebelp matn
r txz01 werks flief
FROM eban
INTO TABLE gt_eban
FOR ALL ENTRIES IN gt_mat_info
WHERE matnr EQ gt_mat_info-matnr
AND werks EQ gt_mat_info-werks
AND matkl EQ gt_mat_info-matkl
AND bsart EQ 'NB'
AND knttp EQ ''
AND pstyp EQ '0'
AND ebeln EQ ''
AND statu EQ 'N'
AND estkz EQ 'B'
AND loekz EQ ''
%_HINTS ORACLE 'index(eban"1")'.
"#EC CI_HINTS
** The following FM outputs the syrup and fert materials for components material
CLEAR gwa_mat_info.
LOOP AT gt_mat_info INTO gwa_mat_info.
CALL FUNCTION 'CS_WHERE_USED_MAT'
EXPORTING
datub
= sy-datum
datuv
= '31129999'
"'99991231'
matnr
= gwa_mat_info-matnr
werks
= gwa_mat_info-werks
TABLES
wultb
= gt_wultb
equicat
= gt_equicat
kndcat
= gt_kndcat
matcat
= gt_matcat
stdcat
= gt_stdcat
tplcat
= gt_tplcat
EXCEPTIONS
call_invalid
= 1
material_not_found
= 2
no_where_used_rec_found
= 3
no_where_used_rec_selected = 4
no_where_used_rec_valid
= 5
OTHERS
= 6.
IF sy-subrc EQ 0.
LOOP AT gt_wultb INTO gwa_wultb.
gwa_cost_info-matnr = gwa_mat_info-matnr.
gwa_cost_info-werks = gwa_mat_info-werks.
*
lv_flag = ''.
IF gwa_wultb-matnr+10(1) = '1'.
" For FERT
gwa_cost_info-matnr_fert = gwa_wultb-matnr.
gwa_cost_info-fert_stlst = gwa_wultb-stlst. " if not FERT, then stlst
will be for HALB, which is copied into gwa_cost_info-halb_stlst
APPEND gwa_cost_info TO gt_cost_info.
" in second call to FM ,
below
CLEAR gwa_cost_info.
lv_flag = 'X'.
ELSEIF gwa_wultb-matnr+10(1) = '4'.
" For HALB
REFRESH gt_wultb_temp .
CALL FUNCTION 'CS_WHERE_USED_MAT'
EXPORTING
datub
= sy-datum
datuv
= '31129999'
"'99991231'
matnr
= gwa_wultb-matnr
werks
= gwa_wultb-werks
TABLES
wultb
= gt_wultb_temp
equicat
= gt_equicat
kndcat
= gt_kndcat
matcat
= gt_matcat
stdcat
= gt_stdcat
tplcat
= gt_tplcat
EXCEPTIONS
call_invalid
= 1
material_not_found
= 2
no_where_used_rec_found
= 3
no_where_used_rec_selected = 4
no_where_used_rec_valid
= 5
OTHERS
= 6.
IF sy-subrc EQ 0.
LOOP AT gt_wultb_temp INTO gwa_wultb_temp.
gwa_cost_info-matnr_halb = gwa_wultb-matnr.
gwa_cost_info-matnr_fert = gwa_wultb_temp-matnr.
gwa_cost_info-halb_stlst = gwa_wultb-stlst.
" STLST from fir
st FM call
gwa_cost_info-fert_stlst = gwa_wultb_temp-stlst. "
APPEND gwa_cost_info TO gt_cost_info.
ENDLOOP.
CLEAR gwa_cost_info.
ELSE.
" if only halb materiial exist for main component.
gwa_cost_info-matnr_halb = gwa_wultb-matnr.
gwa_cost_info-halb_stlst = gwa_wultb-stlst.
" STLST from first
FM call
APPEND gwa_cost_info TO gt_cost_info.
CLEAR gwa_cost_info.
ENDIF.
ENDIF.
**
IF lv_flag = ''.
**
APPEND gwa_cost_info TO gt_cost_info.
**
CLEAR gwa_cost_info.
**
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
***********************************************
*** Stock Quantity for Componenet Materials
***********************************************
SORT gt_cost_info BY matnr werks.
SELECT
matnr werks labst umlme insme einme speme retme
FROM mard
INTO TABLE gt_mard_temp
FOR ALL ENTRIES IN gt_cost_info
WHERE matnr EQ gt_cost_info-matnr
AND werks EQ gt_cost_info-werks.
*
*
"#EC CI_HINTS
ENDLOOP.
ENDIF.
********* Special proc. Key description
SELECT
spras werks sobsl ltext
FROM t460t
INTO TABLE gt_460t
FOR ALL ENTRIES IN gt_mat_info
WHERE sobsl EQ gt_mat_info-sobsl
AND werks EQ gt_mat_info-werks
AND spras EQ sy-langu.
**************** END ****************
SORT : gt_mard_comp BY matnr werks,
gt_mard_halb BY matnr werks,
gt_mard_fert BY matnr werks,
gt_mat_info BY matnr werks,
gt_cost_info BY matnr werks,
gt_keko_halb BY matnr werks,
gt_mat_info_halb BY matnr werks,
gt_mat_info_fert BY matnr werks,
gt_ekko_ekpo_temp BY matnr_i werks_i,
gt_eord_temp BY matnr werks,
gt_mseg BY matnr werks,
gt_460t BY sobsl,
gt_keko_fert BY matnr werks.
SORT gt_mseg BY matnr werks budat_mkpf DESCENDING.
CLEAR gv_flag.
LOOP AT gt_mat_info INTO gwa_mat_info.
gwa_final-matnr = gwa_mat_info-matnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gwa_final-matnr
IMPORTING
output = gwa_final-matnr.
gwa_final-werks = gwa_mat_info-werks.
gwa_final-mmsta = gwa_mat_info-mmsta.
gwa_final-lvorm = gwa_mat_info-lvorm.
gwa_final-dismm = gwa_mat_info-dismm.
gwa_final-mstae = gwa_mat_info-mstae.
gwa_final-dispo = gwa_mat_info-dispo.
gwa_final-sobsl = gwa_mat_info-sobsl.
READ TABLE gt_ekko_ekpo_temp WITH KEY matnr_i = gwa_mat_info-matnr werks_i =
gwa_mat_info-werks INTO gwa_ekko_ekpo_temp BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-valid_contract = 'Y'.
ELSE.
gwa_final-valid_contract = 'N'.
ENDIF.
CLEAR gwa_ekko_ekpo_temp.
READ TABLE gt_eord_temp WITH KEY matnr = gwa_mat_info-matnr werks = gwa_mat_
info-werks INTO gwa_eord_temp BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-valid_list = 'Y'.
ELSE.
gwa_final-valid_list = 'N'.
ENDIF.
CLEAR gwa_eord_temp.
*******
Last movement date for component material
READ TABLE gt_mseg WITH KEY matnr = gwa_mat_info-matnr werks = gwa_mat_info
-werks INTO gwa_mseg BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-last_movt_date = gwa_mseg-budat_mkpf.
CLEAR gwa_mseg.
ENDIF.
READ TABLE gt_460t WITH KEY sobsl = gwa_mat_info-sobsl INTO gwa_460t BINARY
SEARCH.
IF sy-subrc EQ 0.
gwa_final-ltext_matnr = gwa_460t-ltext.
CLEAR gwa_460t.
ENDIF.
CLEAR lv_count.
PERFORM count_open_po USING gwa_mat_info CHANGING lv_count.
gwa_final-count_po = lv_count.
CLEAR lv_count.
PERFORM count_open_pr USING gwa_mat_info CHANGING lv_count.
gwa_final-count_pr = lv_count.
READ TABLE gt_mard_comp WITH KEY matnr = gwa_mat_info-matnr werks = gwa_mat_
info-werks
INTO gwa_mard_comp BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-available_stock = gwa_mard_comp-labst + gwa_mard_comp-umlme + gw
a_mard_comp-insme +
gwa_mard_comp-einme + gwa_mard_comp-speme + gw
a_mard_comp-retme.
CLEAR gwa_mard_comp.
ENDIF.
gv_flag = ''.
LOOP AT gt_cost_info INTO gwa_cost_info WHERE matnr EQ gwa_mat_info-matnr AN
D werks = gwa_mat_info-werks.
****
For Halb Materials
READ TABLE gt_mard_halb WITH KEY matnr = gwa_cost_info-matnr_halb werks =
gwa_cost_info-werks
INTO gwa_mard_halb BINARY SEARCH.
IF sy-subrc EQ 0.
gv_flag = 'X'.
gwa_final-matnr_halb = gwa_cost_info-matnr_halb.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gwa_final-matnr_halb
IMPORTING
output = gwa_final-matnr_halb.
IF gwa_cost_info-halb_stlst = '1'.
gwa_final-stlst_halb = '1-Active'.
ELSEIF gwa_cost_info-halb_stlst = '2'.
gwa_final-stlst_halb = '2-Inactive'.
ELSEIF gwa_cost_info-halb_stlst = '3'.
gwa_final-stlst_halb = '3-Active with history reqmt'.
ENDIF.
*
gwa_final-stlst_halb = gwa_cost_info-halb_stlst.
gwa_final-available_stock_halb = gwa_mard_halb-labst + gwa_mard_halb-uml
me + gwa_mard_halb-insme +
gwa_mard_halb-einme + gwa_mard_halb-spe
me + gwa_mard_halb-retme.
************* Costing information for HALB
READ TABLE gt_keko_halb WITH KEY matnr = gwa_cost_info-matnr_halb werks
= gwa_cost_info-werks
INTO gwa_keko_halb BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-bom_cost_valid_from_halb = gwa_keko_halb-kadat.
gwa_final-bom_cost_valid_to_halb = gwa_keko_halb-bidat.
IF gwa_keko_halb-kadky+0(4) = sy-datum+0(4).
gwa_final-bom_cost_date_halb = 'Y'.
ELSE.
gwa_final-bom_cost_date_halb = 'N'.
ENDIF.
CLEAR gwa_keko_halb.
ENDIF.
READ TABLE gt_mat_info_halb WITH KEY matnr = gwa_mard_halb-matnr werks =
gwa_mard_halb-werks
INTO gwa_mat_info_halb BINARY SEARC
H.
IF sy-subrc EQ 0.
gwa_final-werks_halb = gwa_mat_info_halb-werks.
gwa_final-mmsta_halb = gwa_mat_info_halb-mmsta.
gwa_final-lvorm_halb = gwa_mat_info_halb-lvorm.
gwa_final-dismm_halb = gwa_mat_info_halb-dismm.
gwa_final-mstae_halb = gwa_mat_info_halb-mstae.
gwa_final-dispo_halb = gwa_mat_info_halb-dispo.
gwa_final-sobsl_halb = gwa_mat_info_halb-sobsl.
******* Special procurement key Desc for halb
READ TABLE gt_460t WITH KEY sobsl = gwa_mat_info_halb-sobsl INTO gwa_4
60t BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-ltext_halb = gwa_460t-ltext.
CLEAR gwa_460t.
ENDIF.
********** for FERT material in particular halb material
READ TABLE gt_mard_fert WITH KEY matnr = gwa_cost_info-matnr_fert werk
s = gwa_cost_info-werks
INTO gwa_mard_fert BINARY SEARCH.
IF sy-subrc EQ 0.
*
gwa_final-stlst_fert = gwa_cost_info-fert_stlst.
IF gwa_cost_info-fert_stlst = '1'.
gwa_final-stlst_fert = '1-Active'.
ELSEIF gwa_cost_info-fert_stlst = '2'.
gwa_final-stlst_fert = '2-Inactive'.
ELSEIF gwa_cost_info-fert_stlst = '3'.
gwa_final-stlst_fert = '3-Active with history reqmt'.
ENDIF.
gwa_final-matnr_fert = gwa_cost_info-matnr_fert.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gwa_final-matnr_fert
IMPORTING
output = gwa_final-matnr_fert.
gwa_final-available_stock_fert = gwa_mard_fert-labst + gwa_mard_fert
-umlme + gwa_mard_fert-insme +
gwa_mard_fert-einme + gwa_mard_fert
-speme + gwa_mard_fert-retme.
*******
Last movement date for FERT material
READ TABLE gt_mseg WITH KEY matnr = gwa_cost_info-matnr_fert werks
= gwa_cost_info-werks
INTO gwa_mseg BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-last_movt_date_fert = gwa_mseg-budat_mkpf.
CLEAR gwa_mseg.
ENDIF.
************* Costing information for FERT
READ TABLE gt_keko_fert WITH KEY matnr = gwa_cost_info-matnr_fert we
rks = gwa_cost_info-werks
INTO gwa_keko_fert BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-bom_cost_valid_from_fert = gwa_keko_fert-kadat.
gwa_final-bom_cost_valid_to_fert = gwa_keko_fert-bidat.
IF gwa_keko_fert-kadky+0(4) = sy-datum+0(4).
gwa_final-bom_cost_date_fert = 'Y'.
ELSE.
gwa_final-bom_cost_date_fert = 'N'.
ENDIF.
CLEAR gwa_keko_fert.
ENDIF.
READ TABLE gt_mat_info_fert WITH KEY matnr = gwa_mard_fert-matnr wer
ks = gwa_mard_fert-werks
INTO gwa_mat_info_fert BINARY S
EARCH.
IF sy-subrc EQ 0.
gwa_final-werks_fert = gwa_mat_info_fert-werks.
gwa_final-mmsta_fert = gwa_mat_info_fert-mmsta.
gwa_final-lvorm_fert = gwa_mat_info_fert-lvorm.
gwa_final-dismm_fert = gwa_mat_info_fert-dismm.
gwa_final-mstae_fert = gwa_mat_info_fert-mstae.
gwa_final-dispo_fert = gwa_mat_info_fert-dispo.
gwa_final-sobsl_fert = gwa_mat_info_fert-sobsl.
******* Special procurement key Desc for FERT
READ TABLE gt_460t WITH KEY sobsl = gwa_mat_info_fert-sobsl INTO g
wa_460t BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-ltext_fert = gwa_460t-ltext.
CLEAR gwa_460t.
ENDIF.
ENDIF.
APPEND gwa_final TO gt_final.
CLEAR : gwa_final-ltext_fert , gwa_final-werks_halb , gwa_final-mmst
a_halb , gwa_final-lvorm_halb , gwa_final-dismm_halb,
gwa_final-mstae_halb , gwa_final-dispo_halb , gwa_final-sobsl_halb ,
gwa_final-stlst_fert , gwa_final-matnr_fert ,
gwa_final-available_stock_fert , gwa_final-last_movt_date_fert , gwa
_final-bom_cost_valid_from_fert , gwa_final-bom_cost_valid_to_fert ,
gwa_final-bom_cost_date_fert , gwa_final-werks_fert , gwa_final-mmst
a_fert , gwa_final-lvorm_fert , gwa_final-dismm_fert ,
gwa_final-mstae_fert , gwa_final-dispo_fert , gwa_final-sobsl_fert ,
gwa_final-ltext_halb.
CLEAR gwa_final-ltext_fert.
*
CLEAR gwa_final.
CLEAR gwa_mard_halb.
ELSE.
" if no fert for halb
APPEND gwa_final TO gt_final.
*
CLEAR gwa_final.
ENDIF.
ENDIF.
ELSE.
" if no HALB only FERT for component material
READ TABLE gt_mard_fert WITH KEY matnr = gwa_cost_info-matnr_fert werks
= gwa_cost_info-werks
gwa_final-matnr_fert = gwa_cost_info-matnr_fert.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gwa_final-matnr_fert
IMPORTING
output = gwa_final-matnr_fert.
*
gwa_final-stlst_fert = gwa_cost_info-fert_stlst.
gwa_final-available_stock_fert = gwa_mard_fert-labst + gwa_mard_fert-u
mlme + gwa_mard_fert-insme +
gwa_mard_fert-einme + gwa_mard_fert-s
peme + gwa_mard_fert-retme.
*******
Last movement date for FERT material
READ TABLE gt_mseg WITH KEY matnr = gwa_cost_info-matnr_fert werks =
gwa_cost_info-werks
INTO gwa_mseg BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-last_movt_date_fert = gwa_mseg-budat_mkpf.
CLEAR gwa_mseg.
ENDIF.
************* Costing information for fert
READ TABLE gt_keko_fert WITH KEY matnr = gwa_cost_info-matnr_fert werk
s = gwa_cost_info-werks
INTO gwa_keko_fert BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-bom_cost_valid_from_fert = gwa_keko_fert-kadat.
gwa_final-bom_cost_valid_to_fert = gwa_keko_fert-bidat.
IF gwa_keko_fert-kadky+0(4) = sy-datum+0(4).
gwa_final-bom_cost_date_fert = 'Y'.
ELSE.
gwa_final-bom_cost_date_fert = 'N'.
ENDIF.
CLEAR gwa_keko_fert.
ENDIF.
READ TABLE gt_mat_info_fert WITH KEY matnr = gwa_mard_fert-matnr werks
= gwa_mard_fert-werks
INTO gwa_mat_info_fert BINARY SEA
RCH.
IF sy-subrc EQ 0.
gwa_final-werks_fert = gwa_mat_info_fert-werks.
gwa_final-mmsta_fert = gwa_mat_info_fert-mmsta.
gwa_final-lvorm_fert = gwa_mat_info_fert-lvorm.
gwa_final-dismm_fert = gwa_mat_info_fert-dismm.
gwa_final-mstae_fert = gwa_mat_info_fert-mstae.
gwa_final-dispo_fert = gwa_mat_info_fert-dispo.
gwa_final-sobsl_fert = gwa_mat_info_fert-sobsl.
******* Special procurement key Desc for fert
READ TABLE gt_460t WITH KEY sobsl = gwa_mat_info_fert-sobsl INTO gwa
_460t BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-ltext_fert = gwa_460t-ltext.
CLEAR gwa_460t.
ENDIF.
ENDIF.
APPEND gwa_final TO gt_final.
CLEAR gwa_final-ltext_fert.
*
CLEAR gwa_final.
CLEAR gwa_mard_fert.
ENDIF.
ENDIF.
ENDLOOP.
IF gv_flag = ''.
APPEND gwa_final TO gt_final.
CLEAR gwa_final.
ENDIF.
CLEAR gwa_final.
ENDLOOP.
LOOP AT gt_ekko_ekpo INTO gwa_ekko_ekpo.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gwa_ekko_ekpo-matnr_i
IMPORTING
output = gwa_ekko_ekpo-matnr_i.
MODIFY gt_ekko_ekpo FROM gwa_ekko_ekpo TRANSPORTING matnr_i.
CLEAR gwa_ekko_ekpo.
ENDLOOP.
LOOP AT gt_eban INTO gwa_eban.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gwa_eban-matnr
IMPORTING
output = gwa_eban-matnr.
MODIFY gt_eban FROM gwa_eban TRANSPORTING matnr.
CLEAR gwa_eban.
ENDLOOP.
ENDFORM.
" GET_DATA
*&---------------------------------------------------------------------*
*&
Form GET_DATA_FROM_CLUSTER
*&---------------------------------------------------------------------*
FORM get_data_from_cluster .
CHECK: cluster IS NOT INITIAL.
CALL METHOD zcl_general_utility=>status_meter
EXPORTING
percent = 20
info
= 'Pull Data from Stored List'(103).
TRY.
CALL METHOD cluster->get_data_pp
EXPORTING
im_sort
= gv_index
IMPORTING
ex_data_t
= gt_final
ex_ekko_ekpo = gt_ekko_ekpo
ex_eban
= gt_eban
ex_lfa1
= gt_lfa1.
CATCH zcx_common_exceptions INTO cx_gen.
gv_error = cx_gen->get_message( ).
MESSAGE gv_error TYPE 'I'.
EXIT.
ENDTRY.
ENDFORM.
" GET_DATA_FROM_CLUSTER
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZV2P_STATUS'.
* SET TITLEBAR 'xxx'.
*CUSTOM_CONTAINER
IF go_container IS INITIAL.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CREATE OBJECT go_container
EXPORTING
container_name
= 'CUSTOM_CONTAINER'
EXCEPTIONS
cntl_error
= 1
cntl_system_error
= 2
create_error
= 3
lifetime_error
= 4
lifetime_dynpro_dynpro_link = 5
OTHERS
= 6.
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 OBJECT go_alv
EXPORTING
i_parent
= go_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS
= 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
CREATE OBJECT go_alv
EXPORTING
i_parent
= go_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS
= 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
*----------------------------------------------------------------------*
*
<--P_GT_FCAT text
*----------------------------------------------------------------------*
FORM create_fcat CHANGING gt_fcat TYPE lvc_t_fcat.
"#EC NEEDED
PERFORM fcat USING : 'MATNR'
text-002 '' '' 10,
ponent Material
'WERKS'
text-003 '' '' '4',
ant
'MMSTA'
text-004 '' '' '10',
lant Specific Material Status
'MSTAE'
text-005 '' '' '10',
-Plant Status
'LVORM'
text-006 '' '' '10',
F Client Level
'DISMM'
text-007 '' '' '10',
RP Type
'DISPO'
text-008 '' '' '10',
RP Controller
'SOBSL'
text-009 '' '' '5',
ecial procurement key
'LTEXT_MATNR'
text-010 '' '' '20',
ecial procurement key Description
'VALID_CONTRACT'
text-066 '' '' '15',
lid Contract (Y/N)
'VALID_LIST'
text-067 '' '' '15',
lid Source List (Y/N)
'COUNT_PO'
text-011 '' '' '10',
pen PO
'COUNT_PR'
text-012 '' '' '10',
pen PR
'AVAILABLE_STOCK'
text-013 '' '' '20',
vailable Stock
'LAST_MOVT_DATE'
text-014 '' '' '12',
st Movement Date
" Com
" Pl
" P
" X
" D
" M
" M
" Sp
" Sp
" Va
" Va
" O
" O
" A
" La
'MATNR_HALB'
" S
'WERKS_HALB'
" Pl
" P
" X
" D
" M
" M
" Sp
yrup Material
ant
'MMSTA_HALB'
lant Specific Material Status
'MSTAE_HALB'
-Plant Status
'LVORM_HALB'
F Client Level
'DISMM_HALB'
RP Type
'DISPO_HALB'
RP Controller
'SOBSL_HALB'
ecial procurement key
'LTEXT_HALB'
ecial procurement key Description
'BOM_COST_DATE_HALB'
rup BOM Costed (Y/N)
'BOM_COST_VALID_FROM_HALB'
yrup Costing Valid From
'BOM_COST_VALID_TO_HALB'
yrup Costing Valid To
'STLST_HALB'
" Sy
" S
" S
" S
'LAST_MOVT_DATE_HALB'
'AVAILABLE_STOCK'
'MATNR_FERT'
G Material
**
lant
'WERKS_FERT'
'MMSTA_FERT'
lant Specific Material Status
'MSTAE_FERT'
Plant Status
'LVORM_FERT'
F Client Level
'DISMM_FERT'
RP Type
'DISPO_FERT'
RP Controller
'SOBSL_FERT'
ecial procurement key
'LTEXT_FERT'
ecial procurement key Description
'BOM_COST_DATE_FERT'
BOM Costed (Y/N)
'BOM_COST_VALID_FROM_FERT'
G Costing Valid From
'BOM_COST_VALID_TO_FERT'
G Costing Valid To
'STLST_FERT'
G BOM Status
'AVAILABLE_STOCK_FERT'
G Available Stock
'LAST_MOVT_DATE_FERT'
G Last Movement Date
'DEACTIVATION_FLAG'
n be Deactivated (Y/N)
"
" F
" P
" X-
" D
" M
" M
" Sp
" FG
" F
" F
" F
" F
" F
" Ca
ENDFORM.
" CREATE_FCAT
*&---------------------------------------------------------------------*
*&
Form FCAT
*&---------------------------------------------------------------------*
FORM fcat USING
value(f_field) TYPE any
value(f_desc) TYPE any
value(f_key) TYPE any
value(f_value) TYPE any
value(f_len) TYPE any.
ADD 1 TO lv_cntr.
gwa_fcat-col_pos
= lv_cntr.
gwa_fcat-row_pos
= 1.
gwa_fcat-fieldname = f_field.
gwa_fcat-scrtext_l
= f_desc.
" field description has to be passed like
this for Column Heading, -- using OOPs
gwa_fcat-key
= f_key.
gwa_fcat-key_sel
= f_key.
gwa_fcat-fix_column = f_key.
gwa_fcat-hotspot
= f_value.
gwa_fcat-outputlen = f_len.
gwa_fcat-no_zero = 'X'.
* gwa_fcat-col_opt = 'X'.
IF f_field = 'COUNT_PO' OR f_field = 'COUNT_PR'.
gwa_fcat-hotspot = 'X'.
ENDIF.
APPEND gwa_fcat TO gt_fcat.
CLEAR gwa_fcat.
ENDFORM.
"fcat
*&---------------------------------------------------------------------*
*&
Form CREATE_LAYOUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
<--P_GWA_LAYO text
*----------------------------------------------------------------------*
FORM create_layout CHANGING gwa_layo TYPE lvc_s_layo.
gwa_layo-zebra = 'X'.
* gwa_layo-smalltitle = 'X'.
* gwa_layo-cwidth_opt = 'X'.
ENDFORM.
" CREATE_LAYOUT
*&---------------------------------------------------------------------*
*&
Form COUNT_OPEN_PO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_GWA_MAT_INFO_MATNR text
*
<--P_LV_COUNT text
*----------------------------------------------------------------------*
FORM count_open_po USING
p_gwa_mat_info_matnr LIKE LINE OF gt_mat_info
CHANGING lv_count TYPE i.
LOOP AT gt_ekko_ekpo INTO gwa_ekko_ekpo WHERE matnr_i = p_gwa_mat_info_matnr-m
atnr AND werks_i = p_gwa_mat_info_matnr-werks.
lv_count = lv_count + 1.
ENDLOOP.
ENDFORM.
" COUNT_OPEN_PO
*&---------------------------------------------------------------------*
*&
Form COUNT_OPEN_PR
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_GWA_MAT_INFO_MATNR text
*
<--P_LV_COUNT text
*----------------------------------------------------------------------*
FORM count_open_pr USING
p_gwa_mat_info_matnr LIKE LINE OF gt_mat_info
CHANGING lv_count TYPE i.
LOOP AT gt_eban INTO gwa_eban WHERE matnr = p_gwa_mat_info_matnr-matnr AND wer
ks = p_gwa_mat_info_matnr-werks.
lv_count = lv_count + 1.
ENDLOOP.
ENDFORM.
" COUNT_OPEN_PR
*&---------------------------------------------------------------------*
*&
Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_0200 OUTPUT.
SET PF-STATUS 'STATUS_0200'.
* SET TITLEBAR 'xxx'.
IF go_alv1 IS INITIAL.
CREATE OBJECT go_container1
EXPORTING
container_name
= 'CUSTOM_CONTAINER1'
EXCEPTIONS
cntl_error
= 1
cntl_system_error
= 2
create_error
= 3
lifetime_error
= 4
lifetime_dynpro_dynpro_link = 5
OTHERS
= 6.
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 OBJECT go_alv1
EXPORTING
i_parent
= go_container1
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS
= 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*
PERFORM create_fcat_new CHANGING gt_fcat.
PERFORM create_layout CHANGING gwa_layout.
*
*
ENDMODULE.
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
ok_code_200 = ok_code.
CLEAR ok_code.
CASE ok_code_200.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
CALL METHOD go_alv1->free( ).
CLEAR go_alv1.
CALL METHOD go_container1->free( ).
CLEAR go_container1.
LEAVE TO SCREEN 100.
CLEAR ok_code_200.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*&
Form BUILD_FCAT_200
*&---------------------------------------------------------------------*
FORM build_fcat_200 USING hotspot_flag TYPE string
CHANGING gt_fcat_200 TYPE lvc_t_fcat. "#EC NEEDED
IF hotspot_flag = 'COUNT_PO'.
PERFORM fcat_200 USING : 'BUKRS'
de
'EBELN'
'EBELP'
'EKORG'
'WERKS'
'AUTLF'
text-047
text-048
text-049
text-050
text-051
''
''
''
''
''
''
''
''
''
''
'',
'',
'',
'',
'',
"
"
"
"
"
PO No.
PO Item
Pur. Org.
Plant
Delivery C
'MATNR'
'TXZ01'
'LIFNR'
'NAME1'
'ERNAM'
'AEDAT'
omplted
ode
n
e
e
.
ELSE. " hotspot_flag = 'COUNT_PR'.
PERFORM fcat_200 USING : 'BANFN'
'BNFPO'
'MATNR'
ode
'TXZ01'
n
'BSART'
'LIFNR'
e
*
'NAME1'
me
'KNTTP'
'PSTYP'
'EBELN'
'STATU'
'ERNAM'
'AEDAT'
signment
ory
*
.
ENDIF.
*
**
'COUNT_PR'
text-002 '' '' '',
**
'MATNR_HALB'
text-002 '' '' '',
**
'MATNR_FERT'
text-002 '' '' ''.
*
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
**
'MATNR'
text-002 '' '' '',
*
ENDFORM.
" BUILD_FCAT_200
*&---------------------------------------------------------------------*
*&
Form FCAT
*&---------------------------------------------------------------------*
FORM fcat_200 USING
value(f_field) TYPE any
value(f_desc) TYPE any
value(f_key) TYPE any
value(f_value) TYPE any
value(f_len) TYPE any.
ADD 1 TO lv_cntr.
gwa_fcat-col_pos
= lv_cntr.
gwa_fcat-row_pos
= 1.
gwa_fcat-fieldname = f_field.
* w_fcat-fieldname = f_desc.
" Does not work in OOPs
gwa_fcat-scrtext_l
= f_desc.
" field description has to be passed like
this for Column Heading, -- using OOPs
gwa_fcat-key
= f_key.
gwa_fcat-key_sel
= f_key.
gwa_fcat-fix_column = f_key.
gwa_fcat-hotspot
= f_value.
gwa_fcat-outputlen = f_len.
gwa_fcat-col_opt = 'X'.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
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.
CREATE OBJECT go_event.
SET HANDLER go_event->handle_hotspot_po FOR go_alv .
CALL METHOD go_alv2->free
EXCEPTIONS
cntl_error
= 1
cntl_system_error = 2
OTHERS
= 3.
CALL METHOD go_container2->free
EXCEPTIONS
cntl_error
= 1
cntl_system_error = 2
OTHERS
= 3.
ENDIF.
ENDMODULE.
" STATUS_0300 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0300 INPUT.
ok_code_300 = ok_code.
CLEAR ok_code.
CASE ok_code_300.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
CALL METHOD go_alv2->free( ).
CLEAR go_alv2.
CALL METHOD go_container2->free( ).
CLEAR go_container2.
LEAVE TO SCREEN 100.
CLEAR ok_code_300.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
*&
Form SAVE_LIST
*&---------------------------------------------------------------------*
FORM save_list .
*-- Export results to cluster table.
TRY.
CALL METHOD zcl_general_cluster_table=>export_pp
EXPORTING
im_utext
= p_utext
im_data_t
= gt_final
im_ekko_ekpo = gt_ekko_ekpo
im_eban
= gt_eban
im_lfa1
= gt_lfa1.
CATCH zcx_common_exceptions INTO cx_gen.
gv_error = cx_gen->get_message( ).
MESSAGE gv_error TYPE 'I'.
EXIT.
ENDTRY.
COMMIT WORK.
ENDFORM.
" SAVE_LIST
*******************************************************************************