Transaction
» See all 414 related threads
Jul 07 18

multilevel bom explosion  

17:47 // Gaurav Mehta

hi All,

I am doing a transaction CS12 for a material and then gettin the output, i want to know wat field of wat table contains the value of level of the explosion,

please as for more details if u need,

thanks,

Gautam

 
Jul 07 18

Re: multilevel bom explosion  

17:57 // Naren Someneni

Use function module 'CS_BOM_EXPL_MAT_V2' for multi level BOM explosion.

The table STB (STPOX-STUFE) has the explosion levels.

Rgds,

Naren

Feb 12 29

Re: multilevel bom explosion  

10:49 // Seshu reddy Maramreddy

Check with STPO,STKO,MAST Tables

Also look at FM CS_BOM_EXPL_MAT_V2 -> This is Very important.

I have done similar req and see the below code

REPORT ZPPR_BOM_INFOL_REPORT no standard page heading

                 line-size 160

                 line-count 60.

*----


*

  • Table definition                                                    *

*----


*

TABLES: mast,

        stko,

        stpo,

        T418,

        makt.

  • TYPE - POOLS

TYPE-POOLS: slis.

  • Constants

constants : c_tcode(4) type c value 'CS03',

            gc_formname_top_of_page TYPE slis_formname

            VALUE 'TOP_OF_PAGE'.

  • Variables

data : v_maktx like makt-maktx,

       wa_stko like stko.

DATA:

  • Objekttyp 'Material'

   otyp_mat(1) TYPE c VALUE '1',

   ootyp_mat(1) TYPE c VALUE 'M',

  • Objekttyp 'kein Objekt'

   otyp_noo(1) TYPE c VALUE '2',

  • Objekttyp 'Dokument'

   otyp_doc(1) TYPE c VALUE '3',

  • Objekttyp 'Klasse'

   otyp_kla(1) TYPE c VALUE '4',

  • Objekttyp 'Intramaterial'

   otyp_ntm(1) TYPE c VALUE '5'.

  • maximal anzeigbare Menge

data:   max_num(7)  TYPE p DECIMALS 3 VALUE '9999999999.999',

        ueberl_kz(1) TYPE c VALUE '*',

        min_num(7)  TYPE p DECIMALS 3 VALUE '9999999999.999-',

        b_flag(1) TYPE c VALUE 'X',

        ecfld(250) TYPE c,

        v_flag type c.

  • ALV Variables

DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,

      gs_layout   TYPE slis_layout_alv,

      gs_keyinfo  TYPE slis_keyinfo_alv,

      gt_sp_group TYPE slis_t_sp_group_alv,

      gt_events   TYPE slis_t_event.

DATA: g_repid LIKE sy-repid.

DATA: gt_list_top_of_page TYPE slis_t_listheader,

            g_tabname_header TYPE slis_tabname,

            g_tabname_item   TYPE slis_tabname,

            g_save(1) TYPE c,

            gx_variant LIKE disvariant,

            g_variant LIKE disvariant,

            g_default(1) TYPE c,

            g_exit(1) TYPE c.

*----


*

  • Includes                                                             *

*----


*

INCLUDE .

*----


*

  • Internal Table Declaration                                           *

*----


*

DATA: t_mast LIKE STANDARD TABLE OF mast WITH HEADER LINE.

*DATA: t_makt LIKE STANDARD TABLE OF makt WITH HEADER LINE.

  • BOM Function module Related

DATA: t_matcat  LIKE cscmat OCCURS 0 WITH HEADER LINE.

  • Internal Table for Level by Level Function module

DATA: t_stb  LIKE stpox OCCURS 0 WITH HEADER LINE.

  • Get the Relevant data from FM

DATA: BEGIN OF hd_tab OCCURS 0,

         stufe LIKE stpox-stufe,

         vwegx LIKE stpox-vwegx,

      END OF hd_tab.

  • Final Output

DATA: BEGIN OF alv_stb OCCURS 0.

        INCLUDE STRUCTURE stpox_alv.

DATA:   info(3)   TYPE c,

      END OF alv_stb.

DATA: BEGIN OF stb_orig.

        INCLUDE STRUCTURE stpox.

DATA: END OF stb_orig.

DATA: BEGIN OF stb_add.

        INCLUDE STRUCTURE stpol_add.

DATA: END OF stb_add.

  • Internal Table for STPO

*-- BOM Line item

TYPES: BEGIN OF ty_stpo,

       stlty TYPE stpo-stlty,

       stlnr TYPE stpo-stlnr,

       stlkn TYPE stpo-stlkn,

       stpoz TYPE stpo-stpoz,

       idnrk TYPE stpo-idnrk,

       meins TYPE stpo-meins,

       menge TYPE stpo-menge, "Component Qty

       END OF ty_stpo.

DATA: t_stpo TYPE STANDARD TABLE OF ty_stpo WITH HEADER LINE.

*-- BOM Header

TYPES: BEGIN OF ty_stko,

       stlty TYPE stko-stlty,

       stlnr TYPE stko-stlnr,

       stlal TYPE stko-stlal,

       stkoz TYPE stko-stkoz,

       bmein TYPE stko-bmein,

       bmeng TYPE stko-bmeng,

       END OF ty_stko.

DATA: t_stko TYPE STANDARD TABLE OF ty_stko WITH HEADER LINE .

data : t_makt like makt occurs 0 with header line.

DATA: BEGIN OF cl_clstab OCCURS 0,                          "YHG079407

         class LIKE klah-class,                             "YHG079407

         klart LIKE klah-klart,                             "YHG079407

         chked LIKE csdata-xfeld,                           "YHG079407

         noobj LIKE csdata-xfeld,                           "YHG079407

         dsply LIKE csdata-xfeld,                           "YHG079407

      END OF cl_clstab.

*-- Header table

