cancel
Showing results for 
Search instead for 
Did you mean: 

Cross Plant Multilevel BOM

Former Member
0 Kudos
329

hi guys we have a cross plant multilevel bom strategy, ie after two levels of explosion the material is maintained in another plant,[from 1001 to  1003]

i made a code but that is exploding till 2nd level only . as the plant changes it stops. i thought of passing the plant 1003 explicitly but did not worked.

kindly help what shold i do inside the code only so that as the plant changes the next level of explosion takes place within and gets displayed.

REPORT  ZPP_BOMEXPLODE NO STANDARD PAGE HEADING MESSAGE-ID zfi.

TABLES: mara,t001w,marc.

TYPE-POOLS: slis.

TYPES: BEGIN OF ty_makt,

        matnr TYPE matnr, 

        spras TYPE spras, 

        maktx TYPE maktx, 

      END OF ty_makt,

      BEGIN OF ty_final,

        matnr TYPE matnr, 

        werks TYPE werks_d,

        maktx TYPE maktx, 

        level TYPE histu, 

        idnrk TYPE idnrk, 

        ojtxp TYPE ojtxp, 

        menge TYPE kmpmg, 

        dispo TYPE dispo, 

      END OF ty_final.

DATA: gtb_mara TYPE STANDARD TABLE OF mara,

      gtb_makt TYPE STANDARD TABLE OF ty_makt,

      gtb_final TYPE STANDARD TABLE OF ty_final,

      gtb_stpo TYPE STANDARD TABLE OF stpox,

      gtb_fcat TYPE STANDARD TABLE OF slis_fieldcat_alv,

      gtb_marc TYPE STANDARD TABLE OF marc.

DATA: gwa_mara TYPE mara,

      gwa_makt TYPE ty_makt,

      gwa_final TYPE ty_final,

      gwa_stpo TYPE stpox,

      gwa_marc TYPE marc.

SELECTION-SCREEN BEGIN OF BLOCK sell WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_matnr    FOR  mara-matnr,

                              s_dispo    FOR marc-dispo.

PARAMETERS:      p_werks    TYPE t001w-werks.

SELECTION-SCREEN END OF BLOCK sell.

AT SELECTION-SCREEN.

  PERFORM val_matnr.

  PERFORM val_werks.

  PERFORM val_dispo.

START-OF-SELECTION.

  PERFORM refff.

  PERFORM data_select.

***Display Data in ALV grid format.

  PERFORM display_data.

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

*&      Form  val_matnr

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM val_matnr .

  SELECT * FROM mara INTO TABLE gtb_mara WHERE matnr IN s_matnr.

  IF sy-subrc NE 0.

    MESSAGE e010 WITH 'Invalid Material'(002).

  ENDIF.

ENDFORM.                    " val_matnr

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

*&      Form  val_werks

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM val_werks .

  DATA: ltb_t001w TYPE STANDARD TABLE OF t001w.

  IF NOT p_werks IS INITIAL.

    SELECT * FROM t001w INTO TABLE ltb_t001w WHERE werks = p_werks.

    IF sy-subrc NE 0.

      MESSAGE e010 WITH 'Invalid Plant'(003).

    ENDIF.

  ELSE.

    MESSAGE e010 WITH 'Enter Plant'(005).

  ENDIF.

ENDFORM.                    " val_werks

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

*&      Form  val_dispo

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

form val_dispo .

  SELECT * FROM marc INTO TABLE gtb_marc WHERE dispo IN s_dispo.

  IF sy-subrc NE 0.

    MESSAGE e010 WITH 'Invalid MRP Controller'(007).

  ELSE.

    SORT GTB_MARC BY MATNR WERKS.

  ENDIF.

endform.                    " val_dispo

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

