Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

CS_BOM_EXPL_MAT_V2

Former Member
0 Likes
1,111

Hi to all,

Can u please ,explain me how to use this Function module CS_BOM_EXPL_MAT_V2 .

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
730

it is used to explode the bom

just check the sample program


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 '|'.
*write:/ '|', 'No',6 '|'.

regards

shiba dutta

it is used to explode the bom

just check the sample program


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 '|'.
*write:/ '|', 'No',6 '|'.

regards

shiba dutta

2 REPLIES 2
Read only

Former Member
0 Likes
731

it is used to explode the bom

just check the sample program


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 '|'.
*write:/ '|', 'No',6 '|'.

regards

shiba dutta

Read only

Former Member
0 Likes
730

Consider following example for usage of this FM

CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

EXPORTING

CAPID = 'PP01'

DATUV = '20060828'

EHNDL = '1'

MKTLS = 'X'

MDMPS = ' '

MEHRS = 'X'

MMORY = '1'

  • mtnrv = '000000000082999998'

MTNRV = T_MAST-MATNR

STLAL = '01'

STLAN = ' '

SVWVO = 'X'

  • werks = '4766'

WERKS = T_MAST-WERKS

VRSVO = 'X'

TABLES

STB = T_STB.