TYPES: BEGIN OF ty_main_material,

       matnr TYPE mast-matnr, "Material

       werks TYPE mast-werks, "Plant

       maktx TYPE makt-maktx, "Description

       stlal TYPE mast-stlal, "Alternative BOM

       stlnr TYPE stko-stlnr, "BOM Number

       bmein TYPE stko-bmein, "UOM

       bmeng TYPE stko-bmeng, "Base Qty

       expand(1) TYPE c,      "Expanding Field

       END OF ty_main_material.

DATA: t_main_material TYPE STANDARD TABLE OF ty_main_material WITH

      HEADER LINE.

*-- Item (Component) Table

TYPES: BEGIN OF ty_item_material,

       matnr TYPE mast-matnr, "Material

       werks TYPE mast-werks, "Plant

       idnrk TYPE stpo-idnrk, "Component (Material)

       maktx TYPE makt-maktx, "Description

       stlal TYPE mast-stlal, "Alternative BOM

       stlnr TYPE stpo-stlnr, "BOM Number

       meins TYPE stpo-meins, "UOM

       menge TYPE stpo-menge, "Base Qty

       END OF ty_item_material.

DATA: t_item_material TYPE STANDARD TABLE OF ty_item_material WITH

      HEADER LINE.

*----


*

  • Selection Screen                                                     *

*----


*

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

PARAMETERS: p_werks LIKE marc-werks DEFAULT '1000' OBLIGATORY.

SELECT-OPTIONS s_stlal FOR mast-stlal .

SELECT-OPTIONS s_stlan FOR mast-stlan DEFAULT '1'.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

SELECTION-SCREEN SKIP.

PARAMETERS: p_bomlst RADIOBUTTON GROUP g1 DEFAULT 'X'.

SELECT-OPTIONS s_matnr FOR mast-matnr.

SELECTION-SCREEN SKIP.

PARAMETERS: p_compon RADIOBUTTON GROUP g1.

SELECT-OPTIONS: s_idnrk FOR stpo-idnrk.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN END OF BLOCK b1.

selection-screen begin of block b03 with frame title text-b03.

selection-screen begin of line.

selection-screen comment 1(40) text-005.

parameters: p_all radiobutton group r1 default 'X'.

selection-screen end of line.

selection-screen begin of line.

selection-screen comment 1(40) text-006.

parameters: p_one radiobutton group r1 .

selection-screen end of line.

selection-screen end of block b03.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.

PARAMETERS: p_vari LIKE disvariant-variant.

SELECTION-SCREEN END OF BLOCK b3.

*----


*

  • At slection screen events                                            *

*----


*

*-- Process on value request

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.

  PERFORM f4_for_variant.

*----


*

  • Intitialisation

*----


*

INITIALIZATION.

  g_repid = sy-repid.

  g_tabname_header = 'T_MAIN_MATERIAL'.

  g_tabname_item   = 'T_ITEM_MATERIAL'.

*-- define keyinformation

  CLEAR gs_keyinfo.

  gs_keyinfo-header01 = 'MATNR'.

  gs_keyinfo-item01   = 'MATNR'.

  PERFORM e03_eventtab_build USING gt_events[].

  PERFORM e04_comment_build  USING gt_list_top_of_page[].

  PERFORM e07_sp_group_build USING gt_sp_group[].

  PERFORM e08_layout_build   USING gs_layout.

  • Set Options: save variants userspecific or general

  g_save = 'A'.

  PERFORM variant_init.

  • Get default variant

  gx_variant = g_variant.

  CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

       EXPORTING

            i_save     = g_save

       CHANGING

            cs_variant = gx_variant

       EXCEPTIONS

            not_found  = 2.

  IF sy-subrc = 0.

    p_vari = gx_variant-variant.

  ENDIF.

************************************************************************

                                • S T A R T - O F - S E L E C T I O N *******************

************************************************************************

start-of-selection.

  if p_all = 'X'.

  • Get the data from MAST and MAKT Table

    if p_bomlst = 'X'.

  •   Get the data Based On Material #

      perform get_data.

    else.

  •   Get the data Based On Component

      perform get_data_component.

    endif.

  else.

  • Get the Single Level Report

*-- Moved the fiedl catalog here inorder to change the layout based on

*-- Selection

    PERFORM e01_fieldcat_init  USING gt_fieldcat[].

    PERFORM select_data.

  endif.

************************************************************************

                        • E N D - O F - S  E  L  E  C  T  I  O  N *******************

************************************************************************

end-of-selection.

  if p_one = 'X'.

    perform alv.

  endif.

  • User Command

at line-selection.

  • Interactive to CS03 Transaction

  case sy-ucomm.

    when 'PICK' or 'F2'.

      if not alv_stb-idnrk is initial .

        if not alv_stb-werks is initial.

          if not alv_stb-objty is initial.

            SET PARAMETER ID 'MAT' FIELD alv_stb-idnrk.

            SET PARAMETER ID 'WRK' FIELD alv_stb-werks.

            SET PARAMETER ID 'CSV' FIELD alv_stb-OBJTY.

            call transaction c_tcode and skip first screen.

          endif.

        endif.

      endif.

      clear alv_stb.

  endcase.

*&----


*

*&      Form  get_data

*&----


*

  •       Get data from MAST and MAKT Table

*----


*

FORM get_data.

  data : wa_lines type sy-index.

  REFRESH : T_MAST,

            t_STB,

            t_MATCAT,

            alv_STB.

  CLEAR : T_MAST,

            t_STB,

            t_MATCAT,

            alv_STB.

  • Get the data from MAST Table

  • Get all the information from MAST - BOM Table

  SELECT * FROM mast INTO TABLE t_mast WHERE matnr IN s_matnr AND

                                             werks = p_werks  AND

                                             stlan IN s_stlan AND

                                             stlal IN s_stlal.

  describe table t_mast lines  wa_lines.

  if wa_lines is initial.

    Write:/2 'List contains no data'.

    stop.

  endif.

  loop at t_mast.

    clear : v_maktx.

  • Start of change  Seshu

  • Reason - Remove the new page option

    if sy-tabix ne 1.

      skip 1.

    endif.

  • End of Change  Seshu

  • Get the material Description

    select single maktx from makt into  v_maktx

                             where matnr = t_mast-matnr

                             and   spras = 'E'.

  • Get the material details from STKO Table

    select single * from stko into wa_stko

                    where STLTY = 'M'

                    and   STLNR = t_mast-stlnr

                    and   STLAL = t_mast-stlal.

  • Main Header for Each Material

    format color 5 on.

    write:/2 'Material',20 'Material Description',65 'Alternative BOM',

         90 'Base Qty', 115 'Base Unit'.

    format color 5 off.

    format color 1 on.

    write:/2 t_mast-matnr,20 v_maktx,65 wa_stko-STLAL, 85 wa_stko-BMENG,

           115 wa_stko-BMEIN.

    format color 1 off.

  • Use the Function Module and get the format level by level

    perform get_level_level.

  endloop.

