In bom explosion afterthat i ll get routing ,workcenter.plnnr ,plnty = n

Hi Experts
        my requirement is to explode the bom like cs12 tcode in pp
after that we ll find which component is having routing ,then we pick the
workcenter if the material procurement type is E OR X.
HERE I AM USING MARC,MAPL,PLPO,CRHD.
1.USING CS_BOM_EXPL_MAT_V2 TO EXPLODE THE BOM
MARC      IF BESKZ = E OR
     ===>  BESKZ = X     ==> MAPL
MATNR                        MATNR
WERKS                        PLNTY
BESKZ                        PLNNR
                             PLPO
                PLNTY
                 PLNNR
                VORNR
                 ARBID--CRHD
                 LTXA1  OBJID
                VGE01  ARPBL
                VGW01
               VGW02
                WERKS
HERE WE USED TO GET BESKZ = X OR E
AFTER THAT COMAPARE MARC-MATNR = MATNR & ISTPO-IDNRK
MAPL AND PLPO HERE WE USED TO RELATE BETWEEN PLNNR
                                       PLNTY = 'N'
109013030 IS THE HEADER MATERIAL HAVE THE FOLLOWING BOM
.1  610001440
..2 L021000260
.1  912500076
HERE .1 - LEVEL 1,..2 LEVEL 2.
USING CA03 TO GIVE THE MATERIAL WE GOT THE OPERATIONS AND WORKCENTER
IN TABLE MAPL , GIVE THE MATNR AND PLANT ,PLNNR
AFTER THAT I RELATE THE PLNNR TO PLPO
FETCH ALL THE RELEVANT FIELDS FIVE OPERATIONS CAME
BUT IN CA03 THE SAMEMATEIALS GIVE ONLY 3 OPERATIONS ONLY CAME
how can i sove this issue.
very urgent
thanks in advance
Regards
ds

HI
     MARC ,MAPL only having the plnnr,plnty
not having vornr,stues
plpo is having all the fields
how can i pass plnnr with vornr,stues,vornr to plpo
Regards
ds

