*&---------------------------------------------------------------------* *& Report ZPP_RAW_MAT *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zpp_raw_mat LINE-SIZE 180 NO STANDARD PAGE HEADING LINE-COUNT 058(001).
TYPE-POOLS : slis. TABLES : mast. TYPES : BEGIN OF ty_mast, matnr TYPE mast-matnr, "Main Material (Parent) werks TYPE mast-werks, stlan TYPE mast-stlan, stlnr TYPE mast-stlnr, stlal TYPE mast-stlal, maktx TYPE makt-maktx, END OF ty_mast. TYPES : BEGIN OF ty_stko, stlnr TYPE stko-stlnr, stlal TYPE stko-stlal, datuv TYPE stko-datuv, bmein TYPE stko-bmein, bmeng TYPE stko-bmeng, * stlst TYPE stko-stlst, END OF ty_stko. TYPES : BEGIN OF ty_stpo, stlnr TYPE stpo-stlnr, stlkn TYPE stpo-stlkn, datuv TYPE stpo-datuv, idnrk TYPE stpo-idnrk, "Material Component (Child) posnr TYPE stpo-posnr, meins TYPE stpo-meins, menge TYPE stpo-menge, "Bom Material Req Qty. END OF ty_stpo. TYPES : BEGIN OF ty_stas, stlnr TYPE stas-stlnr, stlal TYPE stas-stlal, stlkn TYPE stas-stlkn, END OF ty_stas. *TYPES : BEGIN OF ty_makt, * matnr TYPE makt-matnr, * maktx TYPE makt-maktx, * END OF ty_makt. TYPES : BEGIN OF ty_final, matnr(18) TYPE c,"mast-matnr, "Main Material (Parent) werks TYPE mast-werks, stlan TYPE mast-stlan, * stlnr TYPE mast-stlnr, stlal(2) TYPE c, "mast-stlal, stlnr(8) TYPE c, "cstko-stlnr,
* * * * *
stlal TYPE stko-stlal, datuv TYPE stko-datuv, bmein TYPE stko-bmein, bmeng TYPE stko-bmeng, matnr TYPE makt-matnr, maktx TYPE makt-maktx, stlnr TYPE stpo-stlnr, datuv TYPE stpo-datuv, idnrk TYPE stpo-idnrk, "Material Component (Child) posnr TYPE stpo-posnr, meins TYPE stpo-meins, menge TYPE stpo-menge, "Bom Material Req Qty.
*
matnr TYPE makt-matnr, maktx TYPE makt-maktx, total TYPE p DECIMALS 3, * maktx TYPE makt-maktx, END OF ty_final. DATA : it_mast TYPE TABLE OF ty_mast, wa_mast LIKE LINE OF it_mast. *DATA : it_makt TYPE TABLE OF ty_makt, wa_makt LIKE LINE OF it_makt. DATA : it_stko TYPE TABLE OF ty_stko, wa_stko LIKE LINE OF it_stko. DATA : it_stpo TYPE TABLE OF ty_stpo, wa_stpo LIKE LINE OF it_stpo, it_stas TYPE TABLE OF ty_stas, wa_stas LIKE LINE OF it_stas, gt_final TYPE TABLE OF ty_final, gw_final TYPE ty_final, gt_fcat TYPE slis_t_fieldcat_alv, gw_fcat TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text-001. PARAMETERS :
p_werks TYPE mast-werks.
SELECT-OPTIONS: s_matnr FOR mast-matnr.
SELECTION-SCREEN END OF BLOCK blk.
PERFORM fetch_data_retreive. *break pwc_dev. PERFORM loop_data. *PERFORM validation. *PERFORM replace. IF gt_final[] IS NOT INITIAL. PERFORM f_fill_fcat . PERFORM f_display_alv .
ELSE . MESSAGE 'List contains no data' TYPE 'I'. ENDIF. PERFORM plant_validation. *&---------------------------------------------------------------------* *& Form FETCH_DATA_RETREIVE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM fetch_data_retreive . SELECT mast~matnr mast~werks mast~stlan mast~stlnr mast~stlal makt~maktx INTO TABLE it_mast FROM mast INNER JOIN makt ON mast~matnr = makt~matnr WHERE mast~matnr IN s_matnr AND werks = p_werks AND stlan = '1,2,3,4,5,6,7,8,9,10,11'. IF NOT it_mast IS INITIAL. SELECT stlnr stlal datuv bmein bmeng FROM stko INTO TABLE it_stko FOR ALL ENTRIES IN it_mast WHERE stlnr = it_mast-stlnr AND stlal = it_mast-stlal . SELECT stlnr stlal stlkn FROM stas INTO TABLE it_stas FOR ALL ENTRIES IN it_mast WHERE stlnr = it_mast-stlnr AND stlal = it_mast-stlal . ENDIF. IF NOT it_stko IS INITIAL. SELECT stlnr stlkn datuv idnrk posnr meins menge FROM stpo INTO TABLE it_stpo FOR ALL ENTRIES IN it_mast WHERE stlnr = it_mast-stlnr. ENDIF. * * IF NOT it_stpo IS INITIAL. * SELECT * matnr * maktx * FROM makt * INTO TABLE it_makt * FOR ALL ENTRIES IN it_mast * WHERE matnr = it_mast-matnr AND * spras = 'EN'. * ENDIF. ENDFORM. " FETCH_DATA_RETREIVE
*&---------------------------------------------------------------------* *& Form LOOP_DATA *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM loop_data . REFRESH gt_final. LOOP AT it_mast INTO wa_mast. *Arrange in ascending order SORT it_stpo BY idnrk. LOOP AT it_stas INTO wa_stas WHERE stlnr = wa_mast-stlnr AND stlal = wa_mast-stlal. MOVE: wa_mast-matnr TO gw_final-matnr, wa_mast-werks TO gw_final-werks, wa_mast-stlal TO gw_final-stlal, wa_mast-maktx TO gw_final-maktx. READ TABLE it_stko INTO wa_stko WITH KEY stlnr = wa_mast-stlnr stlal = wa_mast-stlal. IF sy-subrc = 0. MOVE: wa_stko-stlnr TO gw_final-stlnr, wa_stko-stlal TO gw_final-stlal, wa_stko-bmeng TO gw_final-bmeng. ENDIF. READ TABLE it_stpo INTO wa_stpo WITH KEY stlkn = wa_stas-stlkn. IF sy-subrc = 0. MOVE: wa_stpo-idnrk TO gw_final-idnrk, wa_stpo-menge TO gw_final-menge. APPEND gw_final TO gt_final. CLEAR gw_final. ENDIF. ENDLOOP. ENDLOOP. LOOP AT gt_final INTO gw_final. MODIFY gt_final FROM gw_final TRANSPORTING matnr WHERE stlnr = wa_stpo-stlnr. ENDLOOP.
ENDFORM.
" LOOP_DATA
*&---------------------------------------------------------------------* *& Form f_fill_fcat
*&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f_fill_fcat . gw_fcat-col_pos = 1. gw_fcat-fieldname = 'STLNR'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'BOM No.'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. gw_fcat-col_pos = 2. gw_fcat-fieldname = 'IDNRK'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'BOM Component'. gw_fcat-outputlen = 10. gw_fcat-emphasize = 'X'. gw_fcat-key = 'X'. APPEND gw_fcat TO gt_fcat.
* * * * *
CLEAR gw_fcat. gw_fcat-col_pos = 3. gw_fcat-fieldname = 'MENGE'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'Component Quantity'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. gw_fcat-col_pos = 4. gw_fcat-fieldname = 'MATNR'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'Material No.'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. gw_fcat-col_pos = 5. gw_fcat-fieldname = 'WERKS'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'PLANT'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. gw_fcat-col_pos = 6. gw_fcat-fieldname = 'STLAL'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'Alternative Bom.'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. gw_fcat-col_pos = 7. gw_fcat-fieldname = 'BMENG'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'Base Quantity'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. gw_fcat-col_pos = 8. gw_fcat-fieldname = 'TOTAL'. gw_fcat-tabname = 'GT_FINAL'. gw_fcat-seltext_m = 'TOTAL Quantity'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. gw_fcat-col_pos = 9. gw_fcat-fieldname = 'MAKTX'. gw_fcat-tabname = 'GT_FINAL'.
gw_fcat-seltext_m = 'Material Desc.'. APPEND gw_fcat TO gt_fcat. CLEAR gw_fcat. ENDFORM. "f_fill_fcat *&---------------------------------------------------------------------* *& Form f_display_alv *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f_display_alv . DATA:lv_repid TYPE sy-repid. lv_repid = sy-cprog. DATA: w_layout TYPE slis_layout_alv. w_layout-colwidth_optimize = 'X'. w_layout-zebra = 'X'. * * * *
gw_sort-fieldname = 'VBELN'. gw_sort-tabname = 'GW_FINAL'. gw_sort-subtot = 'X'. APPEND gw_sort TO gt_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-cprog i_callback_user_command = 'USER_COMMAND' * i_callback_top_of_page = 'TOP_OF_PAGE' is_layout = w_layout it_fieldcat = gt_fcat * it_sort = gt_sort TABLES t_outtab = gt_final. ENDFORM. "f_display_alv *&---------------------------------------------------------------------* *& Form PLANT_VALIDATION *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM plant_validation . DATA : lv_plant TYPE mast-werks. SELECT SINGLE werks FROM mast INTO lv_plant WHERE werks = p_werks. IF sy-subrc NE 0. MESSAGE 'Enter a Valid Plant code' TYPE 'I'. RETURN. ENDIF. ENDFORM. "PLANT_VALIDATION " PLANT_VALIDATION *&---------------------------------------------------------------------* *& Form VALIDATION *&---------------------------------------------------------------------*
* text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* *FORM validation . * * DATA:lt_stkostpo TYPE gty_t_vbrkvbrp, * lw_vbrkvbrp TYPE gty_vbrkvbrp. * *ENDFORM. " VALIDATION