ENDFORM.                    " get_data

*----


*

  • Top of page                                                  *

*----


*

top-of-page.

  perform report_header .

*&----


*

*&      Form  report_header

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM report_header.

  new-page line-size 160 .

  format color col_heading intensified on.

  write:/ sy-uline(160) .

*--- Write Company Name.

  perform calc_col_and_write using    text-h00

                                      sy-linsz.

*--- Write Report Title.

  perform calc_col_and_write using    sy-title

                                      sy-linsz.

*--- Write User Id, Date / Time, Program Id, Page etc.

  perform write_other_hdr_details.

  write:/ sy-uline(160) .

ENDFORM.                    " report_header

*&----


*

*&      Form  calc_col_and_write

*&----


*

  •       text

*----


*

  •      -->P_TEXT_H00  text

  •      -->P_SY_LINSZ  text

*----


*

FORM calc_col_and_write USING    P_TEXT

                                 P_LINSZ.

  data: col1 type i,

  •          col2 type i,

          len  type i,

          str  type i.

  str  = strlen( p_text ).

  col1 = ( p_linsz / 2 ) - ( str / 2 ) .

  len  = p_linsz - col1 - 2.

  write: at  /1  ' '.

  write: at  col1 p_text,

         at  sy-colno(len) space.

  write  at  160 ' '.

ENDFORM.                    " calc_col_and_write

*&----


*

*&      Form  write_other_hdr_details

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM write_other_hdr_details.

  data: col1 type i,

          col2 type i,

          len  type i.

  col1 = 3.

  write:/1 ' '.

  write: at  col1 'UserId  : ',

                  sy-uname.

  len = sy-linsz - 1.

  write at sy-colno(len) space.

  col2 = sy-linsz - 18.

  write: at col2 'Date: ',

                 sy-datum mm/dd/yyyy.

  write: at sy-linsz ' '.

  write:/1 ' '.

  write: at  col1 'ReportId: ',

                  sy-repid.

  write at sy-colno(len) space.

  col2 = sy-linsz - 18.

  write: at col2 'Page: ',

                  sy-pagno.

  write: at sy-linsz ' '.

ENDFORM.                    " write_other_hdr_details

*&----


*

*&      Form  get_data_component

*&----


*

  •       Get the data based on Component level

*----


*

FORM get_data_component.

  data wa_lines type i.

*-- Get the BOM item details

  SELECT  stlty stlnr stlkn stpoz idnrk meins menge

          FROM stpo

          INTO TABLE t_stpo

  WHERE   idnrk IN s_idnrk.

  IF sy-subrc = 0.

    CLEAR wa_lines.

    DESCRIBE TABLE t_stpo LINES wa_lines.

    IF wa_lines > 0.

      SELECT  stlty stlnr stlal stkoz bmein bmeng

              FROM stko

              INTO TABLE t_stko

              FOR ALL ENTRIES IN t_stpo

      WHERE stlnr = t_stpo-stlnr.

      CLEAR wa_lines.

      DELETE ADJACENT DUPLICATES FROM t_stko COMPARING ALL FIELDS.

      DESCRIBE TABLE t_stko LINES wa_lines.

      IF wa_lines > 0.

*-- Get the BOM item details

        SELECT * FROM mast INTO TABLE t_mast FOR ALL ENTRIES IN t_stko

                                            WHERE werks = p_werks  AND

                                              stlnr = t_stko-stlnr

                                              and stlal in s_stlal.

      ENDIF.

    ENDIF.

  else.

    Write:/2 'List contains no data'.

    stop.

  endif.

  loop at t_mast.

    clear : v_maktx.

  • Start of change  Seshu

  • Reason - Remove the new page option

    if sy-tabix ne 1.

      skip 1.

    endif.

  • End of change    Seshu

  • Get the material Description

    select single maktx from makt into  v_maktx

                             where matnr = t_mast-matnr

                             and   spras = 'E'.

  • Get the material details from STKO Table

    select single * from stko into wa_stko

                    where STLTY = 'M'

                    and   STLNR = t_mast-stlnr

                    and   STLAL = t_mast-stlal.

  • Main Header for Each Material

    format color 5 on.

    write:/2 'Material',20 'Material Description',65 'Alternative BOM',

         90 'Base Qty', 115 'Base Unit'.

    format color 5 off.

    format color 1 on.

    write:/2 t_mast-matnr,20 v_maktx,65 wa_stko-STLAL, 85 wa_stko-BMENG,

           115 wa_stko-BMEIN.

    format color 1 off.

  • Use the Function Module and get the format level by level

    perform get_level_level.

    clear : t_mast.

  endloop.

ENDFORM.                    " get_data_component

*&----


*

*&      Form  obj_ident

*&----


*

  •       text

*----


*

FORM obj_ident.

  • weder Mat noch Doc

  CHECK: T_stb-objty NE otyp_mat,

         T_stb-objty NE ootyp_mat,

         T_stb-objty NE otyp_doc,

         T_stb-objty NE otyp_ntm.

  • ?T418-WA schon ok

  • nein

  IF T_stb-postp NE t418-postp.

  •     T418 einlesen

    PERFORM t418_lesen USING T_stb-postp.

  ENDIF.

  PERFORM cl_clstab_maint.

  • ?MatNr-Eingabe bei diesem PosTyp moeglich

  •   und keine Textposition

  • trifft zu

  IF     t418-matin NE '-'

     AND t418-txpos IS INITIAL.

  •     aktuelles Objekt ist Material NLAG

    T_stb-objty = '1'.

  •     PosKurztext in ObjKurztext uebernehmen.

    T_stb-ojtxp = T_stb-potx1.

    MODIFY T_stb.

  ELSE.

    IF T_stb-objty IS INITIAL.

      T_stb-objty = '2'.

      MODIFY T_stb.

    ENDIF.

  ENDIF.

