Documente Academic
Documente Profesional
Documente Cultură
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,
*
*
*
*
*
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_sort-fieldname = 'VBELN'.
gw_sort-tabname = 'GW_FINAL'.
gw_sort-subtot = 'X'.
APPEND gw_sort TO gt_sort.
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
*FORM validation .
*
* DATA:lt_stkostpo TYPE gty_t_vbrkvbrp,
*
lw_vbrkvbrp TYPE gty_vbrkvbrp.
*
*ENDFORM.
" VALIDATION