0% found this document useful (0 votes)
115 views6 pages

BOM Report for SAP Developers

The document defines the data types and tables needed to retrieve a bill of materials (BOM) structure from an SAP system. It performs the following steps: 1) retrieves the header-level BOM data for the specified material and stores it in a table, 2) retrieves the child-level BOM data and recursively retrieves any subordinate levels, and 3) builds an ALV catalog and displays the complete BOM structure in an output grid.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
115 views6 pages

BOM Report for SAP Developers

The document defines the data types and tables needed to retrieve a bill of materials (BOM) structure from an SAP system. It performs the following steps: 1) retrieves the header-level BOM data for the specified material and stores it in a table, 2) retrieves the child-level BOM data and recursively retrieves any subordinate levels, and 3) builds an ALV catalog and displays the complete BOM structure in an output grid.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 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

You might also like