ENDFORM.                    " obj_ident

*&----


*

*&      Form  t418_lesen

*&----


*

  •       text

*----


*

  •      -->P_T_STB_POSTP  text

*----


*

FORM t418_lesen USING   lkl_postp LIKE stpo-postp.

  • T418-WA initialisieren

  CLEAR:

     t418.

  • Key angeben

  t418-postp = lkl_postp.

  • PosTypDefinition lesen

  READ TABLE t418.

ENDFORM.                    " t418_lesen

*&----


*

*&      Form  cl_clstab_maint

*&----


*

  •       text

*----


*

FORM cl_clstab_maint.

  • nur fuer Klassenpositionen

  CHECK t_STB-OBJTY EQ OTYP_KLA.

  • Teilkey der Klassenpositionentabelle

  CL_CLSTAB-CLASS = t_STB-CLASS.

  CL_CLSTAB-KLART = t_STB-KLART.

  • Klassenpositionentabelle lesen

  READ TABLE CL_CLSTAB

     WITH KEY CL_CLSTAB(21)

     BINARY SEARCH.

  • aktuelle Klassenposition bereits in Klassenpositionentabelle

  • nein

  IF SY-SUBRC <> 0.

  •     Klassenposition in Klassenpositionentabelle hinzufuegen

    INSERT CL_CLSTAB INDEX SY-TABIX.

  ENDIF.

ENDFORM.                    " cl_clstab_maint

*&----


*

*&      Form  alv_stb_prep

*&----


*

  •       Printing the data as LEVEL BY LEVEL

*----


*

FORM alv_stb_prep.

  CLEAR:

      alv_stb,

      stb_orig,

      stb_add.

  IF t_stb-hdnfo IS INITIAL.

    stb_orig = t_stb.

    IF t_stb-mngko >= max_num.

      stb_add-ovfls = ueberl_kz.

    ELSE.

      IF t_stb-mngko <= min_num.

        stb_add-ovfls = ueberl_kz.

      ELSE.

        CLEAR: stb_add-ovfls.

      ENDIF.

    ENDIF.

    IF NOT t_stb-xtlnr IS INITIAL.

      stb_add-bomfl = b_flag.

    ENDIF.

    IF    NOT t_stb-knobj IS INITIAL

       OR NOT t_stb-class IS INITIAL

       OR NOT t_stb-kzclb IS INITIAL.

      stb_add-knofl = 'X'.

    ENDIF.

  ELSE.

    CHECK t_stb-stufe > 1.

    alv_stb-info = 'C30'.

    IF t_stb-ttidx <> t_matcat-index.

      READ TABLE t_matcat INDEX t_stb-ttidx.

    ENDIF.

    stb_orig-hdnfo = t_stb-hdnfo.

    stb_orig-stufe = t_stb-stufe - 1 .

    stb_orig-ojtxp = t_stb-ojtxb.

    IF NOT t_stb-altst IS INITIAL.

      stb_orig-stlal = t_stb-stlal.

      IF stb_orig-stlal(1) EQ '0'.

        stb_orig-stlal(1) = ' '.

      ENDIF.

    ENDIF.

    stb_orig-idnrk = t_matcat-matnr.

  ENDIF.

  CLEAR:

    stb_add-dobjt,

    stb_add-objic.

  CASE t_stb-objty.

    WHEN otyp_mat.

      WRITE: stb_orig-idnrk TO ecfld.

      stb_add-objic = '@A6@'.

    WHEN 'M'.

      WRITE: stb_orig-idnrk TO ecfld.

      stb_add-objic = '@A6@'.

    WHEN otyp_noo.

      WRITE: stb_orig-potx1 TO ecfld.

      stb_add-objic = '@0Q@'.

    WHEN otyp_doc.

      write stb_orig-doknr to ecfld.                        "note 489354

      IF ecfld CP '*# '. ENDIF.                             "note 489354

      sy-fdpos = sy-fdpos + 1.                              "note 489354

      CONCATENATE

*d      stb_orig-doknr                                      "note 489354

        stb_orig-dokar

        stb_orig-doktl

        stb_orig-dokvr

*d      INTO ecfld                                          "note 489354

        INTO ecfld+sy-fdpos                                 "note 489354

        SEPARATED BY space.

      stb_add-objic = '@AR@'.

    WHEN otyp_kla.

      CONCATENATE

        stb_orig-class

        stb_orig-klart

        INTO ecfld

        SEPARATED BY space.

      stb_add-objic = '@7C@'.

    WHEN otyp_ntm.

      WRITE: stb_orig-intrm TO ecfld.

    WHEN OTHERS.

  ENDCASE.

*d CONDENSE ecfld.                                          "note 515408

  stb_add-dobjt = ecfld(40).

  CLEAR: ecfld.

  WRITE stb_orig-stufe TO stb_add-dstuf NO-SIGN.

*d  MOVE-CORRESPONDING stb_orig TO alv_stb.                 "note 331962

  MOVE-CORRESPONDING stb_add TO alv_stb.

  MOVE-CORRESPONDING stb_orig TO alv_stb.                   "note 331962

  APPEND alv_stb.

ENDFORM.                    " alv_stb_prep

*&----


*

*&      Form  get_level_level

*&----


*

  •       text

*----


*

