Sunteți pe pagina 1din 6

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

*& Report ZPP_BOM11


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZPP_BOM11.
*EPORT ZPP_BOM11.
TYPES : begin of ty_tab,
matnr TYPE mara-matnr,
werks TYPE mast-werks,
stlaN TYPE mast-stlaN,
stlnr TYPE mast-stlnr,
stlal TYPE mast-stlal,
end of ty_tab.
data: it_tab TYPE STANDARD TABLE OF ty_tab,
wa_tab TYPE ty_tab.
TYPES : begin of ty_STB.
INCLUDE STRUCTURE STPOX.
TYPES: END OF TY_STB.
DATA : IT_STB TYPE STANDARD TABLE OF TY_STB,
WA_STB TYPE TY_STB,
fs_stb TYPE TY_STB.
TYPES : begin of ty_STB1,
matnr TYPE mara-matnr,
ojtxb TYPE ojtxp,
mtart TYPE mtart,
mnglg TYPE cs_e_mnglg,
meins TYPE meins,
idnrk TYPE matnr,
ojtxp TYPE ojtxp,
stlal TYPE mast-stlal, """
END OF TY_STB1.
DATA : IT_STB1 TYPE STANDARD TABLE OF TY_STB1,
WA_STB1 TYPE TY_STB1,
fs_stb1 TYPE ty_stb1.
types: begin of ty_final,
matnr TYPE mara-matnr,
ojtxb TYPE ojtxp,
mtart TYPE mtart,
mnglg TYPE cs_e_mnglg,
meins TYPE meins,
idnrk TYPE matnr,
ojtxp TYPE ojtxp,
stlal TYPE stlal, """ add
end of ty_final.
data : it_final TYPE STANDARD TABLE OF ty_final,
wa_final TYPE ty_final.
TYPE-POOLS: slis.
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_repid LIKE sy-repid.

* *Screen elements................................
selection-screen begin of block b1 with frame title text-001.
parameters:
p_matnr type mast-matnr default '' obligatory," Material Number
p_werks type mast-werks default '' obligatory, " Plant
p_stlan type mast-stlan default '1', "obligatory, " Alternative BOM
p_capid type rc29l-capid default 'PP01', "obligatory. " Application
p_stlal type mast-stlal default ' '. "obligatory, " Alternative BOM
selection-screen end of block b1.
START-OF-SELECTION.
perform bom_header.
perform Bom_child.
PERFORM Build_catalog.
perform display_output.
*&---------------------------------------------------------------------*
*& Form BOM_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BOM_HEADER .
*BREAK-POINT.
select matnr werks stlaN stLnr stlal from mast
INto CORRESPONDING FIELDS OF TABLE it_tab
where matnr = p_matnr and
werks = p_werks and
stlAn = p_stlAn and
stlal = p_stlal.""Chengal
clear wa_tab.
loop at it_tab INTO wa_tab.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP01'
DATUV = SY-DATUM
MKTLS = 'X'
MTNRV = wa_tab-matnr
STLAL = wa_tab-stlal
STLAN = wa_tab-stlan
STPST = 0
SVWVO = 'X'
WERKS = WA_TAB-WERKS
TABLES
STB = IT_STB
* MATCAT = IT_matcat
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9
.

IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
clear: wa_stb1 , wa_stb.
loop at it_stb INTO wa_stb.
wa_stb1-matnr = wa_tab-matnr.
wa_stb1-ojtxb = WA_STB-OJTXB.
wa_stb1-mtart = wa_stb-mtart.
wa_stb1-mnglg = wa_stb-mnglg.
wa_stb1-meins = wa_stb-meins.
wa_stb1-idnrk = wa_stb-idnrk.
wa_stb1-ojtxp = wa_stb-ojtxp.
wa_stb1-stlal = wa_stb-stlal. """
APPEND wa_stb1 to it_stb1.
ENDLOOP.
ENDLOOP.
ENDFORM. " BOM_HEADER
*&---------------------------------------------------------------------*
*& Form BOM_CHILD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BOM_CHILD .
clear fs_stb1.
if IT_STB1 is not initial.
loop at IT_STB1 into fs_stb1.
if sy-subrc = 0.
wa_final-matnr = fs_stb1-matnr.
wa_final-ojtxb = FS_STB1-OJTXB.
wa_final-mtart = fs_stb1-mtart.
wa_final-mnglg = fs_stb1-mnglg.
wa_final-meins = fs_stb1-meins.
wa_final-idnrk = fs_stb1-idnrk.
wa_final-ojtxp = fs_stb1-ojtxp.
wa_final-stlal = fs_stb1-stlal. """
append wa_final to it_final.
ENDIF.
endloop.
ENDIF.
clear wa_final.
loop at it_final INTO wa_final.
PERFORM RECURSIVE_BOM .
endloop.
ENDFORM. " BOM_CHILD
FORM RECURSIVE_BOM .