Similar Messages

  • After getting the bom ,find routing,workcenter,how to get component routing

    hi experts.
              the requirement is find the find the routing details of the given materials.
    input is
    material using select-options.
      plant
    out put
    1.operator
    2.material
    3.material description
    4.workcenter
    5.vendor
    6.operation description
    7.uom
    8.qty
    9.uom
    10.setuptime
    11.processingtime
    12.deliverytime
    example.
           materials t4595959----this materials bom is give below
           3939393----
    procurement type is f
           3393939 -
    procurement type is e
           3939393------- procurement type is x
        i explanied what i tried.
       tables : marc,mapl,plpo,crhd,eord,eina,eine.
        1. using cs_com_expl_mat_v2  to get the bom explosion
       2. after got the materials with bom
       <b>MARC </b>                                  <b>MAPL</b>                  MATNR                                             MATNR               
      WERKS                1                         WERKS
    BESKZ        =======> E OR x          PLNTY
                                                             PLNNR
                2                                              3
    <b>MAPL</b> =====>  <b> PLPO</b>      =====> CRHD
                             PLNTY                                  OBJID
                            PLNNR                                   ARBPL
                           VORNR
                            ARBID
                            LTXA1
                            VGE01
                            VGW01
                             VGW02
    <b>                   1                         2                     3
    MARC</b>      ==>     <b>EORD</b> =>   <b>EINA</b> =>     EINE
    BESKZ == 'F'              MATNR             MATNR          INFNR
                                       LIFNR               LIFNR             APLFZ
                                      FLIFN = 'X'          INFNR
    followed this method to explode the bom and got the operation.
    but its only fetch the header materials operation ,not component operaion
    h we get the opeations of the component
    thanks in advance
    Regards
    ds

    hI,
           Yes i checked the debugging mode ,its only fecthed the header materials
    but not component materials,
    i here give the query for ur review ,pl give me a solution
    START-OF-SELECTION.
      CLEAR ISTPO. REFRESH ISTPO.
      LOOP AT ITAB.
      CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
          EXPORTING
            CAPID                 = 'PP01'
            MEHRS                 = 'X'
            MMAPS                 = ' '
            MDMPS                 =  ' '
         BREMS                  = 'X'
         DISMM                 = ' '
         LIFNR                 = ' '
         WEBAZ                 = ' '
            DATUV                 = SY-DATUM
            MTNRV                 = ITAB-MATNR
            WERKS                 = P_WERKS
            EMENG                 = '1'
            STKKZ                 = ' '
            FBSTP                 = ' '
            FTREL                 = ' '
          IMPORTING
            TOPMAT                = W_TOPMAT
           DSTST                 = DSTST
          TABLES
            STB                   = ISTPO
            MATCAT                = 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
            OTHERS                = 8.
      WRITE: / W_TOPMAT-MATNR UNDER TEXT-H00 COLOR COL_HEADING,
               W_TOPMAT-MAKTX UNDER TEXT-H01 COLOR COL_HEADING.
        SELECT MATNR WERKS OBJID BESKZ FROM MARC INTO CORRESPONDING FIELDS OF TABLE IT_ITAB_IDEL
      WHERE MATNR = ITAB-MATNR  AND BESKZ = 'X' OR BESKZ = 'E' OR BESKZ = 'F'.
    SELECT MATNR WERKS PLNTY PLNNR LIFNR FROM MAPL INTO CORRESPONDING FIELDS OF TABLE IT_MAPL_IDEL
                                                WHERE  MATNR = ITAB-MATNR AND
                                                         WERKS = 'IN01' .
    SELECT PLNTY PLNNR ZAEHL VORNR  ARBID OBJTY LTXA1 VGE01 VGW01 VGW02 PLIFZ FROM PLPO INTO CORRESPONDING FIELDS OF TABLE IT_PLPO_IDEL
                                            FOR ALL ENTRIES IN IT_MAPL_IDEL
                                             WHERE PLNTY = IT_MAPL_IDEL-PLNTY AND
                                                  PLNNR = IT_MAPL_IDEL-PLNNR AND
                                                   WERKS = 'IN01' AND ARBID <> 0.
        SELECT OBJTY OBJID ARBPL FROM CRHD INTO CORRESPONDING FIELDS OF TABLE IT_CRHD_IDEL
                                                              FOR ALL ENTRIES IN IT_PLPO_IDEL
                                                              WHERE OBJID = IT_PLPO_IDEL-ARBID.
    LOOP AT ISTPO.
      IT_FINAL_IDEL-POSNR  = ISTPO-POSNR.
      IT_FINAL_IDEL-IDNRK  = ISTPO-IDNRK.
      IT_FINAL_IDEL-OJTXP  = ISTPO-OJTXP.
      IT_FINAL_IDEL-MENGE  = ISTPO-MENGE.
      IT_FINAL_IDEL-MEINS  = ISTPO-MEINS.
    LOOP AT IT_PLPO_IDEL.
        IT_FINAL_IDEL-VORNR = IT_PLPO_IDEL-VORNR.
        IT_FINAL_IDEL-ARBID = IT_PLPO_IDEL-ARBID.
        IT_FINAL_IDEL-OBJTY = IT_PLPO_IDEL-OBJTY.
        IT_FINAL_IDEL-LTXA1 = IT_PLPO_IDEL-LTXA1.
        IT_FINAL_IDEL-VGE01 = IT_PLPO_IDEL-VGE01.
        IT_FINAL_IDEL-VGW01 = IT_PLPO_IDEL-VGW01.
        IT_FINAL_IDEL-VGW02 = IT_PLPO_IDEL-VGW02.
        READ TABLE IT_CRHD_IDEL WITH KEY OBJID = IT_PLPO_IDEL-ARBID.
        IT_FINAL_IDEL-ARBPL = IT_CRHD_IDEL-ARBPL.
        APPEND IT_FINAL_IDEL.
        CLEAR : IT_FINAL_IDEL,IT_PLPO_IDEL,IT_CRHD_IDEL,ISTPO.
      ENDLOOP.
       ENDLOOP.

  • Routing details with bom explosion

    hi friends
    i have developend the report for pp,in routing details
    how to get the details of bom explosion with workcenter and routing operations
    If procurement type is E or X, system has to check the routing through CA03.
    If procurement type if F, leave this field as blank and then fetch the relevant vendor
    CS_BOM_EXPL_MAT_V2 - using this fm to get the bom explosion
    after that how to relate between workcenter and routing details.
    input is material number
    plant
    1.operator
    2.material - i got through fm
    3.material description i got through fm
    4.workcenter
    5.vendor
    6.operation description
    7.uom -i got through fm
    8.qty - i got through fm
    9.uom
    10.setuptime
    11.processingtime
    12.deliverytime
    code for review.
    TABLES : MAST
    DATA: BEGIN OF ISTPO OCCURS 1000.
    INCLUDE STRUCTURE STPOX.
    DATA: END OF ISTPO.
    DATA: BEGIN OF MATCAT OCCURS 1000.
    INCLUDE STRUCTURE CSCMAT.
    DATA: END OF MATCAT.
    DATA: W_TOPMAT LIKE CSTMAT.
    SELECT-OPTIONS : P_MATNR FOR MAST-MATNR.
    PARAMETERS : P_WERKS TYPE MAST-WERKS.
    DATA : BEGIN OF ITAB OCCURS 0,
    MATNR LIKE MAST-MATNR,
    WERKS LIKE MAST-WERKS,
    END OF ITAB.
    DATA: IT_STB LIKE ISTPO OCCURS 0 WITH HEADER LINE.
    data : istpotemp like stpox occurs 0 with header line.
    data : istpofinal like stpox occurs 0 with header line.
    START-OF-SELECTION.
    CLEAR ISTPO. REFRESH ISTPO.
    SELECT MATNR WERKS FROM MAST INTO TABLE ITAB
    WHERE MATNR IN P_MATNR AND WERKS = P_WERKS.
    LOOP AT ITAB.
    CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
    EXPORTING
    CAPID = 'PP01'
    MEHRS = 'X'
    MMAPS = ' '
    MDMPS = ' '
    BREMS = 'X'
    DISMM = ' '
    LIFNR = ' '
    WEBAZ = ' '
    DATUV = SY-DATUM
    MTNRV = ITAB-MATNR
    WERKS = P_WERKS
    EMENG = '1'
    STKKZ = ' '
    FBSTP = ' '
    FTREL = ' '
    IMPORTING
    TOPMAT = W_TOPMAT
    TABLES
    STB = ISTPO
    MATCAT = 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
    OTHERS = 8.
    WRITE: / W_TOPMAT-MATNR UNDER TEXT-H00 COLOR COL_HEADING,
    W_TOPMAT-MAKTX UNDER TEXT-H01 COLOR COL_HEADING.
    sort istpo by index descending.
    loop at istpo.
    WRITE :/ ISTPO-POSNR,
    ISTPO-IDNRK,
    ISTPO-OJTXP,
    ISTPO-MENGE,
    ISTPO-MEINS,
    endloop.
    refresh istpo.
    endloop.

    HI,
            i got the workcenter also,but i need to classify
    if the material procurment type is E OR X CHECK FOR routing details
    or else if its F THEN pick the vendor and uom -PLPO-VGE01,PLPO-PLIFZ.
    how shall i implement this
    Regards
    ds

  • Date of BOM Explosion/Routing in the production order

    Dear gurus,
    i would like have the Date of BOM Explosion/Routing in the production order same the "Basic start date" .
    I setting the value 1 = Basic start DATE  in the customizing transaction OPPQ and OPPR but the system calculate this date wrong.
    Are the the other setting for this necessity ?
    Thanks a lot
    Daniele
    PP TEAM

    Dear Toto,
    The standard procedure is that the system first checks whether a BOM explosion number exists for the BOM. If one does exist,
    the BOM is exploded using the fixed key date contained in the BOM explosion number. If a BOM explosion number does not exist,
    the BOM is exploded with the order start date.
    Check the setting in OPPQ for BOM explosion.
    Regards
    S Mangalraj

  • How to use the select option to get the multiple bom explosion

    hi friends,
              i have completed the bom exp using parameters to get one material
    input,but i need to adopt select option to give from and to materials
    i ll gives from and to materials with description and bom deails
    i here gave the coding also, pl give me a suggestion how to adpot the select
    optoins instead of parameters ,very urgent
    REPORT PP_BOM_EXPLOSION.
    tables :mara,marc,stpo.
    TYPE-POOLS : SLIS.
    *parameters: p_werks like t001w-werks obligatory.
    SELECT-OPTIONS : p_matnr FOR mara-matnr obligatory.
    **select-options : p_matnr for mara-matnr obligatory.
    PARAMETERS : P_WERKS LIKE T001W-WERKS OBLIGATORY,
            P_MATNR LIKE MARA-MATNR OBLIGATORY.
    *parameters: p_werks like marc-werks obligatory,
    *p_matnr like marc-matnr obligatory.
    constants c_x value 'X'.
    data: begin of it_comp occurs 0,
    matnr like mara-matnr,
    maktl like makt-maktx,
    idnrk like stpox-idnrk,
    ojtxp like stpox-ojtxp,
    menge like stpox-menge,
    meins like stpox-meins,
    matkl like stpox-matmk,
    end of it_comp.
    data : topmat like cstmat.
    data: w_topmat like cstmat.
    DATA : IT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE.
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA : WA_FIELDCAT_LN LIKE LINE OF IT_FIELDCAT.
    DATA : IT_EVENTCAT  TYPE SLIS_T_EVENT.
    DATA : WA_EVENTCAT_LN  LIKE LINE OF IT_EVENTCAT.
    DATA : IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: S_COL_POS TYPE I.
    start-of-selection.
    perform explode_assembly.
    PERFORM BUILD_FIELDCATALOG.
    PERFORM DATA_DISPLAY.
    *end-of-selection.
    *perform write_report.
    *top-of-page.
    *perform print_header.
    *form print_header.
    *write: /(18) 'Component'(h00),
    *(40) 'Description'(h01),
    *'Mat.Group'(h02),
    *(18) 'Quantity'(h03).
    *uline.
    *endform.
    *form write_report.
    *write: / w_topmat-matnr under text-h00 color col_heading,
    *w_topmat-maktx under text-h01 color col_heading.
    *loop at it_comp.
    *write: /
    *it_comp-idnrk under text-h00,
    *it_comp-ojtxp under text-h01,
    *it_comp-matkl under text-h02,
    *it_comp-menge unit it_comp-meins under text-h03,
    *it_comp-meins.
    *endloop.
    *uline.
    *endform.
    form explode_assembly.
    data: it_stb like stpox occurs 0 with header line,
    it_stb2 like stpox occurs 0 with header line,
    it_stb3 like stpox occurs 0 with header line,
    w_msg(255) type c.
    SELECT MATNR FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA
                               WHERE MATNR IN P_MATNR.
    Explode highest level:
    *LOOP AT IT_MARA.
    call function 'CS_BOM_EXPL_MAT_V2'
    exporting
    auskz = c_x
    capid = 'PP01'
    cuols = c_x
    datuv = sy-datum
    knfba = c_x
    ksbvo = c_x
    mbwls = c_x
    mdmps = c_x
    BGIXO = c_x
    MKMAT = c_x
    MMAPS = c_x
    FBSTP = c_x
    FTREL = c_x
    mtnrv = P_MATNR
    werks = p_werks
    importing
    topmat = w_topmat
    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
    into w_msg.
    *write: / w_msg.
    exit.
    endif.
    Don't process documents
    delete it_stb where idnrk is initial.
    Don't process valid from furure:
    delete it_stb where datuv >= sy-datum.
    Explode phantom assemblies up to last level
    *do.
    it_stb2[] = it_stb[].
    *delete it_stb2 where dumps is initial.
    *if it_stb2[] is initial.
    *exit.
    *endif.
    *delete it_stb where not dumps is initial.
    delete it_stb where VPRSV <> 'S' OR MMSTA = '61'.
    loop at it_stb2.
    call function 'CS_BOM_EXPL_MAT_V2'
    exporting
    capid = 'PP01'
    auskz = c_x
    cuols = c_x
    datuv = sy-datum
    knfba = c_x
    ksbvo = c_x
    mbwls = c_x
    mdmps = c_x
    FBSTP = c_x
    FTREL = c_x
    mtnrv = it_stb2-idnrk
    werks = p_werks
    tables
    stb = it_stb3
    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
    into w_msg.
    *write: / w_msg.
    else.
    delete it_stb3 where idnrk is initial.
    delete it_Stb3 where sobsl = 50.
    loop at it_stb3 .
    multiply it_stb3-menge by it_stb2-menge.
    modify it_stb3 transporting menge.
    endloop.
    append lines of it_stb3 to it_stb.
    endif.
    *ENDLOOP.
    endloop.
    *enddo.
    Build table of components collecting the same components from
    all levels
    loop at it_stb.
    it_comp-matkl = it_stb-matmk.
    it_comp-idnrk = it_stb-idnrk.
    it_comp-ojtxp = it_stb-ojtxp.
    it_comp-menge = it_stb-menge.
      CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
        EXPORTING
        INPUT                = IT_STB-MEINS
        LANGUAGE             = SY-LANGU
        IMPORTING
      LONG_TEXT            =
       OUTPUT               = IT_STB-MEINS
      SHORT_TEXT           =
    EXCEPTIONS
       UNIT_NOT_FOUND       = 1
       OTHERS               = 2
        IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    it_comp-meins = it_stb-meins.
    collect it_comp.
    clear it_comp.
    endloop.
    *READ TABLE IT_COMP INDEX 1.
    *IF SY-SUBRC = 0.
    IT_COMP-MATNR = w_topmat-matnr.
    IT_COMP-MAKTL = w_topmat-maktx.
    INSERT IT_COMP index 1.
    *ENDIF.
    ENDFORM.
    FORM TO APPEND DATA INTO ALV FORM
    FORM BUILD_FIELDCATALOG.
    PERFORM BUILD_FIELDCAT USING 'MATKL' 'Component'.
    PERFORM BUILD_FIELDCAT USING 'MATKL' 'Component'.
    *loop at it_comp.
       PERFORM BUILD_FIELDCAT USING 'MATNR' 'Material'.
      PERFORM BUILD_FIELDCAT USING 'MAKTL' 'Material Description'.
      PERFORM BUILD_FIELDCAT USING 'IDNRK' 'Component'.
      PERFORM BUILD_FIELDCAT USING 'OJTXP' 'Description'.
      PERFORM BUILD_FIELDCAT USING 'MATKL' 'Material Group'.
      PERFORM BUILD_FIELDCAT USING 'MENGE'  'Quantity'.
      PERFORM BUILD_FIELDCAT USING 'MEINS' 'Unit Of MEASUREMENT'.
    *endloop.
    ENDFORM.
    FORM TO BUILD IN FIELD CATALOG FOR ALV FORM
    FORM BUILD_FIELDCAT USING L_FIELDNAME LIKE DD03L-FIELDNAME S_TEXT LIKE DD03P-SCRTEXT_M.
      CLEAR WA_FIELDCAT_LN.
      ADD 1 TO S_COL_POS.
      WA_FIELDCAT_LN-REF_TABNAME  = 'IT_COMP'.
      WA_FIELDCAT_LN-FIELDNAME    = L_FIELDNAME.
      WA_FIELDCAT_LN-SELTEXT_M    = S_TEXT.
      WA_FIELDCAT_LN-COL_POS      = S_COL_POS.
      WA_FIELDCAT_LN-QFIELDNAME   = SPACE.
      WA_FIELDCAT_LN-HOTSPOT      = SPACE.
      WA_FIELDCAT_LN-JUST         = 'R'.
      APPEND WA_FIELDCAT_LN TO IT_FIELDCAT.
    ENDFORM.
    FORM TO BUILD IN FIELD CATALOG FOR ALV FORM
    FORM DATA_DISPLAY.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
       I_GRID_TITLE                      = TEXT-001
      I_GRID_SETTINGS                   =
      IS_LAYOUT                         =
       IT_FIELDCAT                       = IT_FIELDCAT
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = IT_COMP
       EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    endform.
    Thanks in advance
                                                                                    Regards
    senthilkumar D

    tables :mara,marc,stpo.
    parameters: p_werks like t001w-werks obligatory.
    *p_matnr like mara-matnr obligatory.
    *select-options : p_matnr for mara-matnr obligatory.
    select-options : P_matnr for mara-matnr.
    *parameters: p_werks like marc-werks obligatory,
    *p_matnr like marc-matnr obligatory.
    constants c_x value 'X'.
    data: begin of it_comp occurs 0,
    idnrk like stpox-idnrk,
    ojtxp like stpox-ojtxp,
    menge like stpox-menge,
    meins like stpox-meins,
    matkl like stpox-matmk,
    end of it_comp.
    data: w_topmat like cstmat.
    data : begin of itab occurs 0,
            matnr like mara-matnr,
            end of itab.
    *data : itab type table of mara with header line.
    start-of-selection.
    perform explode_assembly.
    end-of-selection.
    perform write_report.
    top-of-page.
    perform print_header.
    form print_header.
    write: /(18) 'Component'(h00),
    (40) 'Description'(h01),
    'Mat.Group'(h02),
    (18) 'Quantity'(h03).
    uline.
    endform.
    form write_report.
    write: / w_topmat-matnr under text-h00 color col_heading,
    w_topmat-maktx under text-h01 color col_heading.
    loop at it_comp.
    write: /
    it_comp-idnrk under text-h00,
    it_comp-ojtxp under text-h01,
    it_comp-matkl under text-h02,
    it_comp-menge unit it_comp-meins under text-h03,
    it_comp-meins.
    endloop.
    uline.
    endform.
    form explode_assembly.
    data: it_stb like stpox occurs 0 with header line,
    it_stb2 like stpox occurs 0 with header line,
    it_stb3 like stpox occurs 0 with header line,
    w_msg(255) type c.
    select matnr from mara into table itab where matnr  between p_matnr-low and p_matnr-high.
    loop at p_matnr.
      itab-matnr = p_matnr-low.
       append itab.
       itab-matnr = p_matnr-high.
       append itab.
       clear itab.
       endloop.
    Explode highest level:
    loop at itab.
    call function 'CS_BOM_EXPL_MAT_V2'
    exporting
    auskz = c_x
    capid = 'PP01'
    cuols = c_x
    datuv = sy-datum
    knfba = c_x
    ksbvo = c_x
    mbwls = c_x
    mdmps = c_x
    BGIXO = c_x
    MKMAT = c_x
    MMAPS = c_x
    FBSTP = c_x
    FTREL = c_x
    mtnrv = itab-matnr
    werks = p_werks
    importing
    topmat = w_topmat
    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
    into w_msg.
    write: / w_msg.
    exit.
    *else.
    endif.
    loop at it_stb.
    it_comp-matkl = it_stb-matmk.
    it_comp-idnrk = it_stb-idnrk.
    it_comp-ojtxp = it_stb-ojtxp.
    it_comp-menge = it_stb-menge.
    it_comp-meins = it_stb-meins.
    collect it_comp.
    clear it_comp.
    endloop.
    endloop.
    endform.
    i got the low and high from selectoption and then move it into itab.
    then i pass itab-matnr into fm. using loop.
    but i got only one output
    but ineet to got from and to output.
    give me a solution
    Regards
    ds

  • BOM Explosion problem

    Hi,
    I have multilevel BOM (almost 10 levels with around 1500 materials), in which many materials repeat at different levels.
    I am facing problem in one of the material during MRP, This material is used at 10 different levels. Altogether to produce a FG it requires in 36 numbers. In different levels quantity of it required is different. Say 8,1,4,2 etc but total qty is 36.
    When MRP is run the requirement generated for this material is same at all levels i.e 36(total qty) / 10  (BOM levels) = 3.6
    But actually system must generate requirements as per BOM quantity. Not sure what is wrong.
    Requesting you all to reply quickly for this issue.
    Regards,
    Pavan

    Hi,
    Below is the little knowledge i have which want to share with all the august people around.Hope it would be helpful enough for you to get the results.
    A BOM is not exploded in the following situations:
    - No BOM is effective:
    -- On the explosion date and in the given area of validity
    For the given effectivity parameters
    - The BOM has a deletion indicator.
    - The BOM is a multiple BOM, and has no alternative that matches the lot size for your required quantity.
    - No BOM matches the selection criteria of the BOM application you selected.
    - This is possible in the following situations, for example:
    -- The application does not take all BOM usages into account.
    For example, the application only takes BOMs that are relevant to production into account, so a BOM that is relevant to sales and distribution is not exploded.
    -- The application selects a specific alternative on the explosion date you require. The material master record supports alternative determination by Explosion date.
    If the specified alternative is not valid on the explosion date, the BOM is not exploded.
    -- The application takes production versions in the material master record into account, but no production version has a BOM that is valid on the explosion date you require. The material master record supports alternative determination by Production version.
    The system only explodes the BOM defined for the production version that matches the alternative and/or usage entered on the explosion date required.
    -- The application only takes BOMs with certain status indicators into account.
    For example, the application for MRP only explodes BOMs that have at least the status Explosion for MRP.
    Further checks:
    - Do the proper Scheduling in Routing (Backward/forward). In md61 give the requirement in next month.check your in-house production, planned delivery time in md02 give MRP Control parameter Rexplode BOM and Routing.
    - Check BOM explosion data in MRP4 view of material master view ( Individual/Coll data).
    Please revert with your response
    Thanking You in Anticipation
    Regards
    Chandra

  • Multiple BOM Explosion in MD04 for the same material

    Dear PP Gurus,
    Scenario is make to order. BOM is created for production usage (1) & sales usage (5) for a Header material. Routing also exists for the same.
    Once i run MRP at plant level or material level after creating sales order , BOM is expoded multiple times i.e. 3- 4 times but proposals ( planned orders) are created as per requirements.But BOM explosion when we click on show overview tree is happening multiple times which should not happen.
    Our client business is not getting hampered by this but still he doesnt want explosion multiple times and to be precise it should not happen.
    Can anyone pls. throw some light on this .
    Thanks in advance . Answers will be rewarded for sure.
    regards,
    Nagraj Vasmate

    Hello Nagraj,
    In MD04, On overview tree, it explodes all possible BOM for the header material.
    System will explode all valid BOM's with usage 5 and 1 for that specific material.
    Reg
    Samson

  • BOM explosion in subcontracting PR

    Hi...
    I have one issue of BOM explosion in subcontracting PR.
    I have created BOM, routing & PV. Production version maintained in info record.
    While creating manaul subcontracting PR , BOM is not exploded giving error message as "Not possible to determine any components".
    I have checked validity of BOM, PV found ok.
    Also Proc. type X & Spl. proc type 30 maintained.
    Any suggestion to the problem appreciated
    Regards
    Tushar

    Dear Tushar,
    Check this link
    [Sub contracting PO - BOM components are not seen;
    Regards
    Madhu

  • BOM explosion in sales order

    Hi Experts,
    I have met a problem in BOM explosion in sales order.
    I have maintained the BOM with usage 5 and the conversion between header material and component of the BOM. But in the sales order entry, no matter how many qty I entered for the header material, after the BOM explosion, the qty of component is 1.
    Can anyone help?
    Regards,
    Emily

    Hi,
    Go to CS02 and select ur bom and go to components give 1 that means 1;1
    hope u get it
    regards,
    sadanandam kasarla

  • Bom explosion in sales order mrp(MD50)

    Hi Experts,
    In sales order MRP i.e. MD50 Getting the planned orders for header material(Finished goods) generated but for raw materials (BOM items) Purchase requisitions are not getting generated.
    Details:
    Header material A and raw materials B and C.
    In material B in MRP 4 coll/ind indicator is 2 And same indicator for C is blank.
    Now when we are running the MRP sales order based it will generate the purchase requisition for C only but not for B.
    In OPPQ we have done the setting for sales order BOM explosion.
    Can anyone please throw some light what is the setting missing in customization or in front end?
    Thanks in advance.
    Regards
    Vilas

    Dear,
    If you select individual requirement then system will not consider available stock and generate Proposals for every single requirments. Check in MRP4 view Individual / Collective .
    Also you will find PR and Plan order with account assignment of Sales order (in case of MD50).
    - If you select collective requirement then system will not generate planing proposals through MD50.In that case you have to go for individual MRP (MD02 / MD03)
    Please try and come back.
    Regards,
    R.Brahmankar

  • MRP RUN- KIT BOM explosion not working

    We setup one layer BOM’s for our maintenance KITs as parent material and components as child material.  For  example KIT is TS10000-K1 and components are TS10001, TS10002 etc setup as next layer with in the BOM. Both KITS and components are defined as material types ERSA (Spare parts). These one layers BOMs are setup as production BOMs and expected to create purchase requisitions for KITS and components by exploding BOMs during MRP runs. We use purchase requisitions and convert them into POs to procure both KITS and components. We DO NOT USE Panned orders and Production orders. 
    The safety stocks / reorder point are considered as demand for KITS and components as we do not have any external demand for KITS and components.  
    MRP run is creating purchase requisitions automatically for both KITS and components as per safety stocks and reorder point defined in MRP Views of Material Master. This is working as expected.  
    The issue is: KIT BOM’s are not exploding to generate purchase requisitions for the dependent components of KIT BOM. Please suggest the way to resolve this issue. 
    Split valuation: Also we plan to use split valued KITS with both new and refurbished. So we need BOM explosion for split valued KITS
    also (after the 1st issue is resolved).   
    I verified the following items to make sure the required configuration and data setup is defined correctly.
    1) Planning file activated Plant - OMDU 
    2) Executed MRP run with Total Planning - MDBT and MD02 (single item, multiple levels)
    3) BOM explosion for MRP activated- OS23 
    4) MRP type in MRP1 view- PD and VB (I tried both separately but BOM is not exploding).
    5) Procurement type “F” (MRP 2 view) and lot size “EX”  
    6) Planning strategy in MRP 3 view (tested w/o planning strategy and with strategies 10 and 40. But BOM is not exploded)
    7) BOM status and usage (status is active and usage is for production-CS02 and OS20)  
    8) BOM Validity date (Valid) 
    9) BOM structure in CS12 (BOM is exploding in CS11) 
    10) Availability check  
    11) Selection of BON ID to have BOM usage indicator assign (OS31).
    12) No alternate BOMs or production versions or work scheduling view are used.
    Please review the above 2 issues and suggest any workable solution. Thanks in advance!
    NOTE: I extensively used MRP with multi-level BOM explosion in my earlier projects without any issue. However the above issue is a  bit strange  why one layer BOM is not exploded in this case. 
    Regards
    Srini  

    Hi
    Thanks for your response. I reviewed all SAP notes and none of them are applicable to my scenario.
    1808396 - BOM changes not considered by MRP: I have not changed BOMs.
    1781324 - MD11: Valid BOM alternative is not found. We do not have alternative BOMs.
    1791009 - No BOM explosion after changing production version: We am not using production versions.
    Our Material KITS are PM spare assemblies set up as BOMs and consists of individual spare parts as components. We are creating purchase requisitions and not planned orders. We are not using PP functionality/Production orders.
    MRP is generating purchase requisitions for KITS and components as per ROP and safety stocks. In other words it is working as expected.  The issue is BOMs which are parent assemblies are not exploding to the next lower level components.
    Please note that I am not getting any error messages when MRP is executed.
    Regards
    Srini.

  • Report for Cost of Multiple products with Multilevel BOM explosion

    Hi,
    Our client has a requirement of a report showing standard cost estimate of multiple FG products, with multi-level BOM explosion.
    In short, the requirement is to get a CK13N report for multiple products.
    Has anyone come across such requirement? The requirements seems to be very normal.
    But, I have not seen any standard report for the same. If there is any, please suggest.
    or suggest a better solution for the same.
    Thanks in advance. Pts guaranteed.

    Hi,
    I totally agree with you that this is a totally vague requirement.
    However, let me share the reason for such client requirement.
    We have a customer, for which we produce certain parts for select models. Now, the arrangement with customer for pricing is based on the raw material and other production cost for all such parts. Based on the fluctuations in cost, the pricing would be finalised.. on a monthly or quarterly basis.
    For this purpose, the customer requires to know the raw materials used in each of the part.
    Individually it could have been managed. But the price change in terms of % is decided at global level and not for each part.
    Please suggest

  • How about this implementation of BOM Explosion(simulate stack)

    REPORT  YZWX00301_06 LINE-SIZE  142
                         LINE-COUNT 65
                         MESSAGE-ID YM1
                         NO STANDARD PAGE HEADING .
    INCLUDE
    INCLUDE: YXXI00050.
    *TABLES use table define
    TABLES: MARA,        " Material General Table
            MARC,        " Plant Data for Material
            MDMA,        " MRP Area table
            EORD,        " Vendor table
            A018,        " Vendor material mapping table
            KONP,        " Vendor condition table
            MAST,        " Material BOM table
            STPO,        " Material BOM Component table
            STAS.        " Material BOM Component table detail
    *CONSTANTS define
    CONSTANTS:
      C_DAT_X        TYPE C VALUE 'X',
      C_MODE         LIKE dxfields-fileoper VALUE 'R',
      C_MASK         LIKE dxfields-filemask VALUE '.',
      C_FLG_LOCATION TYPE C VALUE 'A',
      C_DFPATH(15)   TYPE C VALUE '\bmwx\'.
    Work Area Define
    ---- build stack structure -
    DATA: BEGIN OF WK_STACK,
            LEVEL(1)      TYPE C,            "Save Level
            QUANT         TYPE I,            "Save Quantity
          END OF WK_STACK.
    ---- BOM work area -
    DATA: BEGIN OF WK_BOM,
             LEVEL(1)     TYPE C,            "BOM LEVEL
             MATNR        LIKE MARC-MATNR,   "MATERIAL      18
             POSTP        LIKE STPO-POSTP,   "ITEM CATEGORY  1
             MENGE        LIKE STPO-MENGE,   "BOM COMPONENT 13
             DATUV        LIKE STPO-DATUV,   "VALID FROM    10
             DATUB        LIKE STPO-DATUV,   "VALID TO      10
    END OF WK_BOM.
    ---- DATA work area -
    DATA: BEGIN OF DATAITEM,
             LEVEL(1)     TYPE C,            "BOM LEVEL
             MATNR        LIKE MARC-MATNR,   "MATERIAL
             POSTP        LIKE STPO-POSTP,   "ITEM CATEGORY
             MENGE        LIKE STPO-MENGE,   "BOM COMPONENT
             DATUV        LIKE STPO-DATUV,   "VALID FROM!!!
             DATUB        LIKE STPO-DATUV,   "VALID TO
             EKGRP        LIKE MARC-EKGRP,   "PURCHASE ORG
             LIFNR        LIKE EORD-LIFNR,    "Vendor code     10
             MARK(1)      TYPE C,             "Mark
             KBETR        LIKE KONP-KBETR,    "Rate price      11
             KONWA        LIKE KONP-KONWA,    "Currency        5
             KPEIN        LIKE KONP-KPEIN,    "Unit Qty        5
             KMEIN        LIKE KONP-KMEIN,    "Condition Unit  3
             DATAB        LIKE A018-DATAB,    "Condition from  10
             DATBI        LIKE A018-DATBI,    "Condition to    10
           END OF DATAITEM.
    ---- File Line work area -
    DATA: BEGIN OF LINE,
             WERKS(4)     TYPE C,                               "Plaint   4
             MATNR(18)    TYPE C,             "Material Number 18
             EKGRP(3)     TYPE C,             "Purchase Group  3
             LIFNR(10)    TYPE C,             "Vendor code     10
             VDATU        LIKE EORD-VDATU,    "Vendor valid from 10
             BDATU        LIKE EORD-BDATU,    "Vendor valid to   10
             MARK(1)      TYPE C,             "Mark
             KSCHL(4)     TYPE C,             "Condition type  4
             KBETR(18)    TYPE C,             "Rate price      11
             KPEIN(5)     TYPE C,             "Rate unit       5
             KONWA(5)     TYPE C,             "Currency        5
             KMEIN(3)     TYPE C,             "Condition Unit  3
             DATAB        LIKE A018-DATAB,    "Condition from  10
             DATBI        LIKE A018-DATBI,    "Condition to    10
           END OF LINE.
    *Local Data Object Define
    DATA:  WK_CNT TYPE I,                   "Count variable
           WK_LVL TYPE I,                   "BOM level
           WK_QTY TYPE I.                   "BOM component qty
    DATA: WK_LIFNR LIKE EORD-LIFNR,
          WK_MATNR LIKE MARC-MATNR.
    *Internal Table define
    DATA TAB_STACK LIKE STANDARD TABLE OF WK_STACK.   "STACK TABLE
    DATA TAB_BOM   LIKE STANDARD TABLE OF WK_BOM.     "FOR BOM
    DATA TAB_DATA  LIKE STANDARD TABLE OF DATAITEM.   "FOR ALL
    Parameter in Block1
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.         "TITLE TEXT-001.
    PARAMETERS:
      P_WERKS LIKE MARC-WERKS DEFAULT 'WX01',              "Plant
      P_STLTY LIKE STPO-STLTY DEFAULT 'M',                 "BOM Category
      P_MATNR LIKE MARC-MATNR OBLIGATORY,                  "Material
      P_STDAT LIKE EORD-VDATU OBLIGATORY DEFAULT SY-DATUM. "Standard Date
    SELECTION-SCREEN END OF BLOCK B1.
    Parameter in Block2
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: P_SCREEN RADIOBUTTON GROUP R1.     "Screen output
    SELECTION-SCREEN COMMENT 03(21) TEXT-001.
    SELECTION-SCREEN POSITION 32.
    PARAMETERS: P_FILE RADIOBUTTON GROUP R1.       "NTFILE output
    SELECTION-SCREEN COMMENT 34(17) TEXT-002.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK B2.
    Parameter in Block3
    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME.
    PARAMETERS:
    P_NTFILE(45)  TYPE C    LOWER CASE OBLIGATORY.
      P_PCFILE      LIKE RLGRAP-FILENAME.
    SELECTION-SCREEN END   OF BLOCK B3.
    INITIALIZATION
    INITIALIZATION .
      CLEAR :  WK_CNT,
               WK_LVL,
               WK_QTY,
               WK_MATNR,
               WK_STACK,
               WK_BOM,
               DATAITEM.
      WK_LVL = 0.
      WK_QTY = 1.
      REFRESH: TAB_STACK,
               TAB_DATA,
               TAB_BOM.
    *&      AT SELECTION-SCREE ON VALUE-REQUEST
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_NTFILE.
    PERFORM F_SHOW_FILE_POPUP CHANGING P_NTFILE.       "Popup display
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCFILE.
      PERFORM F_FILENAME_GET USING P_PCFILE
                          CHANGING P_PCFILE.
    *&      Form  F_FILENAME_GET
      --> ST_DAT_PATH     : Preset path
      <-- ST_DAT_FILENAME : Selected file name
    FORM F_FILENAME_GET USING st_dat_path
                     CHANGING st_dat_filename.
      CALL FUNCTION 'WS_FILENAME_GET'
        EXPORTING
          def_filename     = SPACE
          def_path         = st_dat_path
          mask             = ',.,.,'
          mode             = '0'
          title            = 'TXT-file select'
        IMPORTING
          filename         = st_dat_filename
        EXCEPTIONS
          inv_winsys       = 1
          no_batch         = 2
          selection_cancel = 3
          selection_error  = 4
          OTHERS           = 5.
      IF sy-subrc <> 0.
        MESSAGE s002(yf1) WITH 'F_FILENAME_GET' sy-subrc.
      ENDIF.
    ENDFORM.                    "F_FILENAME_GET
    MAIN PROCESS
    START-OF-SELECTION.
    ---- Check material -
      PERFORM CHECK_PROD.
    ---- get vendor data -
      PERFORM GET_VENDOR_DATA.
    ---- output screen/file -
      IF P_SCREEN = 'X'.
        PERFORM SET_OUTPUT.            "Output to screen directly
      ELSEIF P_FILE = 'X'.
        IF P_PCFILE <> ''.
          PERFORM DOWNLOAD_DATA.       "Write data into ntfile
        ELSE.
          MESSAGE E007(00) WITH 'P_PCFILE'.
        ENDIF.
      ENDIF.
    END-OF-SELECTION.
      ULINE (142).
      WRITE: /002 'Component Material Count:', WK_CNT.
    TOP-OF-PAGE
    TOP-OF-PAGE.
      WRITE: /002 'Product:', 013 P_MATNR,
              030 '****** BOM Price List ******',
              070 SY-DATUM,
              095 'PAGE:',
              100 SY-PAGNO.
      ULINE (142).
      WRITE: /001   '|Level',
              007   '|Material',
              026   '|Cat',
              030   '|Quantity',
              044   '|From',
              055   '|To',
              066   '|PurG',
              071   '|Vendor',
              082   '|MK',
              085   '|Price',
              101   '|Crncy',
              107   '|UnitQty',
              115   '|Unit',
              120   '|From',
              131   '|To',
              142   '|'.
      ULINE (142).
    *&FORM CHECK_PROD
    text
    -->p1      text
    <--p2      text
    FORM CHECK_PROD.
      SELECT SINGLE * FROM MARC
                     WHERE WERKS = P_WERKS           " Plant
                     AND   MATNR = P_MATNR           " Material
                     AND   DISPR IN ('F100','F200'). " Product
      IF SY-SUBRC = 0.
        PERFORM CHECK_BOM1 USING MARC-MATNR MARC-WERKS. " CHECK_BOM1
      ELSE.
        MESSAGE E022.
      ENDIF.
    ENDFORM.                                         " CHECK_PROD
    *&FORM CHECK_BOM1
    text
    -->p1      text
    <--p2      text
    FORM CHECK_BOM1 USING VALUE(FP_MATNR) VALUE(FP_WERKS).
      SELECT SINGLE * FROM  MAST
                      WHERE MATNR = FP_MATNR     AND      "Material
                            WERKS = FP_WERKS.             "Plant
      IF SY-SUBRC = 0.
        PERFORM PUSH_STACK USING WK_LVL WK_QTY.   "Save parent attribute
        PERFORM CHECK_BOM2 USING MAST-STLNR.                    "Check BOM2
      ENDIF.
    ENDFORM.                                                    "CHECK_BOM1
    *&FORM CHECK_BOM2
    text
    -->p1      text
    <--p2      text
    FORM CHECK_BOM2 USING VALUE(FP_STLNR).
      SELECT * FROM  STPO
               WHERE STLTY = P_STLTY        AND        "BOM category
                     STLNR = FP_STLNR.                 "BOM number
        PERFORM POPOUT_WK.                  "Pop out to work area
        WK_BOM-LEVEL = WK_LVL.              "Current BOM level
        WK_BOM-MATNR = STPO-IDNRK.          "Material number
        WK_BOM-POSTP = STPO-POSTP.          "ITEM Category
        WK_QTY       = STPO-MENGE * WK_QTY. "For Stack
        WK_BOM-MENGE = WK_QTY.              "BOM Component qty
        PERFORM CHECK_BOM3 USING STPO-STLTY STPO-STLNR STPO-STLKN.
        PERFORM CHECK_BOM1 USING STPO-IDNRK P_WERKS.
      ENDSELECT.
      PERFORM POPOUT_STACK.
    ENDFORM.                                                    "CHECK_BOM2
    *&FORM CHECK_BOM3
    text
    -->p1      text
    <--p2      text
    FORM CHECK_BOM3 USING VALUE(FP_STLTY) VALUE(FP_STLNR) VALUE(FP_STLKN).
      SELECT SINGLE * FROM  STAS
                      WHERE STLTY = FP_STLTY        "BOM category
                      AND   STLNR = FP_STLNR        "BOM number
                      AND   STLKN = FP_STLKN        "BOM item
                      AND   DATUV <= P_STDAT        "Valid from
                      AND   LKENZ = ' ' .           "Valid
      IF SY-SUBRC = 0.
        WK_BOM-DATUV = STAS-DATUV.                  "Valid from
      ENDIF.
      SELECT SINGLE * FROM  STAS
                      WHERE STLTY = FP_STLTY        "BOM category
                      AND   STLNR = FP_STLNR        "BOM number
                      AND   STLKN = FP_STLKN        "BOM item
                    AND   DATUV > P_STDAT         "Valid from
                      AND   LKENZ = 'X' .           "Invalid
      IF SY-SUBRC = 0.
        SELECT SINGLE * FROM  STAS
                       WHERE STLTY = FP_STLTY        "BOM category
                       AND   STLNR = FP_STLNR        "BOM number
                       AND   STLKN = FP_STLKN        "BOM item
                       AND   DATUV > P_STDAT         "Valid from
                       AND   LKENZ = 'X' .           "Invalid
        IF SY-SUBRC = 0.
          WK_BOM-DATUB = STAS-DATUV.          "Valid to
          APPEND WK_BOM TO TAB_BOM.
        ENDIF.
      ELSE.
        WK_BOM-DATUB = '99991231'.          "Manul input
        APPEND WK_BOM TO TAB_BOM.
      ENDIF.
    ENDFORM.                                                    "CHECK_BOM3
    *&FORM PUSH_STACK
    text
    -->p1      text
    <--p2      text
    FORM PUSH_STACK USING VALUE(FP_LVL) VALUE(FP_QTY).
      WK_STACK-LEVEL = FP_LVL + 1.
      WK_STACK-QUANT = FP_QTY.
      APPEND WK_STACK TO TAB_STACK.    "Push stack
      SORT TAB_STACK BY LEVEL.         "Sort table by level
    ENDFORM.                           "PUSH_STACK
    *&FORM PUSH_STACK
    text
    -->p1      text
    <--p2      text
    FORM POPOUT_STACK.
      DESCRIBE TABLE TAB_STACK LINES WK_CNT.
      IF WK_CNT > 0.
        DELETE TAB_STACK INDEX WK_CNT.     "Popout stack
        SORT TAB_STACK BY LEVEL.           "Sort table by level
      ENDIF.
    ENDFORM.                               "POPOUT_STACK
    *&FORM POPOUT_WK
    text
    -->p1      text
    <--p2      text
    FORM POPOUT_WK.
      DESCRIBE TABLE TAB_STACK LINES WK_CNT.
      IF WK_CNT > 0.
        READ TABLE TAB_STACK INTO WK_STACK INDEX WK_CNT.   "Popout stack
        IF SY-SUBRC = 0.
          WK_LVL = WK_STACK-LEVEL.                         "Current Level
          WK_QTY = WK_STACK-QUANT.                         "Parent Qty
        ENDIF.
      ENDIF.
    ENDFORM.                    "POPOUT_WK
    *&FORM DOWNLOAD_DATA
    text
    -->p1      text
    <--p2      text
    FORM DOWNLOAD_DATA.
      DATA: L_RETURN     TYPE   SY-SUBRC.
      PERFORM GUI_DOWNLOAD
                  TABLES
                     TAB_DATA
                  USING
                     P_PCFILE
                     'X'
                  CHANGING
                     L_RETURN.
      IF L_RETURN <> 0.
        MESSAGE S020.
      ELSE.
        MESSAGE S021.
      ENDIF.
    ENDFORM.                    " DOWNLOAD_DATA
    *&FORM GET_VENDOR_DATA
    text
    -->p1      text
    <--p2      text
    FORM GET_VENDOR_DATA.
      LOOP AT TAB_BOM  INTO WK_BOM.
        CLEAR DATAITEM.
        SELECT * FROM MARC
                WHERE WERKS = P_WERKS             "Plant
                  AND MATNR = WK_BOM-MATNR.       "Material
          DATAITEM-EKGRP = MARC-EKGRP.
          SELECT SINGLE * FROM  MARA
                          WHERE MATNR = MARC-MATNR    AND   "Material number
                                MTART IN ('1211','1221').
          IF SY-SUBRC = 0.
            SELECT COUNT(*) FROM  EORD
                           INTO  (WK_CNT)
                     WHERE WERKS  = P_WERKS        AND  "Plaint
                           MATNR  = WK_BOM-MATNR   AND  "Material
                           VDATU <= P_STDAT        AND  "Valid-From
                           BDATU >  P_STDAT.            "Valid-To
            IF WK_CNT > 1.
              DATAITEM-MARK = '*'.
            ELSEIF WK_CNT = 0.
              MOVE-CORRESPONDING WK_BOM TO DATAITEM.
              APPEND DATAITEM TO TAB_DATA.
            ENDIF.
            SELECT * FROM  EORD
                     WHERE WERKS  = P_WERKS        AND  "Plaint
                           MATNR  = WK_BOM-MATNR   AND  "Material
                           VDATU <= P_STDAT        AND  "Valid-From
                           BDATU >  P_STDAT.            "Valid-To
              MOVE-CORRESPONDING WK_BOM TO DATAITEM.
              DATAITEM-LIFNR  = EORD-LIFNR.             "Vendor code
              SELECT  * FROM  A018
                        WHERE LIFNR  =  EORD-LIFNR  AND  "Vendor code
                              MATNR  =  EORD-MATNR  AND  "Material
                              EKORG  =  EORD-EKORG  AND  "Purchase org
                              DATAB <=  P_STDAT     AND  "Valid-from
                              DATBI >   P_STDAT.         "Valid-to
                DATAITEM-DATAB = A018-DATAB.    "Condition From
                DATAITEM-DATBI = A018-DATBI.    "Condition To
                IF SY-SUBRC = 0.
                  SELECT * FROM  KONP
                           WHERE KNUMH = A018-KNUMH   AND   "Cnd Number
                                 KSCHL = A018-KSCHL   AND   "Cnd Type
                                 KAPPL = A018-KAPPL.        "Cnd Cat
                    DATAITEM-KBETR = KONP-KBETR.            "Price
                    DATAITEM-KONWA = KONP-KONWA.            "Currency
                    DATAITEM-KPEIN = KONP-KPEIN.            "Price Unit
                   DATAITEM-KMEIN = KONP-KMEIN.            "Unit of Material
                    APPEND DATAITEM TO TAB_DATA.            "Append TAB_DATA
                  ENDSELECT.
                ENDIF.
              ENDSELECT.
            ENDSELECT.
          ELSE.
            MOVE-CORRESPONDING WK_BOM TO DATAITEM.
            APPEND DATAITEM TO TAB_DATA.
          ENDIF.
        ENDSELECT.
        IF SY-SUBRC <> 0.
          MOVE-CORRESPONDING WK_BOM TO DATAITEM.
          APPEND DATAITEM TO TAB_DATA.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "GET_DATA
    *&      Form  SET_OUTPUT
          text
    -->  p1        text
    <--  p2        text
    FORM SET_OUTPUT .
      CLEAR WK_CNT.
      LOOP AT TAB_DATA INTO DATAITEM.
        WRITE: /001   '|', 002 DATAITEM-LEVEL,   "Material Number
                007   '|', 008 DATAITEM-MATNR,   "Purchase Grp
                026   '|', 027 DATAITEM-POSTP,   "Item category
                030   '|', 031 DATAITEM-MENGE,   "BOM Component qty
                044   '|', 045 DATAITEM-DATUV,   "BOM valid from
                055   '|', 056 DATAITEM-DATUB,   "BOM valid to
                066   '|', 067 DATAITEM-EKGRP,   "Purchase Org
                071   '|', 072 DATAITEM-LIFNR,   "Vendor
                082   '|', 083 DATAITEM-MARK,    "Mark flag
                085   '|', 086 DATAITEM-KBETR,   "Price
                101   '|', 102 DATAITEM-KONWA,   "Currency
                107   '|', 108 DATAITEM-KPEIN,   "Unit Qty
                115   '|', 116 DATAITEM-KMEIN,   "Unit OM
                120   '|', 121 DATAITEM-DATAB,   "Cnd From
                131   '|', 132 DATAITEM-DATBI,   "Cnd To
                142   '|'.
        WK_CNT = WK_CNT + 1.
      ENDLOOP.
    ENDFORM.                    " SET_OUTPUT

    Prabhu Peram,
    Thanks very much.
    I want to show an idea of BOM explosion by constructing a stack.
    BOM explosion uses first-root-searching and pushes the "root" material into stack.If the "root" has no left-child,pops out the "root" material and searchs the right-child....and completes the entire BOM explosion.
    Message was edited by:
            Mic chen
    Message was edited by:
            Mic chen

  • BOM explosion in CRM Service Contract

    Hello
    We want have a BOM explosion working in CRM for service contracts
    Here are the details :
    We have replicated the materials from ECC to CRM. We are not maintaining any BOMu2019s in ECC.
    The idea is that we maintain the BOM Structure in CRM only, as we donu2019t want to have the Items as a billable item in a position, only for information purposes (or later on for metering)
    We have maintained the product category for the header product in CRM so we are able to maintain depended components
    (Relationship type SCDEC S Dependent Components (DC) )
    Not we are able to assign dependent component to the header material
    Item category groups:
    We understand that the standard item category groups that should be used are ERLA for the header product and LUMF for the Item product.
    In order to support the same functionality for the given item category group , maintained at the product level in ECC we copied the same setting for the item category group from the standard to
    our settings.
    Standart
    Tx type Item Cat Group item category structure scope
    TA ERLA TAQ A single level Explosion of Structured Product
    TA LUMF TAP A single level Explosion of Structured Product
    So we have copied TAQ to ZTAQ and TAP to ZTAP.
    ZS01 is a copy of SC (service contract)
    Tx type Item Cat Group item category structure scope
    ZS01 ZLEI ZTAQ A single level Explosion of Structured Product
    ZS01 LEIS ZTAP A single level Explosion of Structured Product
    But when we use a header product in the service contract, we cannot see the BOM is exploding.
    We have also created some products in CRM with exactly the same Item Category groups as the standard and when we create a standard order (TA) in CRM, the BOM is NOT exploding.
    Questions:
    Is it possible to have the BOM setup only in CRM, like we try to do it?
    Is it possible to use our own item category groups in CRM more is the functionality only working with ERLA and LUMF?
    Is it possible to use the BOM Explosion in Service contracts as well ?
    What steps are we missing to get the BOM explosion in CRM ?
    Thank you for your help
    Frank

    Hi,
    I did work on single level BOM explosion in a couple of projects. As per SAP note 549341 - FAQ: BOMs in the sales order, it is very much possible to explode multi-level BOMs.
    Check this note and item category BOM explosion options.
    <b>Do not forget to reward if it helps,</b>
    Regards,
    Paul Kondaveeti

  • BOM Explosion in Shopping Basket for CRM B2C 6.0

    Hi Gurus,
    Can we have a BOM explosion in shopping basket . As per few links I explored BOM Concept is possible only in ECC and we can implement it is CRM based by some additional configurations .  (BOM in CRM) .
    We have configured component for products and XCM setting for BOM is also in place . But BOM explosion is happening only at Order confirmation level .
    Can anybody give some insights to get BOM explosion in Shopping Basket of CRM B2C 6.0 .
    Thanks and Regards,
    Tony Isaac

    Hi Rahul,
    Thanks for the reply.
    I could find the UI component setting : ui.fields.order.bomExplosion = Visible and I have already done this . Due to this I am able to see BOM explosion on Checkout Page / Order Confirmation Page .
    But  still I am not able to find ui.fields.order.subitemDetailview = Visible.
    Is that available only in R/3 version ?
    My problem is BOM explosion is not visible in Shopping basket .
    Regards,
    Tony Isaac.

Maybe you are looking for