FORM get_level_level.

  REFRESH : T_STB,

            T_MATCAT,

            ALV_STB.

  CLEAR : T_STB,

          T_MATCAT,

          ALV_STB.

  CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

       EXPORTING

            capid                 = 'PP01'

            datuv                 = sy-datum

            mktls                 = 'X'

            mehrs                 = 'X'

            mtnrv                 = t_mast-matnr

            stlal                 = '01'

            stlan                 = '1'

            stpst                 = 0

            svwvo                 = 'X'

            werks                 = p_werks

            vrsvo                 = 'X'

       TABLES

            stb                   = t_stb

            matcat                = t_matcat

       EXCEPTIONS

            alt_not_found         = 1

            call_invalid          = 2

            material_not_found    = 3

            missing_authorization = 4

            no_bom_found          = 5

            no_plant_data         = 6

            no_suitable_bom_found = 7

            conversion_error      = 8

            OTHERS                = 9.

  IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  •         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

  CLEAR: hd_tab.

  •         Entry der KlassenstatusTab. initialisieren

  •          cl_clstab,

  •         Entry 'Objekte von Klassen' initialisieren

  •          cl_objmemo.

  REFRESH: hd_tab.

  SORT t_matcat BY index ASCENDING.

  • Get the All levels

  loop at t_stb.

    IF NOT t_stb-hdnfo IS INITIAL.

      EXIT.

    ENDIF.

  • Object Identification

    PERFORM obj_ident.

    READ TABLE hd_tab

        WITH KEY stufe = t_stb-stufe

                 vwegx = t_stb-vwegx

        BINARY SEARCH

        TRANSPORTING NO FIELDS.

  •     ?gibt es diesen Satz schon

  •     nein

    IF sy-subrc <> 0.

  •        dann in SFP-Infosatzverweistab. aufnehmen

*d       APPEND HD_TAB.                                       "HGH054648

      hd_tab-stufe = t_stb-stufe.

                                                            "HGH054648

      hd_tab-vwegx = t_stb-vwegx.

                                                            "HGH054648

      INSERT hd_tab                                         "HGH054648

        INTO hd_tab                                         "HGH054648

        INDEX sy-tabix.                                     "HGH054648

  •        PosNr initialisieren

      CLEAR: t_stb-posnr.

  •        SFP-InfosatzKz setzen

      t_stb-hdnfo = 'X'.

  •         stb-objty = otyp_mat.

                                                            "HGE246532

  •        als SFP-Infosatz in die STB aufnehmen

      append t_stb.

    ENDIF.

*del  ENDIF.

    clear t_stb.

  endloop.

  SORT t_stb ASCENDING BY stufe

              index ASCENDING

*del        POSNR ASCENDING.                                  "HGC062735

              posnr ASCENDING                               "HGC062735

              hdnfo DESCENDING.

  LOOP AT t_stb.

    T_stb-index = sy-tabix.

    MODIFY T_stb.

    PERFORM alv_stb_prep.

  ENDLOOP.

  • Displays the Value as Level by Level

  loop at ALV_stb.

    if sy-tabix = 1.

      format color 3 on.

      write:/2 'Level',12 'Item',22 'Component',

      42 'Material Description',82 'Base Qty',

      107 'Base Unit',120 'Assembly Indicator'.

      format color 3 on.

    endif.

    if alv_stb-MEINs is initial.

      v_flag = 'X'.

    endif.

    if v_flag = 'X'.

      format color 5 on.

      write:/2 ALV_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

             42 alv_stb-OJTXP.

      format color 1 off.

    else.

      if alv_stb-STUFE = '1'.

        format color 1 on.

        write:/2 ALV_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

               42 alv_stb-OJTXP,72 alv_stb-mngko,

               107 alv_stb-MEINs, 120 alv_stb-bomfl .

        format color 1 off.

      elseif alv_stb-STUFE = '2'.

        format color 2 on.

        write:/2 alv_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

               42 alv_stb-OJTXP,72 alv_stb-mngko,

               107 alv_stb-MEINs,120 alv_stb-bomfl.

        format color 2 off.

      elseif alv_stb-STUFE = '3'.

        format color 3 on.

        write:/2 alv_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

                42 alv_stb-OJTXP,72 alv_stb-mngko,

                107 alv_stb-MEINs,120 alv_stb-bomfl .

        format color 3 off.

      elseif alv_stb-STUFE = '4'.

        format color 4 on.

        write:/2 alv_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

                42 alv_stb-OJTXP,72 alv_stb-mngko,

                107 alv_stb-MEINs,120 alv_stb-bomfl .

        format color 4 off.

      elseif alv_stb-STUFE = '5'.

        format color 5 on.

        write:/2 alv_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

                42 alv_stb-OJTXP,72 alv_stb-mngko,

                107 alv_stb-MEINs,120 alv_stb-bomfl .

        format color 5 off.

      elseif alv_stb-STUFE = '6'.

        format color 7 on.

        write:/2 alv_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

               42 alv_stb-OJTXP,72 alv_stb-mngko,

               107 alv_stb-MEINs,120 alv_stb-bomfl.

        format color 6 off.

      elseif alv_stb-STUFE = '7'.

        format color 7 on.

        write:/2 alv_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

               42 alv_stb-OJTXP,72 alv_stb-mngko,

               107 alv_stb-MEINs,120 alv_stb-bomfl .

        format color  7 off.

      else.

        format color 1 on.

        write:/2 alv_stb-STUFE,12 alv_stb-posnr,22 alv_stb-idnrk,

                42 alv_stb-OJTXP,72 alv_stb-mngko,

                107 alv_stb-MEINs,120 alv_stb-bomfl .

        format color  1 off.

      endif.

    endif.

    hide: alv_stb.

    clear : alv_stb.

    clear v_flag.

  endloop.

ENDFORM.                    " get_level_level

*&----


*

*&      Form  f4_for_variant

*&----


*

  •       text

*----


*

FORM f4_for_variant.

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

         EXPORTING

              is_variant          = g_variant

              i_save              = g_save

              i_tabname_header    = g_tabname_header

              i_tabname_item      = g_tabname_item

  •           it_default_fieldcat =

         IMPORTING

              e_exit              = g_exit

              es_variant          = gx_variant

         EXCEPTIONS

              not_found = 2.

  IF sy-subrc = 2.

    MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ELSE.

    IF g_exit = space.

      p_vari = gx_variant-variant.

    ENDIF.

  ENDIF.

