Puedes utilizar la siguiente función: CS_BOM_EXPL_MAT_V2
Te mando un ejemplo de un programa que te saca un listado con lo que pides.
REPORT z_bom.
TABLES: mard,stpo,stko,tc04,t024d,marc,ekbe,mara,ekko,makt.
DATA : capid LIKE tc04-capid,
datuv LIKE stko-datuv,
emeng LIKE stko-bmeng,
mehrs LIKE csdata-xfeld,
mtnrv LIKE mara-matnr,
stlal LIKE stko-stlal,
stpst LIKE stpox-stufe,
werks LIKE marc-werks.
DATA : istb LIKE stpox OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF ibod OCCURS 0,
stufe LIKE stpox-stufe,
idnrk LIKE stpox-idnrk,
bismt LIKE mara-bismt,
ojtxp LIKE stpox-ojtxp,
menge LIKE stpox-menge,
meins LIKE stpox-meins,
mnglg LIKE stpox-mnglg,
meins1 LIKE stpox-meins,
*lgort LIKE mard-lgort,
*labst LIKE mard-labst,
*insme LIKE mard-insme,
*umlme LIKE mard-umlme,
wesbs LIKE ekbe-wesbs,
dispo LIKE marc-dispo,
dsnam LIKE t024d-dsnam,
END OF ibod.
DATA : BEGIN OF imara OCCURS 0,
matnr LIKE mara-matnr,
bismt LIKE mara-bismt,
meins LIKE mara-meins,
END OF imara.
DATA: BEGIN OF idis OCCURS 0,
matnr LIKE marc-matnr,
dispo LIKE marc-dispo,
dsnam LIKE t024d-dsnam,
END OF idis.
DATA: BEGIN OF xtab2 OCCURS 10,
werks LIKE ekpo-werks,
matnr LIKE ekpo-matnr,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
wesbs LIKE ekbe-wesbs,
wesb2 LIKE ekbe-wesbs,
meinh LIKE ekpo-meins,
END OF xtab2.
DATA : total LIKE ekbe-wesbs.
*data: begin of i_werks occurs 0,
* werks like marc-werks,
* end of i_werks.
RANGES : i_werks FOR marc-werks.
DATA : BEGIN OF imard OCCURS 0,
matnr LIKE mard-matnr,
werks LIKE mard-werks,
lgort LIKE mard-lgort,
labst LIKE mard-labst,
insme LIKE mard-insme,
umlme LIKE mard-umlme,
END OF imard.
DATA : labst LIKE mard-labst,
insme LIKE mard-insme,
umlme LIKE mard-umlme.
SELECTION-SCREEN BEGIN OF BLOCK v1 WITH FRAME TITLE text-001.
PARAMETERS : p_werks LIKE marc-werks OBLIGATORY,
p_mtnrv LIKE mara-matnr OBLIGATORY,
p_stlal LIKE stko-stlal OBLIGATORY,
p_emeng LIKE stko-bmeng OBLIGATORY,
p_stpst LIKE stpox-stufe.
SELECTION-SCREEN END OF BLOCK v1.
capid = 'PP01'.
datuv = sy-datum.
emeng = p_emeng.
mehrs = 'X'.
mtnrv = p_mtnrv.
stlal = p_stlal.
stpst = p_stpst.
werks = p_werks.
i_werks-low = werks.
i_werks-sign = 'I'.
i_werks-option = 'EQ'.
APPEND i_werks.
CLEAR i_werks.
*skip.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
* FTREL = ' '
* ALEKZ = ' '
* ALTVO = ' '
* AUFSW = ' '
* AUMGB = ' '
* AUMNG = 0
* AUSKZ = ' '
* AMIND = ' '
* BAGRP = ' '
* BEIKZ = ' '
* BESSL = ' '
* BGIXO = ' '
* BREMS = ' '
capid = capid
* CHLST = ' '
* COSPR = ' '
* CUOBJ = 000000000000000
* CUOVS = 0
* CUOLS = ' '
datuv = datuv
* DELNL = ' '
* DRLDT = ' '
* EHNDL = ' '
emeng = emeng
* ERSKZ = ' '
* ERSSL = ' '
* FBSTP = ' '
* KNFBA = ' '
* KSBVO = ' '
* MBWLS = ' '
* MKTLS = 'X'
* MDMPS = ' '
mehrs = mehrs
* MKMAT = ' '
* MMAPS = ' '
* SALWW = ' '
* SPLWW = ' '
* MMORY = ' '
mtnrv = mtnrv
* NLINK = ' '
* POSTP = ' '
* RNDKZ = ' '
* RVREL = ' '
* SANFR = ' '
* SANIN = ' '
* SANKA = ' '
* SANKO = ' '
* SANVS = ' '
* SCHGT = ' '
* STKKZ = ' '
stlal = stlal
* STLAN = ' '
stpst = stpst
* SVWVO = 'X'
werks = werks
* NORVL = ' '
* MDNOT = ' '
* PANOT = ' '
* QVERW = ' '
* VERID = ' '
* VRSVO = 'X'
* IMPORTING
* TOPMAT =
* DSTST =
TABLES
stb = istb
* 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.
LOOP AT istb.
IF istb-postp = 'L'.
ibod-stufe = istb-stufe.
ibod-idnrk = istb-idnrk.
ibod-ojtxp = istb-ojtxp.
ibod-menge = istb-menge.
ibod-meins = istb-meins.
ibod-mnglg = istb-mnglg.
APPEND ibod.
CLEAR ibod.
ENDIF.
ENDLOOP.
SELECT matnr bismt meins INTO TABLE imara FROM mara FOR ALL ENTRIES IN ibod
WHERE matnr = ibod-idnrk.
SELECT a~matnr a~dispo b~dsnam INTO TABLE idis FROM marc AS a INNER JOIN t024d AS b
ON a~dispo = b~dispo FOR ALL ENTRIES IN ibod WHERE matnr = ibod-idnrk.
SELECT matnr werks lgort labst insme umlme INTO TABLE imard FROM mard
FOR ALL ENTRIES IN ibod WHERE matnr = ibod-idnrk AND werks EQ p_werks
.
LOOP AT ibod.
READ TABLE imara WITH KEY matnr = ibod-idnrk.
IF sy-subrc EQ 0.
ibod-bismt = imara-bismt.
ibod-meins1 = imara-meins.
ENDIF.
READ TABLE idis WITH KEY matnr = ibod-idnrk.
IF sy-subrc EQ 0.
ibod-dispo = idis-dispo.
ibod-dsnam = idis-dsnam.
ENDIF.
CALL FUNCTION 'MB_SELECT_GR_BLOCKED_STOCK'
EXPORTING
* X_KZVBR = ' '
x_matnr = ibod-idnrk
x_meins = ibod-meins
* X_KZWSO = ' '
* X_NOVBR = ' '
TABLES
xtab2 = xtab2
xwerks = i_werks
.
LOOP AT xtab2.
total = total + xtab2-wesbs.
ENDLOOP.
ibod-wesbs = total.
CLEAR xtab2[].
MODIFY ibod.
CLEAR : ibod,imara,idis,total,xtab2.
ENDLOOP.
CLEAR imard.
LOOP AT ibod.
WRITE :/03 sy-tabix LEFT-JUSTIFIED,12 ibod-stufe LEFT-JUSTIFIED,
18 ibod-idnrk LEFT-JUSTIFIED,37 ibod-bismt LEFT-JUSTIFIED ,57 ibod-ojtxp ,
99 ibod-menge LEFT-JUSTIFIED ,118 ibod-meins, 123 ibod-mnglg LEFT-JUSTIFIED,
142 ibod-meins1, 149 ibod-dispo, 157 ibod-dsnam.
*
WRITE :/10 sy-uline(90) .
WRITE :/10 '|',11 'Stg Loc',18 '|', 19 'Unres Use Stk',37 '|',39 'QAI Stk ',58 '|', 59 'Trans Loc Stk',
78 '|',79 'GR Blck Stk' , 99 '|'.
WRITE :/10 sy-uline(90) .
LOOP AT imard WHERE matnr EQ ibod-idnrk.
IF imard-labst GT 0 OR imard-insme GT 0 OR imard-umlme GT 0.
WRITE :/10 '|', 11 imard-lgort,18 '|', 19 imard-labst LEFT-JUSTIFIED ,37 '|',
39 imard-insme LEFT-JUSTIFIED,58 '|', 59 imard-umlme LEFT-JUSTIFIED,78 '|', 99 '|'.
ENDIF.
labst = labst + imard-labst.
insme = insme + imard-insme.
umlme = umlme + imard-umlme.
ENDLOOP.
WRITE :/10 sy-uline(90) .
WRITE :/10 '|', 11 'Total',18 '|', 19 labst LEFT-JUSTIFIED ,37 '|',39 insme LEFT-JUSTIFIED,
58 '|', 59 umlme LEFT-JUSTIFIED,78 '|',79 ibod-wesbs LEFT-JUSTIFIED, 99 '|'.
CLEAR: labst,insme,umlme,ibod-wesbs.
WRITE :/10 sy-uline(90) .
*
ENDLOOP.
ULINE.
TOP-OF-PAGE.
SELECT SINGLE maktx FROM makt INTO makt-maktx WHERE matnr EQ p_mtnrv.
WRITE :/40 'Bill Of Material - Stock Position'.
WRITE :/40 '*********************************'.
WRITE:/.
WRITE:/01 'Product Code : ', mtnrv,30 '(',makt-maktx,')', 'Plant : ',werks, 100 'Alternative BOM : ',stlal,125 'Req Qty : ',
emeng,160 'Level : ' , stpst.
ULINE.
WRITE:/ '|', 'Sl.No',9 '|',11 'Level','|', 23 'Item Code',36 '|',41 'Old Code',56 '|' ,
70 'Description',98 '|',104 'BOM Qty ',117 '|', 118 'UOM', 122 '|', 127 'Need Qty', 140 '|',
141 'UOM' ,146 '|',147 'MRP Code' ,156 '|', 160 'MRP Con Name',175 '|'.
Un saludo.