*&      Form  DATA_SELECT

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM data_select .

  SELECT matnr

         spras

         maktx

    FROM makt

    INTO TABLE gtb_makt

    WHERE matnr IN s_matnr

    AND   spras = sy-langu.

  REFRESH: gtb_final,

           gtb_stpo.

  CLEAR: gwa_final,

         gwa_stpo,

         gwa_mara.

  LOOP AT gtb_mara INTO gwa_mara.

  READ TABLE GTB_MARC INTO GWA_MARC

             WITH KEY MATNR = gwa_mara-matnr

                      WERKS = P_WERKS BINARY SEARCH.

  IF SY-SUBRC = 0.

    CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

      EXPORTING

        capid                 = 'PP01'

        datuv                 = sy-datum

        mktls                 = 'X'

        mehrs                 = 'X'

        mtnrv                 = gwa_mara-matnr

        stlal                 = '01'

        stlan                 = '1'

        stpst                 = '0'

        svwvo                 = '0'

        werks                 = p_werks

        vrsvo                 = 'X'

      TABLES

        stb                   = gtb_stpo

      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: gwa_stpo.

    LOOP AT gtb_stpo INTO gwa_stpo.

      gwa_final-dispo = gwa_marc-dispo.

      gwa_final-matnr = gwa_mara-matnr.

      gwa_final-werks = p_werks.

      CLEAR: gwa_makt.

      READ TABLE gtb_makt INTO gwa_makt WITH KEY matnr = gwa_mara-matnr.

      IF sy-subrc = 0.

        gwa_final-maktx = gwa_makt-maktx.

      ENDIF.

      gwa_final-level = gwa_stpo-stufe.

      gwa_final-idnrk = gwa_stpo-idnrk.

      gwa_final-ojtxp = gwa_stpo-ojtxp.

      gwa_final-menge = gwa_stpo-menge.

      APPEND gwa_final TO gtb_final.

    ENDLOOP.

    REFRESH: gtb_stpo.

    CLEAR: gwa_stpo,gwa_marc.

ENDIF.

  ENDLOOP.

ENDFORM.                    " DATA_SELECT

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

*&      Form  DISPLAY_DATA

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM display_data .

  IF NOT gtb_final[] IS INITIAL.

    PERFORM fill_fcat.

    PERFORM sub_dislay_report.

  ELSE.

    MESSAGE e010 WITH 'No Data Exists'(004).

  ENDIF.

ENDFORM.                    " DISPLAY_DATA

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

*&      Form  FILL_FCAT

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM fill_fcat .

  PERFORM sub_fill_catalog USING:

          'MATNR' 'Material No',

          'WERKS' 'Plant',

          'MAKTX' 'Material Desc',

          'DISPO' 'MRP Controller',

          'LEVEL' 'Level',

          'IDNRK' 'Component',

          'OJTXP' 'Description',

          'MENGE' 'Quantity'.

ENDFORM.                    " FILL_FCAT

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

*&      Form  SUB_FILL_CATALOG

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

*       text

*----------------------------------------------------------------------*

*      -->P_0383   text

*      -->P_0384   text

*----------------------------------------------------------------------*

FORM sub_fill_catalog  USING    value(lva_fieldname)

                                value(lva_seltext).

  DATA: lwa_fcat TYPE slis_fieldcat_alv.

  STATICS: lva_col TYPE i.

  lva_col = lva_col + 1.

  lwa_fcat-col_pos = lva_col.

  lwa_fcat-fieldname = lva_fieldname.

  lwa_fcat-tabname = 'GTB_FINAL'.

  IF lwa_fcat-fieldname = 'MATNR'

    OR lwa_fcat-fieldname = 'IDNRK'.

    lwa_fcat-no_zero = 'X'.

  ENDIF.

  lwa_fcat-seltext_l = lva_seltext.

  APPEND lwa_fcat TO gtb_fcat.

ENDFORM.                    " SUB_FILL_CATALOG

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

*&      Form  SUB_DISLAY_REPORT

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM sub_dislay_report .

  DATA: lva_repid TYPE sy-repid,

        lwa_layout TYPE slis_layout_alv.

  lwa_layout-zebra = 'X'.

  lwa_layout-colwidth_optimize = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program = lva_repid

      is_layout          = lwa_layout

      it_fieldcat        = gtb_fcat

      i_save             = 'A'

    TABLES

      t_outtab           = gtb_final

    EXCEPTIONS

      program_error      = 1

      OTHERS             = 2.

  IF sy-subrc <> 0.

    MESSAGE i001(00) WITH 'Report Cannot be displayed'.

    LEAVE LIST-PROCESSING.

  ENDIF.

ENDFORM.                    " SUB_DISLAY_REPORT

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

*&      Form  refff

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

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM refff .

  REFRESH: gtb_makt,

           gtb_final,

           gtb_stpo,

           gtb_fcat.

  CLEAR: gwa_mara,

         gwa_makt,

         gwa_stpo,

         gwa_final.

ENDFORM.                    " refff

Accepted Solutions (0)

Answers (1)

Answers (1)

JasonLax
Product and Topic Expert
Product and Topic Expert
0 Kudos

This thread is currently in SCN Support, which is the support space for SAP Community Network and not SAP products.  Please select an appropriate space where topic experts will see and reply to it: SCN Site Index

In the meantime, I'm moving this thread to