ENDFORM.                    " f4_for_variant

*----


*

  •       FORM E03_EVENTTAB_BUILD                                       *

*----


*

  •       ........                                                      *

*----


*

  • -->  E03_LT_EVENTS                                                 *

*----


*

FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.

  DATA: ls_event TYPE slis_alv_event.

*

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

       EXPORTING

            i_list_type = 0

       IMPORTING

            et_events   = e03_lt_events.

  READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page

                           INTO ls_event.

  IF sy-subrc = 0.

    MOVE gc_formname_top_of_page TO ls_event-form.

    APPEND ls_event TO e03_lt_events.

  ENDIF.

ENDFORM.

*----


*

  •       FORM E04_COMMENT_BUILD                                        *

*----


*

  •       ........                                                      *

*----


*

  • -->  E04_LT_TOP_OF_PAGE                                            *

*----


*

FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.

  DATA: ls_line TYPE slis_listheader.

*

  • Listenüberschrift: Typ H

  CLEAR ls_line.

  ls_line-typ  = 'H'.

  • LS_LINE-KEY:  not used for this type

  ls_line-info = text-001.

  APPEND ls_line TO e04_lt_top_of_page.

  • Kopfinfo: Typ S

  CLEAR ls_line.

  ls_line-typ  = 'S'.

  ls_line-key  = text-050.

  ls_line-info = text-010.

  APPEND ls_line TO e04_lt_top_of_page.

  ls_line-key  = text-051.

  APPEND ls_line TO e04_lt_top_of_page.

  • Aktionsinfo: Typ A

  CLEAR ls_line.

  ls_line-typ  = 'A'.

  • LS_LINE-KEY:  not used for this type

  ls_line-info = text-002.

  APPEND ls_line TO  e04_lt_top_of_page.

ENDFORM.

*----


*

  •       FORM E07_SP_GROUP_BUILD                                       *

*----


*

  •       ........                                                      *

*----


*

  • -->  E07_LT_SP_GROUP                                               *

*----


*

FORM e07_sp_group_build USING e07_lt_sp_group TYPE slis_t_sp_group_alv.

  DATA: ls_sp_group TYPE slis_sp_group_alv.

*

  CLEAR  ls_sp_group.

  ls_sp_group-sp_group = 'A'.

  ls_sp_group-text     = text-005.

  APPEND ls_sp_group TO e07_lt_sp_group.

ENDFORM.

*&----


*

*&      Form  e08_layout_build

*&----


*

  •       text

*----


*

  •      -->P_GT_LAYOUT[]  text

*----


*

FORM e08_layout_build USING    gs_layout TYPE slis_layout_alv.

  gs_layout-f2code            = 'GDET'. "define hotspot

  gs_layout-zebra             = 'X'.

  gs_layout-colwidth_optimize = 'X'.

  gs_layout-no_hotspot        = ' '.

  gs_layout-detail_popup      = 'X'.

  gs_layout-no_input          = ' '.

  gs_layout-no_colhead        = ' '.

  gs_layout-lights_condense   = ' '.

  gs_layout-totals_only       = ' '.

  gs_layout-key_hotspot       = ' '.

  gs_layout-group_buttons     = ' '.

  gs_layout-no_vline          = ' '.

  • gs_layout-max_linesize   = '350'.

  gs_layout-no_totalline      = ' '.

  • gs_layout-totals_text      = 'UnRes Total'.

  • gs_layout-subtotals_text   = 'Material Type Total'.

  gs_layout-numc_sum          = 'X'.

  gs_layout-no_unit_splitting = 'X'.

  gs_layout-no_sumchoice      = ' '.

  gs_layout-no_subchoice      = ' '.

  gs_layout-totals_before_items = ' '.

  gs_layout-no_subtotals = ' '.

  gs_layout-totals_only = ' '.

  gs_layout-item_text = ' '.

  gs_layout-default_item = 'X'.

  gs_layout-expand_fieldname = 'EXPAND'.

ENDFORM.                    " e08_layout_build

*&----


*

*&      Form  VARIANT_INIT

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM variant_init.

*

  CLEAR g_variant.

  g_variant-report = g_repid.

ENDFORM.                               " VARIANT_INIT

*----


*

  •       FORM E01_FIELDCAT_INIT                                        *

*----


*

  •       ........                                                      *

*----


*

  • -->  E01_LT_FIELDCAT                                               *

*----


*

FORM e01_fieldcat_init USING e01_lt_fieldcat TYPE slis_t_fieldcat_alv.

  DATA: ls_fieldcat TYPE slis_fieldcat_alv.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname    = 'MATNR'.

  ls_fieldcat-tabname      = 'T_MAIN_MATERIAL'.

  ls_fieldcat-key          = 'X'.

  ls_fieldcat-ref_tabname = 'MAST'.

  • ls_fieldcat-reptext_ddic = 'Main Material'.

  • ls_fieldcat-no_out       = 'X'.

  • ls_fieldcat-no_sum       = 'X'.

  • ls_fieldcat-sp_group = 'A'.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

