Sunteți pe pagina 1din 7

*&---------------------------------------------------------------------*

*& 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

S-ar putea să vă placă și