CLEAR : it_tab, IT_STB , IT_STB1.


clear : fs_stb,fs_stb1,wa_tab.
select matnr werks stlaN stLnr stlal from mast
INto CORRESPONDING FIELDS OF TABLE it_tab
where matnr = WA_FINAL-IDNRK and
werks = p_werks and
stlAn = p_stlAn." and
"stlal = p_stlal. "" Chengal
loop at it_tab INTO wa_tab.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP01'
DATUV = SY-DATUM
MKTLS = 'X'
MTNRV = wa_tab-matnr
STLAL = wa_tab-stlal
STLAN = wa_tab-stlan
STPST = 0
SVWVO = 'X'
WERKS = WA_TAB-WERKS
TABLES
STB = IT_STB
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
clear: wa_stb1, wa_stb.
loop at it_stb INTO wa_stb.
wa_stb1-matnr = wa_tab-matnr.
wa_stb1-ojtxb = WA_STB-OJTXB.
wa_stb1-mtart = wa_stb-mtart.
wa_stb1-mnglg = wa_stb-mnglg.
wa_stb1-meins = wa_stb-meins.
wa_stb1-idnrk = wa_stb-idnrk.
wa_stb1-ojtxp = wa_stb-ojtxp.
wa_stb1-stlal = wa_stb-stlal. """
APPEND wa_stb1 to it_stb1.
ENDLOOP.
loop at IT_STB1 into fs_stb1.
if sy-subrc = 0.
wa_final-matnr = fs_stb1-matnr.
wa_final-ojtxb = FS_STB1-OJTXB.
wa_final-mtart = fs_stb1-mtart.
wa_final-mnglg = fs_stb1-mnglg.
wa_final-meins = fs_stb1-meins.

wa_final-idnrk = fs_stb1-idnrk.
wa_final-ojtxp = fs_stb1-ojtxp.
wa_final-stlal = fs_stb1-stlal."
append wa_final to it_final.
ENDIF.
endloop.
ENDLOOP.
ENDFORM. " RECURSIVE_BOM
*&---------------------------------------------------------------------*
*& Form BUILD_CATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM BUILD_CATALOG .
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'FG/ Parant'.
fieldcatalog-col_pos = 0.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'OJTXB'.
fieldcatalog-seltext_m = 'FG/ Parant Desc'.
fieldcatalog-col_pos = 1.
fieldcatalog-outputlen = 40.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'IDNRK'.
fieldcatalog-seltext_m = 'Child'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'OJTXP'.
fieldcatalog-seltext_m = 'Child Desc'.
fieldcatalog-col_pos = 3.
fieldcatalog-outputlen = 40.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MTART'.
fieldcatalog-seltext_m = 'Material Type'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MNGLG'.
fieldcatalog-seltext_m = 'Quantity Required'.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Unit Of Measure'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

""
fieldcatalog-fieldname = 'STLAL'.
fieldcatalog-seltext_m = 'Alternate BOM '.
fieldcatalog-col_pos = 7.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
""
ENDFORM. " BUILD_CATALOG
*&---------------------------------------------------------------------*

*& Form DISPLAY_OUTPUT


*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_OUTPUT .
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
it_fieldcat = fieldcatalog[]
* i_callback_top_of_page = 'TOP-OF-PAGE'
I_SAVE = 'X'
* IS_VARIANT = g_variant
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " DISPLAY_OUTPUT

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