**

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname    = 'WERKS'.

  ls_fieldcat-tabname      = 'T_MAIN_MATERIAL'.

  • ls_fieldcat-key          = 'X'.

  ls_fieldcat-ref_tabname = 'MAST'.

  • ls_fieldcat-reptext_ddic = 'Plant'.

  ls_fieldcat-no_out       = 'X'.

  • ls_fieldcat-no_sum       = 'X'.

  • ls_fieldcat-sp_group = 'A'.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'MAKTX'.

  ls_fieldcat-tabname = 'T_MAIN_MATERIAL'.

  ls_fieldcat-ref_tabname = 'MAKT'.

  • ls_fieldcat-reptext_ddic = 'Material Description'.

  • w_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'STLAL'.

  ls_fieldcat-tabname = 'T_MAIN_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STKO'.

  • ls_fieldcat-reptext_ddic =  'Alt.BOM'.

  • w_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'STLNR'.

  ls_fieldcat-tabname = 'T_MAIN_MATERIAL'.

  • ls_fieldcat-reptext_ddic = 'BOM #'.

  ls_fieldcat-ref_tabname = 'STPO'.

  ls_fieldcat-no_out       = 'X'.

  • w_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'BMENG'.

  ls_fieldcat-tabname = 'T_MAIN_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STKO'.

  • ls_fieldcat-reptext_ddic =  'Base Qty'.

  • ls_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'BMEIN'.

  ls_fieldcat-tabname = 'T_MAIN_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STKO'.

  • ls_fieldcat-reptext_ddic =  'Base Qty'.

  • ls_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  • CLEAR ls_fieldcat.

  • ls_fieldcat-fieldname = 'MATNR'.

  • ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  • ls_fieldcat-reptext_ddic = 'Book Value'.

    • w_fieldcat-reptext_ddic = 'Total Value'.

    • w_fieldcat-just = 'R'.

    • w_fieldcat-outputlen = 16.

  • APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'IDNRK'.

  ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STPO'.

  • ls_fieldcat-reptext_ddic = 'BOM Component'.

  • w_fieldcat-reptext_ddic = 'Total Value'.

  • w_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'WERKS'.

  ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  ls_fieldcat-ref_tabname = 'MAST'.

  ls_fieldcat-no_out       = 'X'.

  • ls_fieldcat-reptext_ddic = 'Plant'.

  • w_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'MAKTX'.

  ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  ls_fieldcat-ref_tabname = 'MAKT'.

  • ls_fieldcat-reptext_ddic = 'BOM Component Description'.

  • ls_fieldcat-just = 'L'.

  • ls_fieldcat-outputlen = 40.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'STLAL'.

  ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STKO'.

  • ls_fieldcat-no_out       = 'X'.

  • ls_fieldcat-reptext_ddic =  'Alt.BOM'.

  • w_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'STLNR'.

  ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STPO'.

  ls_fieldcat-no_out       = 'X'.

  • ls_fieldcat-reptext_ddic = 'BOM #'.

  • w_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'MENGE'.

  ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STPO'.

  • ls_fieldcat-reptext_ddic = 'Component Qty'.

  • ls_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

  CLEAR ls_fieldcat.

  ls_fieldcat-fieldname = 'MEINS'.

  ls_fieldcat-tabname = 'T_ITEM_MATERIAL'.

  ls_fieldcat-ref_tabname = 'STPO'.

  • ls_fieldcat-reptext_ddic =  'Base Qty'.

  • ls_fieldcat-just = 'R'.

  • w_fieldcat-outputlen = 16.

  APPEND ls_fieldcat TO e01_lt_fieldcat.

ENDFORM.

*&----


*

*&      Form  select_data

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM select_data.

  DATA: wa_lines TYPE i.

  IF p_bomlst = 'X'.

    SELECT * FROM makt INTO TABLE t_makt WHERE matnr IN s_matnr.

  • Get all the information from MAST - BOM Table

    SELECT * FROM mast INTO TABLE t_mast WHERE matnr IN s_matnr AND

                                               werks = p_werks  AND

                                               stlan IN s_stlan AND

                                               stlal IN s_stlal.

    IF sy-subrc = 0.

      CLEAR wa_lines.

      DESCRIBE TABLE t_mast LINES wa_lines.

      IF wa_lines > 0.

        SELECT  stlty stlnr stlal stkoz bmein bmeng

                FROM stko

                INTO TABLE t_stko

                FOR ALL ENTRIES IN t_mast

        WHERE stlnr = t_mast-stlnr.

        CLEAR wa_lines.

        DESCRIBE TABLE t_mast LINES wa_lines.

        IF wa_lines > 0.

*-- Get the BOM item details

          SELECT  stlty stlnr stlkn stpoz idnrk meins menge

                  FROM stpo

                  INTO TABLE t_stpo

                  FOR ALL ENTRIES IN t_stko

          WHERE   stlty = t_stko-stlty AND

                  stlnr = t_stko-stlnr AND

                  idnrk IN s_idnrk.

          SELECT * FROM makt APPENDING TABLE   t_makt

                  FOR ALL ENTRIES IN t_stpo

                  WHERE matnr = t_stpo-idnrk.

        ENDIF.

      ENDIF.

    ENDIF.

*-- Move into the internal table according to selection

*-- for Material BOM list - Add the materials in the header and the

*-- list in the items table

    LOOP AT t_mast.

      MOVE t_mast-werks TO t_main_material-werks.

      MOVE t_mast-matnr TO t_main_material-matnr.

      MOVE t_mast-stlal TO t_main_material-stlal.

      MOVE t_mast-stlnr TO t_main_material-stlnr.

      READ TABLE t_stko WITH KEY stlnr = t_mast-stlnr

                                 stlal = t_mast-stlal.

      MOVE t_stko-bmeng TO t_main_material-bmeng.

      MOVE t_stko-bmein to t_main_material-bmein.

      READ TABLE t_makt WITH KEY matnr = t_mast-matnr

                                 spras = 'EN'.

      MOVE t_makt-maktx TO t_main_material-maktx. "Description

      t_main_material-expand = space.

      APPEND t_main_material.

    ENDLOOP.

*-- Move the

    LOOP AT t_mast.

      MOVE t_mast-matnr TO t_item_material-matnr.

      MOVE t_mast-werks TO t_item_material-werks.

      MOVE t_mast-stlal TO t_item_material-stlal.

      MOVE t_mast-stlnr TO t_item_material-stlnr.

      LOOP AT t_stpo WHERE stlnr = t_mast-stlnr.

        MOVE t_stpo-menge TO t_item_material-menge.

        MOVE t_stpo-meins to t_item_material-meins.

        MOVE t_stpo-idnrk TO t_item_material-idnrk.

        READ TABLE t_makt WITH KEY matnr = t_stpo-idnrk

                                   spras = 'EN'.

        MOVE t_makt-maktx TO t_item_material-maktx. "Description

        APPEND t_item_material.

      ENDLOOP.

    ENDLOOP.

  ELSE.

*-- Now the components where used list selected

*-- Get BOM description

    SELECT * FROM makt INTO TABLE t_makt WHERE matnr IN s_idnrk.

  • Get all the information from MAST - BOM Table

  •    SELECT * FROM mast INTO TABLE t_mast FOR ALL ENTRIES IN t_stko

  •    WHERE matnr IN s_matnr AND

  •                                               werks = p_werks  AND

  •                                               stlan IN s_stlan AND

  •                                               stlal IN s_stlal.

*-- Get the BOM item details

    SELECT  stlty stlnr stlkn stpoz idnrk meins menge

            FROM stpo

            INTO TABLE t_stpo

    WHERE   idnrk IN s_idnrk.

    IF sy-subrc = 0.

      CLEAR wa_lines.

      DESCRIBE TABLE t_stpo LINES wa_lines.

      IF wa_lines > 0.

        SELECT  stlty stlnr stlal stkoz bmein bmeng

                FROM stko

                INTO TABLE t_stko

                FOR ALL ENTRIES IN t_stpo

        WHERE stlnr = t_stpo-stlnr.

        CLEAR wa_lines.

        DELETE ADJACENT DUPLICATES FROM t_stko COMPARING ALL FIELDS.

        DESCRIBE TABLE t_stko LINES wa_lines.

        IF wa_lines > 0.

*-- Get the BOM item details

         SELECT * FROM mast INTO TABLE t_mast FOR ALL ENTRIES IN t_stko

                                             WHERE werks = p_werks  AND

                                               stlnr = t_stko-stlnr AND

                                                       matnr IN s_matnr.

          SELECT * FROM makt APPENDING TABLE   t_makt

                  FOR ALL ENTRIES IN t_mast

                  WHERE matnr = t_mast-matnr.

        ENDIF.

      ENDIF.

    ENDIF.

*-- Move into the internal table according to selection

*-- for Material BOM list - Add the materials in the header and the

*-- list in the items table

    LOOP AT t_mast.

      MOVE t_mast-werks TO t_main_material-werks.

      MOVE t_mast-matnr TO t_main_material-matnr.

      MOVE t_mast-stlal TO t_main_material-stlal.

      MOVE t_mast-stlnr TO t_main_material-stlnr.

      READ TABLE t_stko WITH KEY stlnr = t_mast-stlnr

                                 stlal = t_mast-stlal.

      MOVE t_stko-bmeng TO t_main_material-bmeng.

      MOVE t_stko-bmein to t_main_material-bmein.

      READ TABLE t_makt WITH KEY matnr = t_mast-matnr

                                 spras = 'EN'.

      MOVE t_makt-maktx TO t_main_material-maktx. "Description

      t_main_material-expand = space.

      APPEND t_main_material.

    ENDLOOP.

*-- Move the

    LOOP AT t_mast.

      MOVE t_mast-matnr TO t_item_material-matnr.

      MOVE t_mast-werks TO t_item_material-werks.

      MOVE t_mast-stlal TO t_item_material-stlal.

      MOVE t_mast-stlnr TO t_item_material-stlnr.

      LOOP AT t_stpo WHERE stlnr = t_mast-stlnr.

        MOVE t_stpo-menge TO t_item_material-menge.

        MOVE t_stpo-idnrk TO t_item_material-idnrk.

        MOVE t_stpo-meins to t_item_material-meins.

        READ TABLE t_makt WITH KEY matnr = t_stpo-idnrk

                                   spras = 'EN'.

        MOVE t_makt-maktx TO t_item_material-maktx. "Description

        APPEND t_item_material.

      ENDLOOP.

    ENDLOOP.

  ENDIF. "p_bomlst

endform.

*&----


*

*&      Form  alv

*&----


*

  •       text

*----


*

  • -->  p1        text

  • <--  p2        text

*----


*

FORM alv.

  • Call ABAP/4 List Viewer

  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

       EXPORTING

            i_callback_program       = g_repid

  •           I_CALLBACK_PF_STATUS_SET = ' '

  •           I_CALLBACK_USER_COMMAND  = ' '

            is_layout                = gs_layout

            it_fieldcat              = gt_fieldcat[]

  •           IT_EXCLUDING             =

  •            it_special_groups        = gt_sp_group[]

  •           IT_SORT                  =

  •           IT_FILTER                =

  •           IS_SEL_HIDE              =

  •           I_SCREEN_START_COLUMN    = 0

  •           I_SCREEN_START_LINE      = 0

  •           I_SCREEN_END_COLUMN      = 0

  •           I_SCREEN_END_LINE        = 0

  •           i_default                = g_default

            i_save                   = g_save

  •            is_variant               = g_variant

            it_events                = gt_events[]

  •           IT_EVENT_EXIT            =

            i_tabname_header         = g_tabname_header

            i_tabname_item           = g_tabname_item

            is_keyinfo               = gs_keyinfo

  •           IS_PRINT                 =

  •      IMPORTING

  •           E_EXIT_CAUSED_BY_CALLER  =

       TABLES

            t_outtab_header          = t_main_material

            t_outtab_item            = t_item_material.

ENDFORM.                    " alv

P_ALL     ?...

P_BOMLST     BOM Components List

P_COMPON     Components Where Used List

P_ONE     ?...

P_VARI     Layout

P_WERKS     Plant

S_IDNRK     Component

S_MATNR     Material

S_STLAL     Alternative BOM

S_STLAN     BOM usage

Thanks

Seshu

Jul 07 19

Re: multilevel bom explosion  

10:26 // Gaurav Mehta

any new ideas please????

Date Views Headline Answers
21.01.2013 199 52-No BOM selected 18
13.12.2012 34 CK40N and bill of materials 1
04.12.2012 53 Component Alt BOM not displaying in Break up of Finished part in Multilevel 4
27.11.2012 78 BOM is not exploded in CS12 5
19.11.2012 40 Rounding Value in MRP1 2
09.11.2012 91 Report for matl availability 5
08.11.2012 103 Report BOM / Routing Information. 4

Feedback