<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: BOM tables in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509715#M1066593</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The easiest way to look up BOM data is with this function module "CS_BOM_EXPL_MAT_V2".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However I have looked up data with the tables as well.  It's a lot of code, and it may change.   We have had some changes to it.   We may have more changes.   It's easy to miss something.  And it was written a while ago.   Meaning it has tables with headers... etc...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good Luck!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Michelle&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The table passed to the function module looks like this:&lt;/P&gt;&lt;P&gt;I_MATNR	LIKE	ZSTRUCT_MATNR	Structure that contains only the material number&lt;/P&gt;&lt;P&gt;O_ITEM	LIKE	ZSTRUCT_BOM	BOM structure used with Z_BOM_EXPLODE_ONE_LEVEL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FUNCTION z_bom_explode_one_level.&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;"&lt;/STRONG&gt;"Local interface:&lt;/P&gt;&lt;P&gt;*"  IMPORTING&lt;/P&gt;&lt;P&gt;*"     REFERENCE(EFFECTIVE_DATE) LIKE  SY-DATUM&lt;/P&gt;&lt;P&gt;*"     REFERENCE(INCLUDE_FIXED) TYPE  ZCHAR1 DEFAULT ' '&lt;/P&gt;&lt;P&gt;*"     REFERENCE(INCLUDE_FUTURE) TYPE  ZCHAR1 DEFAULT ' '&lt;/P&gt;&lt;P&gt;*"  TABLES&lt;/P&gt;&lt;P&gt;*"      I_MATNR STRUCTURE  ZSTRUCT_MATNR&lt;/P&gt;&lt;P&gt;*"      O_ITEM STRUCTURE  ZSTRUCT_BOM&lt;/P&gt;&lt;P&gt;*"  EXCEPTIONS&lt;/P&gt;&lt;P&gt;*"      NO_MATERIALS_SENT&lt;/P&gt;&lt;P&gt;*"      NO_BOM&lt;/P&gt;&lt;P&gt;*"      NO_BOM_ITEMS&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Task #       Date           Prgmr   Description&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  D46K905338       add field definition for field&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      i_include-fixed. This allows&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      the calling program to determine&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      whether or not STPO records&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      where FMENG(fixed qty)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      field not blank are deleted&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      from internal table. If&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      include_fixed parm = ' ',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      the fixed qty records are&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      deleted.  If include_fixed parm&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      = 'X', those fixed qty records&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      are retained.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*D46K905424                 Add sort to i_mast&lt;/P&gt;&lt;P&gt;*D46K907122              clear a couple internal tables&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      to handle situation where this&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      function is called &amp;gt; 1 time&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      during the run of the calling&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*D46K916409        Remove all deleted records from&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      I_Stas&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*D46K921679          change FM to include future&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      effective materials.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF i_matnr[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    RAISE no_materials_sent.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  i_matnr1[] = i_matnr[].&lt;/P&gt;&lt;P&gt;  i_effective_date = effective_date.&lt;/P&gt;&lt;P&gt;  i_include_fixed = include_fixed.&lt;/P&gt;&lt;P&gt;  i_include_future = include_future.                        "D46K916409&lt;/P&gt;&lt;P&gt;  CLEAR i_mkal.                                             "D46K907122&lt;/P&gt;&lt;P&gt;  REFRESH i_mkal.                                           "D46K907122&lt;/P&gt;&lt;P&gt;  CLEAR i_stas2.                                            "D46K907122&lt;/P&gt;&lt;P&gt;  REFRESH i_stas2.                                          "D46K907122&lt;/P&gt;&lt;P&gt;  PERFORM load_bom_tables.&lt;/P&gt;&lt;P&gt;  PERFORM get_item_table.&lt;/P&gt;&lt;P&gt;  IF NOT i_include_future IS INITIAL.                       "D46K921679&lt;/P&gt;&lt;P&gt;    PERFORM add_future_effective_materials.                 "D46K921679&lt;/P&gt;&lt;P&gt;  ENDIF.                                                    "D46K921679&lt;/P&gt;&lt;P&gt;  SORT i_item BY matnr werks.                               "D46K921679&lt;/P&gt;&lt;P&gt;  o_item[] = i_item[].&lt;/P&gt;&lt;P&gt;ENDFUNCTION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM load_bom_tables                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Pull the information from the DB tables.                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM load_bom_tables.&lt;/P&gt;&lt;P&gt;  SELECT matnr werks stlan stlnr stlal FROM mast INTO TABLE i_mast&lt;/P&gt;&lt;P&gt;       FOR ALL ENTRIES IN i_matnr1&lt;/P&gt;&lt;P&gt;          WHERE matnr = i_matnr1-matnr.&lt;/P&gt;&lt;P&gt;  LOOP AT i_mast.&lt;/P&gt;&lt;P&gt;    IF i_mast-stlan &amp;lt;&amp;gt; '1'.&lt;/P&gt;&lt;P&gt;      DELETE i_mast.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  IF i_mast[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    RAISE no_bom.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;Load BOM header information.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  SELECT stlty stlnr stlal stkoz bmeng FROM stko INTO TABLE i_stko&lt;/P&gt;&lt;P&gt;     FOR ALL ENTRIES IN i_mast&lt;/P&gt;&lt;P&gt;         WHERE stlty = c_m AND&lt;/P&gt;&lt;P&gt;               stlnr = i_mast-stlnr AND&lt;/P&gt;&lt;P&gt;               stlal = i_mast-stlal.&lt;/P&gt;&lt;P&gt;  SORT i_stko BY stlnr stlal.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;Load Version table with the lowest version number.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  SELECT matnr werks verid plnty plnnr stlal alnal          "D46K921679&lt;/P&gt;&lt;P&gt;           INTO TABLE i_mkal2&lt;/P&gt;&lt;P&gt;           FROM mkal&lt;/P&gt;&lt;P&gt;           FOR ALL ENTRIES IN i_matnr1&lt;/P&gt;&lt;P&gt;           WHERE matnr = i_matnr1-matnr.&lt;/P&gt;&lt;P&gt;  SORT i_mkal2 BY matnr verid.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GET MKAL DATA WITH LOWEST VERSION ID (VERID)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT i_mkal2.&lt;/P&gt;&lt;P&gt;    IF i_mkal2-matnr &amp;lt;&amp;gt; i_mkal-matnr.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING i_mkal2 TO i_mkal.&lt;/P&gt;&lt;P&gt;      APPEND i_mkal.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  SORT i_matnr1 BY matnr.&lt;/P&gt;&lt;P&gt;  SORT i_mkal.&lt;/P&gt;&lt;P&gt;  SELECT stlty stlnr stlkn stpoz menge datuv idnrk postp fmeng&lt;/P&gt;&lt;P&gt;                                 potx1 lkenz&lt;/P&gt;&lt;P&gt;          FROM stpo INTO TABLE i_stpo&lt;/P&gt;&lt;P&gt;              FOR ALL ENTRIES IN i_mast&lt;/P&gt;&lt;P&gt;                      WHERE stlnr = i_mast-stlnr.&lt;/P&gt;&lt;P&gt;  DELETE i_stpo WHERE lkenz = 'X'.&lt;/P&gt;&lt;P&gt;  SORT i_stpo BY stlnr stlkn.&lt;/P&gt;&lt;P&gt;  SELECT stlty stlnr stlal stlkn stasz lkenz datuv&lt;/P&gt;&lt;P&gt;                   FROM stas INTO TABLE i_stas&lt;/P&gt;&lt;P&gt;       FOR ALL ENTRIES IN i_mast&lt;/P&gt;&lt;P&gt;                 WHERE stlnr = i_mast-stlnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Pull only the valid records from i_stas...  (Records not deleted that&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; fall into the effective date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SORT i_stas BY stlnr stlal stlkn stasz datuv.             "D46K921679&lt;/P&gt;&lt;P&gt;  CLEAR: sav_stlnr, sav_stlal, sav_stlkn.                   "D46K921679&lt;/P&gt;&lt;P&gt;  LOOP AT i_stas.&lt;/P&gt;&lt;P&gt;    stas_tabix = sy-tabix - 1.                              "D46K921679&lt;/P&gt;&lt;P&gt;    IF sav_stlnr = i_stas-stlnr AND                         "D46K921679&lt;/P&gt;&lt;P&gt;       sav_stlal = i_stas-stlal AND                         "D46K921679&lt;/P&gt;&lt;P&gt;       sav_stlkn = i_stas-stlkn.                            "D46K921679&lt;/P&gt;&lt;P&gt;      one_day_back = i_stas-datuv - 1.                      "D46K921679&lt;/P&gt;&lt;P&gt;      READ TABLE i_stas INTO wa_stas INDEX stas_tabix.      "D46K921679&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.                                      "D46K921679&lt;/P&gt;&lt;P&gt;        wa_stas-enddt = one_day_back.                       "D46K921679&lt;/P&gt;&lt;P&gt;        MODIFY  i_stas FROM wa_stas INDEX stas_tabix.       "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ELSE.                                                   "D46K921679&lt;/P&gt;&lt;P&gt;      sav_stlnr = i_stas-stlnr.                             "D46K921679&lt;/P&gt;&lt;P&gt;      sav_stlal = i_stas-stlal.                             "D46K921679&lt;/P&gt;&lt;P&gt;      sav_stlkn = i_stas-stlkn.                             "D46K921679&lt;/P&gt;&lt;P&gt;      i_stas-enddt = '99991231'.                            "D46K921679&lt;/P&gt;&lt;P&gt;      MODIFY i_stas INDEX sy-tabix.                         "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;    READ TABLE i_stas2 WITH KEY stlnr = i_stas-stlnr&lt;/P&gt;&lt;P&gt;                          stlal = i_stas-stlal&lt;/P&gt;&lt;P&gt;                          stlkn = i_stas-stlkn&lt;/P&gt;&lt;P&gt;                          BINARY SEARCH.&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      i_stas2 = i_stas.&lt;/P&gt;&lt;P&gt;      IF i_stas-datuv &amp;lt;=  i_effective_date.&lt;/P&gt;&lt;P&gt;        IF sy-tabix &amp;gt; 0.&lt;/P&gt;&lt;P&gt;          INSERT i_stas2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          INSERT i_stas2 INDEX 1.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      IF i_stas-datuv &amp;lt;=  i_effective_date AND&lt;/P&gt;&lt;P&gt;         i_stas-datuv &amp;gt; i_stas2-datuv.&lt;/P&gt;&lt;P&gt;        i_stas2 = i_stas.&lt;/P&gt;&lt;P&gt;        MODIFY i_stas2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="3" type="ul"&gt;&lt;P&gt;Added for duplicate records one is deleted one isn't.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;      IF i_stas-datuv &amp;lt;= i_effective_date AND&lt;/P&gt;&lt;P&gt;         i_stas-datuv = i_stas2-datuv AND&lt;/P&gt;&lt;P&gt;         i_stas-lkenz = 'X'.                                "D46K916409&lt;/P&gt;&lt;P&gt;        i_stas2 = i_stas.                                   "D46K916409&lt;/P&gt;&lt;P&gt;        MODIFY i_stas2 INDEX sy-tabix.                      "D46K916409&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K916409&lt;/P&gt;&lt;P&gt;      IF NOT i_include_future IS INITIAL.                   "D46K921679&lt;/P&gt;&lt;P&gt;        IF i_stas-datuv &amp;gt; i_effective_date.                 "D46K921679&lt;/P&gt;&lt;P&gt;          wa_stas-lkenz = ' '.                              "D46K921679&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          wa_stas-lkenz = i_stas-lkenz.                     "D46K921679&lt;/P&gt;&lt;P&gt;        ENDIF.                                              "D46K921679&lt;/P&gt;&lt;P&gt;        MODIFY i_stas2 FROM wa_stas INDEX sy-tabix.         "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  DELETE i_stas2 WHERE lkenz = 'X'.&lt;/P&gt;&lt;P&gt;  SORT i_stas2 BY stlnr stlal stlkn.                        "D46K921679&lt;/P&gt;&lt;P&gt;  IF i_stpo[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    RAISE no_bom_items.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  SELECT matnr mtart matkl FROM mara INTO TABLE i_mara&lt;/P&gt;&lt;P&gt;         FOR ALL ENTRIES IN i_stpo&lt;/P&gt;&lt;P&gt;            WHERE matnr = i_stpo-idnrk.&lt;/P&gt;&lt;P&gt;  SORT i_mara BY matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SORT i_stas BY stlty stlnr stlkn.                         "D46K921679&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SORT i_mast BY matnr werks stlal.                         "D46K921679&lt;/P&gt;&lt;P&gt;  IF i_include_fixed = ' '.                                 "D46K905338&lt;/P&gt;&lt;P&gt;    DELETE i_stpo WHERE fmeng &amp;lt;&amp;gt; ' '.&lt;/P&gt;&lt;P&gt;  ENDIF.                                                    "D46K905338&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM get_item_table                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Main processing...  Get the information for the table that    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      will be returned by the function module.                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_item_table.&lt;/P&gt;&lt;P&gt;  REFRESH: i_item.&lt;/P&gt;&lt;P&gt;  CLEAR: i_item.&lt;/P&gt;&lt;P&gt;  LOOP AT i_matnr1.&lt;/P&gt;&lt;P&gt;    READ TABLE i_mkal WITH KEY matnr = i_matnr1-matnr&lt;/P&gt;&lt;P&gt;                                BINARY SEARCH.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      PERFORM read_mast_using_alt_bom.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      PERFORM read_mast.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM read_mast_using_alt_bom                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      read the BOM header table MAST with the alt BOM               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM read_mast_using_alt_bom.&lt;/P&gt;&lt;P&gt;  READ TABLE i_mast WITH KEY matnr = i_matnr1-matnr&lt;/P&gt;&lt;P&gt;                             werks = i_mkal-werks           "D46K921679&lt;/P&gt;&lt;P&gt;                             stlal = i_mkal-stlal BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    PERFORM read_mast.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LOOP AT i_mast FROM sy-tabix.&lt;/P&gt;&lt;P&gt;      IF i_mast-matnr &amp;lt;&amp;gt; i_matnr1-matnr OR&lt;/P&gt;&lt;P&gt;         i_mast-werks &amp;lt;&amp;gt; i_mkal-werks OR                    "D46K921679&lt;/P&gt;&lt;P&gt;         i_mast-stlal &amp;lt;&amp;gt; i_mkal-stlal.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stko WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                 stlal = i_mast-stlal&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_stko-bmeng = 0.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stas2 WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                 stlal = i_mast-stlal&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      LOOP AT i_stas2 FROM sy-tabix.&lt;/P&gt;&lt;P&gt;        IF i_stas2-stlnr &amp;lt;&amp;gt; i_mast-stlnr OR&lt;/P&gt;&lt;P&gt;           i_stas2-stlal &amp;lt;&amp;gt; i_mast-stlal.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        PERFORM read_stpo.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM read_mast                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      read the BOM without the alternative BOM.                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM read_mast.&lt;/P&gt;&lt;P&gt;  stas2_found = 'N'.                                        "D46K921679&lt;/P&gt;&lt;P&gt;  READ TABLE i_mast WITH KEY matnr = i_matnr1-matnr&lt;/P&gt;&lt;P&gt;                               BINARY SEARCH.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    LOOP AT i_mast FROM sy-tabix.&lt;/P&gt;&lt;P&gt;      IF i_mast-matnr &amp;lt;&amp;gt; i_matnr1-matnr.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stko WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                stlal = i_mast-stlal        "D46K921679&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_stko-bmeng = 0.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stas2 WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                 stlal = i_mast-stlal       "D46K921679&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      LOOP AT i_stas2 FROM sy-tabix.&lt;/P&gt;&lt;P&gt;        IF i_stas2-stlnr &amp;lt;&amp;gt; i_mast-stlnr OR                 "D46K921679&lt;/P&gt;&lt;P&gt;           i_stas2-stlal &amp;lt;&amp;gt; i_mast-stlal.                   "D46K921679&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        stas2_found = 'Y'.                                  "D46K921679&lt;/P&gt;&lt;P&gt;        PERFORM read_stpo.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      IF stas2_found = 'Y'.                                 "D46K921679&lt;/P&gt;&lt;P&gt;        EXIT.                                               "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM read_stpo                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Read the item level tables using information pulled from stas  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     to get the valid records.  Fill the internal table being sent  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     back in the function module.                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM read_stpo.&lt;/P&gt;&lt;P&gt;  CLEAR: i_item.&lt;/P&gt;&lt;P&gt;  READ TABLE i_stpo WITH KEY stlnr = i_stas2-stlnr&lt;/P&gt;&lt;P&gt;                             stlkn = i_stas2-stlkn&lt;/P&gt;&lt;P&gt;                             BINARY SEARCH.&lt;/P&gt;&lt;P&gt;  LOOP AT i_stpo FROM sy-tabix.&lt;/P&gt;&lt;P&gt;    IF i_stpo-stlnr &amp;lt;&amp;gt; i_stas2-stlnr OR&lt;/P&gt;&lt;P&gt;       i_stpo-stlkn &amp;lt;&amp;gt; i_stas2-stlkn.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      READ TABLE i_mara WITH KEY matnr = i_stpo-idnrk&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        i_item-matkl = i_mara-matkl.&lt;/P&gt;&lt;P&gt;        i_item-mtart = i_mara-mtart.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF i_stko-bmeng &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_item-menge = i_stpo-menge / i_stko-bmeng.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      i_item-postp = i_stpo-postp.&lt;/P&gt;&lt;P&gt;      i_item-potx1 = i_stpo-potx1.&lt;/P&gt;&lt;P&gt;      i_item-matnr = i_mast-matnr.&lt;/P&gt;&lt;P&gt;      i_item-werks = i_mast-werks.&lt;/P&gt;&lt;P&gt;      i_item-idnrk = i_stpo-idnrk.&lt;/P&gt;&lt;P&gt;      i_item-begin_date = i_stas2-datuv.                    "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-end_date   = i_stas2-enddt.                    "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-active = 'X'.                                  "D46K921679&lt;/P&gt;&lt;P&gt;      APPEND i_item.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM add_future_effective_materials.&lt;/P&gt;&lt;P&gt;  SORT i_mast BY stlnr stlal.                               "D46K921679&lt;/P&gt;&lt;P&gt;  LOOP AT i_stas.                                           "D46K921679&lt;/P&gt;&lt;P&gt;    READ TABLE i_mast WITH KEY                              "D46K921679&lt;/P&gt;&lt;P&gt;           stlnr = i_stas-stlnr                             "D46K921679&lt;/P&gt;&lt;P&gt;           stlal = i_stas-stlal BINARY SEARCH.              "D46K921679&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF i_stas-lkenz &amp;lt;&amp;gt; 'X'.                               "D46K921679&lt;/P&gt;&lt;P&gt;        READ TABLE i_stko WITH KEY stlnr = i_stas-stlnr     "D46K921679&lt;/P&gt;&lt;P&gt;                                   stlal = i_stas-stlal     "D46K921679&lt;/P&gt;&lt;P&gt;                                   BINARY SEARCH.           "D46K921679&lt;/P&gt;&lt;P&gt;        IF sy-subrc &amp;lt;&amp;gt; 0.                                   "D46K921679&lt;/P&gt;&lt;P&gt;          i_stko-bmeng = 0.                                 "D46K921679&lt;/P&gt;&lt;P&gt;        ENDIF.                                              "D46K921679&lt;/P&gt;&lt;P&gt;        READ TABLE i_stas2 WITH KEY                         "D46K921679&lt;/P&gt;&lt;P&gt;          stlnr = i_stas-stlnr                              "D46K921679&lt;/P&gt;&lt;P&gt;          stlal = i_stas-stlal                              "D46K921679&lt;/P&gt;&lt;P&gt;          stlkn = i_stas-stlkn BINARY SEARCH.               "D46K921679&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.                                    "D46K921679&lt;/P&gt;&lt;P&gt;          IF i_stas-datuv &amp;gt; i_stas2-datuv AND               "D46K921679&lt;/P&gt;&lt;P&gt;          i_stas2-datuv &amp;gt; i_effective_date.                 "D46K921679&lt;/P&gt;&lt;P&gt;            PERFORM read_stpo_for_future_materials.         "D46K921679&lt;/P&gt;&lt;P&gt;          ENDIF.                                            "D46K921679&lt;/P&gt;&lt;P&gt;        ELSE.                                               "D46K921679&lt;/P&gt;&lt;P&gt;          IF i_stas-datuv &amp;gt; i_effective_date.               "D46K921679&lt;/P&gt;&lt;P&gt;            PERFORM read_stpo_for_future_materials.         "D46K921679&lt;/P&gt;&lt;P&gt;          ENDIF.                                            "D46K921679&lt;/P&gt;&lt;P&gt;        ENDIF.                                              "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get any materials that are effective startig tomorrow&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM read_stpo_for_future_materials.&lt;/P&gt;&lt;P&gt;  CLEAR: i_item.                                            "D46K921679&lt;/P&gt;&lt;P&gt;  READ TABLE i_stpo WITH KEY stlnr = i_stas-stlnr           "D46K921679&lt;/P&gt;&lt;P&gt;                             stlkn = i_stas-stlkn           "D46K921679&lt;/P&gt;&lt;P&gt;                             BINARY SEARCH.                 "D46K921679&lt;/P&gt;&lt;P&gt;  LOOP AT i_stpo FROM sy-tabix.                             "D46K921679&lt;/P&gt;&lt;P&gt;    IF i_stpo-stlnr &amp;lt;&amp;gt; i_stas-stlnr OR                      "D46K921679&lt;/P&gt;&lt;P&gt;       i_stpo-stlkn &amp;lt;&amp;gt; i_stas-stlkn.                        "D46K921679&lt;/P&gt;&lt;P&gt;      EXIT.                                                 "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                        "D46K921679&lt;/P&gt;&lt;P&gt;      READ TABLE i_mara WITH KEY matnr = i_stpo-idnrk       "D46K921679&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.             "D46K921679&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.                                      "D46K921679&lt;/P&gt;&lt;P&gt;        i_item-matkl = i_mara-matkl.                        "D46K921679&lt;/P&gt;&lt;P&gt;        i_item-mtart = i_mara-mtart.                        "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;      IF i_stko-bmeng &amp;lt;&amp;gt; 0.                                 "D46K921679&lt;/P&gt;&lt;P&gt;        i_item-menge = i_stpo-menge / i_stko-bmeng.         "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-postp = i_stpo-postp.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-potx1 = i_stpo-potx1.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-matnr = i_mast-matnr.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-werks = i_mast-werks.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-idnrk = i_stpo-idnrk.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-begin_date = i_stas-datuv.                     "D46K921679&lt;/P&gt;&lt;P&gt;      APPEND i_item.                                        "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 01 Oct 2008 11:09:51 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-10-01T11:09:51Z</dc:date>
    <item>
      <title>BOM tables</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509714#M1066592</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;i am creating one report which will give data of BOM component.&lt;/P&gt;&lt;P&gt;i am using MAST STKO and STPO,&lt;/P&gt;&lt;P&gt;but while debugging i found there are more than one line item are coming in STKO(BOM header  ) table itself,&lt;/P&gt;&lt;P&gt;and STPO is not having alternative BOM,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;so can any body tell how to get correct data from STPO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards]&lt;/P&gt;&lt;P&gt;Chandramani&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Oct 2008 08:10:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509714#M1066592</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-01T08:10:44Z</dc:date>
    </item>
    <item>
      <title>Re: BOM tables</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509715#M1066593</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The easiest way to look up BOM data is with this function module "CS_BOM_EXPL_MAT_V2".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However I have looked up data with the tables as well.  It's a lot of code, and it may change.   We have had some changes to it.   We may have more changes.   It's easy to miss something.  And it was written a while ago.   Meaning it has tables with headers... etc...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good Luck!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Michelle&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The table passed to the function module looks like this:&lt;/P&gt;&lt;P&gt;I_MATNR	LIKE	ZSTRUCT_MATNR	Structure that contains only the material number&lt;/P&gt;&lt;P&gt;O_ITEM	LIKE	ZSTRUCT_BOM	BOM structure used with Z_BOM_EXPLODE_ONE_LEVEL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FUNCTION z_bom_explode_one_level.&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;"&lt;/STRONG&gt;"Local interface:&lt;/P&gt;&lt;P&gt;*"  IMPORTING&lt;/P&gt;&lt;P&gt;*"     REFERENCE(EFFECTIVE_DATE) LIKE  SY-DATUM&lt;/P&gt;&lt;P&gt;*"     REFERENCE(INCLUDE_FIXED) TYPE  ZCHAR1 DEFAULT ' '&lt;/P&gt;&lt;P&gt;*"     REFERENCE(INCLUDE_FUTURE) TYPE  ZCHAR1 DEFAULT ' '&lt;/P&gt;&lt;P&gt;*"  TABLES&lt;/P&gt;&lt;P&gt;*"      I_MATNR STRUCTURE  ZSTRUCT_MATNR&lt;/P&gt;&lt;P&gt;*"      O_ITEM STRUCTURE  ZSTRUCT_BOM&lt;/P&gt;&lt;P&gt;*"  EXCEPTIONS&lt;/P&gt;&lt;P&gt;*"      NO_MATERIALS_SENT&lt;/P&gt;&lt;P&gt;*"      NO_BOM&lt;/P&gt;&lt;P&gt;*"      NO_BOM_ITEMS&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Task #       Date           Prgmr   Description&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  D46K905338       add field definition for field&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      i_include-fixed. This allows&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      the calling program to determine&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      whether or not STPO records&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      where FMENG(fixed qty)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      field not blank are deleted&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      from internal table. If&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      include_fixed parm = ' ',&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      the fixed qty records are&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      deleted.  If include_fixed parm&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      = 'X', those fixed qty records&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      are retained.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*D46K905424                 Add sort to i_mast&lt;/P&gt;&lt;P&gt;*D46K907122              clear a couple internal tables&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      to handle situation where this&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      function is called &amp;gt; 1 time&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      during the run of the calling&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*D46K916409        Remove all deleted records from&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      I_Stas&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*D46K921679          change FM to include future&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                      effective materials.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF i_matnr[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    RAISE no_materials_sent.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  i_matnr1[] = i_matnr[].&lt;/P&gt;&lt;P&gt;  i_effective_date = effective_date.&lt;/P&gt;&lt;P&gt;  i_include_fixed = include_fixed.&lt;/P&gt;&lt;P&gt;  i_include_future = include_future.                        "D46K916409&lt;/P&gt;&lt;P&gt;  CLEAR i_mkal.                                             "D46K907122&lt;/P&gt;&lt;P&gt;  REFRESH i_mkal.                                           "D46K907122&lt;/P&gt;&lt;P&gt;  CLEAR i_stas2.                                            "D46K907122&lt;/P&gt;&lt;P&gt;  REFRESH i_stas2.                                          "D46K907122&lt;/P&gt;&lt;P&gt;  PERFORM load_bom_tables.&lt;/P&gt;&lt;P&gt;  PERFORM get_item_table.&lt;/P&gt;&lt;P&gt;  IF NOT i_include_future IS INITIAL.                       "D46K921679&lt;/P&gt;&lt;P&gt;    PERFORM add_future_effective_materials.                 "D46K921679&lt;/P&gt;&lt;P&gt;  ENDIF.                                                    "D46K921679&lt;/P&gt;&lt;P&gt;  SORT i_item BY matnr werks.                               "D46K921679&lt;/P&gt;&lt;P&gt;  o_item[] = i_item[].&lt;/P&gt;&lt;P&gt;ENDFUNCTION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM load_bom_tables                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Pull the information from the DB tables.                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM load_bom_tables.&lt;/P&gt;&lt;P&gt;  SELECT matnr werks stlan stlnr stlal FROM mast INTO TABLE i_mast&lt;/P&gt;&lt;P&gt;       FOR ALL ENTRIES IN i_matnr1&lt;/P&gt;&lt;P&gt;          WHERE matnr = i_matnr1-matnr.&lt;/P&gt;&lt;P&gt;  LOOP AT i_mast.&lt;/P&gt;&lt;P&gt;    IF i_mast-stlan &amp;lt;&amp;gt; '1'.&lt;/P&gt;&lt;P&gt;      DELETE i_mast.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  IF i_mast[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    RAISE no_bom.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;Load BOM header information.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  SELECT stlty stlnr stlal stkoz bmeng FROM stko INTO TABLE i_stko&lt;/P&gt;&lt;P&gt;     FOR ALL ENTRIES IN i_mast&lt;/P&gt;&lt;P&gt;         WHERE stlty = c_m AND&lt;/P&gt;&lt;P&gt;               stlnr = i_mast-stlnr AND&lt;/P&gt;&lt;P&gt;               stlal = i_mast-stlal.&lt;/P&gt;&lt;P&gt;  SORT i_stko BY stlnr stlal.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;Load Version table with the lowest version number.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  SELECT matnr werks verid plnty plnnr stlal alnal          "D46K921679&lt;/P&gt;&lt;P&gt;           INTO TABLE i_mkal2&lt;/P&gt;&lt;P&gt;           FROM mkal&lt;/P&gt;&lt;P&gt;           FOR ALL ENTRIES IN i_matnr1&lt;/P&gt;&lt;P&gt;           WHERE matnr = i_matnr1-matnr.&lt;/P&gt;&lt;P&gt;  SORT i_mkal2 BY matnr verid.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GET MKAL DATA WITH LOWEST VERSION ID (VERID)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  LOOP AT i_mkal2.&lt;/P&gt;&lt;P&gt;    IF i_mkal2-matnr &amp;lt;&amp;gt; i_mkal-matnr.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING i_mkal2 TO i_mkal.&lt;/P&gt;&lt;P&gt;      APPEND i_mkal.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  SORT i_matnr1 BY matnr.&lt;/P&gt;&lt;P&gt;  SORT i_mkal.&lt;/P&gt;&lt;P&gt;  SELECT stlty stlnr stlkn stpoz menge datuv idnrk postp fmeng&lt;/P&gt;&lt;P&gt;                                 potx1 lkenz&lt;/P&gt;&lt;P&gt;          FROM stpo INTO TABLE i_stpo&lt;/P&gt;&lt;P&gt;              FOR ALL ENTRIES IN i_mast&lt;/P&gt;&lt;P&gt;                      WHERE stlnr = i_mast-stlnr.&lt;/P&gt;&lt;P&gt;  DELETE i_stpo WHERE lkenz = 'X'.&lt;/P&gt;&lt;P&gt;  SORT i_stpo BY stlnr stlkn.&lt;/P&gt;&lt;P&gt;  SELECT stlty stlnr stlal stlkn stasz lkenz datuv&lt;/P&gt;&lt;P&gt;                   FROM stas INTO TABLE i_stas&lt;/P&gt;&lt;P&gt;       FOR ALL ENTRIES IN i_mast&lt;/P&gt;&lt;P&gt;                 WHERE stlnr = i_mast-stlnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Pull only the valid records from i_stas...  (Records not deleted that&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; fall into the effective date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SORT i_stas BY stlnr stlal stlkn stasz datuv.             "D46K921679&lt;/P&gt;&lt;P&gt;  CLEAR: sav_stlnr, sav_stlal, sav_stlkn.                   "D46K921679&lt;/P&gt;&lt;P&gt;  LOOP AT i_stas.&lt;/P&gt;&lt;P&gt;    stas_tabix = sy-tabix - 1.                              "D46K921679&lt;/P&gt;&lt;P&gt;    IF sav_stlnr = i_stas-stlnr AND                         "D46K921679&lt;/P&gt;&lt;P&gt;       sav_stlal = i_stas-stlal AND                         "D46K921679&lt;/P&gt;&lt;P&gt;       sav_stlkn = i_stas-stlkn.                            "D46K921679&lt;/P&gt;&lt;P&gt;      one_day_back = i_stas-datuv - 1.                      "D46K921679&lt;/P&gt;&lt;P&gt;      READ TABLE i_stas INTO wa_stas INDEX stas_tabix.      "D46K921679&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.                                      "D46K921679&lt;/P&gt;&lt;P&gt;        wa_stas-enddt = one_day_back.                       "D46K921679&lt;/P&gt;&lt;P&gt;        MODIFY  i_stas FROM wa_stas INDEX stas_tabix.       "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ELSE.                                                   "D46K921679&lt;/P&gt;&lt;P&gt;      sav_stlnr = i_stas-stlnr.                             "D46K921679&lt;/P&gt;&lt;P&gt;      sav_stlal = i_stas-stlal.                             "D46K921679&lt;/P&gt;&lt;P&gt;      sav_stlkn = i_stas-stlkn.                             "D46K921679&lt;/P&gt;&lt;P&gt;      i_stas-enddt = '99991231'.                            "D46K921679&lt;/P&gt;&lt;P&gt;      MODIFY i_stas INDEX sy-tabix.                         "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;    READ TABLE i_stas2 WITH KEY stlnr = i_stas-stlnr&lt;/P&gt;&lt;P&gt;                          stlal = i_stas-stlal&lt;/P&gt;&lt;P&gt;                          stlkn = i_stas-stlkn&lt;/P&gt;&lt;P&gt;                          BINARY SEARCH.&lt;/P&gt;&lt;P&gt;    IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      i_stas2 = i_stas.&lt;/P&gt;&lt;P&gt;      IF i_stas-datuv &amp;lt;=  i_effective_date.&lt;/P&gt;&lt;P&gt;        IF sy-tabix &amp;gt; 0.&lt;/P&gt;&lt;P&gt;          INSERT i_stas2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          INSERT i_stas2 INDEX 1.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      IF i_stas-datuv &amp;lt;=  i_effective_date AND&lt;/P&gt;&lt;P&gt;         i_stas-datuv &amp;gt; i_stas2-datuv.&lt;/P&gt;&lt;P&gt;        i_stas2 = i_stas.&lt;/P&gt;&lt;P&gt;        MODIFY i_stas2 INDEX sy-tabix.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="3" type="ul"&gt;&lt;P&gt;Added for duplicate records one is deleted one isn't.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;      IF i_stas-datuv &amp;lt;= i_effective_date AND&lt;/P&gt;&lt;P&gt;         i_stas-datuv = i_stas2-datuv AND&lt;/P&gt;&lt;P&gt;         i_stas-lkenz = 'X'.                                "D46K916409&lt;/P&gt;&lt;P&gt;        i_stas2 = i_stas.                                   "D46K916409&lt;/P&gt;&lt;P&gt;        MODIFY i_stas2 INDEX sy-tabix.                      "D46K916409&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K916409&lt;/P&gt;&lt;P&gt;      IF NOT i_include_future IS INITIAL.                   "D46K921679&lt;/P&gt;&lt;P&gt;        IF i_stas-datuv &amp;gt; i_effective_date.                 "D46K921679&lt;/P&gt;&lt;P&gt;          wa_stas-lkenz = ' '.                              "D46K921679&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          wa_stas-lkenz = i_stas-lkenz.                     "D46K921679&lt;/P&gt;&lt;P&gt;        ENDIF.                                              "D46K921679&lt;/P&gt;&lt;P&gt;        MODIFY i_stas2 FROM wa_stas INDEX sy-tabix.         "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  DELETE i_stas2 WHERE lkenz = 'X'.&lt;/P&gt;&lt;P&gt;  SORT i_stas2 BY stlnr stlal stlkn.                        "D46K921679&lt;/P&gt;&lt;P&gt;  IF i_stpo[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    RAISE no_bom_items.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  SELECT matnr mtart matkl FROM mara INTO TABLE i_mara&lt;/P&gt;&lt;P&gt;         FOR ALL ENTRIES IN i_stpo&lt;/P&gt;&lt;P&gt;            WHERE matnr = i_stpo-idnrk.&lt;/P&gt;&lt;P&gt;  SORT i_mara BY matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SORT i_stas BY stlty stlnr stlkn.                         "D46K921679&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SORT i_mast BY matnr werks stlal.                         "D46K921679&lt;/P&gt;&lt;P&gt;  IF i_include_fixed = ' '.                                 "D46K905338&lt;/P&gt;&lt;P&gt;    DELETE i_stpo WHERE fmeng &amp;lt;&amp;gt; ' '.&lt;/P&gt;&lt;P&gt;  ENDIF.                                                    "D46K905338&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM get_item_table                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Main processing...  Get the information for the table that    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      will be returned by the function module.                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_item_table.&lt;/P&gt;&lt;P&gt;  REFRESH: i_item.&lt;/P&gt;&lt;P&gt;  CLEAR: i_item.&lt;/P&gt;&lt;P&gt;  LOOP AT i_matnr1.&lt;/P&gt;&lt;P&gt;    READ TABLE i_mkal WITH KEY matnr = i_matnr1-matnr&lt;/P&gt;&lt;P&gt;                                BINARY SEARCH.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      PERFORM read_mast_using_alt_bom.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      PERFORM read_mast.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM read_mast_using_alt_bom                                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      read the BOM header table MAST with the alt BOM               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM read_mast_using_alt_bom.&lt;/P&gt;&lt;P&gt;  READ TABLE i_mast WITH KEY matnr = i_matnr1-matnr&lt;/P&gt;&lt;P&gt;                             werks = i_mkal-werks           "D46K921679&lt;/P&gt;&lt;P&gt;                             stlal = i_mkal-stlal BINARY SEARCH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    PERFORM read_mast.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LOOP AT i_mast FROM sy-tabix.&lt;/P&gt;&lt;P&gt;      IF i_mast-matnr &amp;lt;&amp;gt; i_matnr1-matnr OR&lt;/P&gt;&lt;P&gt;         i_mast-werks &amp;lt;&amp;gt; i_mkal-werks OR                    "D46K921679&lt;/P&gt;&lt;P&gt;         i_mast-stlal &amp;lt;&amp;gt; i_mkal-stlal.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stko WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                 stlal = i_mast-stlal&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_stko-bmeng = 0.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stas2 WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                 stlal = i_mast-stlal&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      LOOP AT i_stas2 FROM sy-tabix.&lt;/P&gt;&lt;P&gt;        IF i_stas2-stlnr &amp;lt;&amp;gt; i_mast-stlnr OR&lt;/P&gt;&lt;P&gt;           i_stas2-stlal &amp;lt;&amp;gt; i_mast-stlal.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        PERFORM read_stpo.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM read_mast                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      read the BOM without the alternative BOM.                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM read_mast.&lt;/P&gt;&lt;P&gt;  stas2_found = 'N'.                                        "D46K921679&lt;/P&gt;&lt;P&gt;  READ TABLE i_mast WITH KEY matnr = i_matnr1-matnr&lt;/P&gt;&lt;P&gt;                               BINARY SEARCH.&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    LOOP AT i_mast FROM sy-tabix.&lt;/P&gt;&lt;P&gt;      IF i_mast-matnr &amp;lt;&amp;gt; i_matnr1-matnr.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stko WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                stlal = i_mast-stlal        "D46K921679&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_stko-bmeng = 0.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      READ TABLE i_stas2 WITH KEY stlnr = i_mast-stlnr&lt;/P&gt;&lt;P&gt;                                 stlal = i_mast-stlal       "D46K921679&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      LOOP AT i_stas2 FROM sy-tabix.&lt;/P&gt;&lt;P&gt;        IF i_stas2-stlnr &amp;lt;&amp;gt; i_mast-stlnr OR                 "D46K921679&lt;/P&gt;&lt;P&gt;           i_stas2-stlal &amp;lt;&amp;gt; i_mast-stlal.                   "D46K921679&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        stas2_found = 'Y'.                                  "D46K921679&lt;/P&gt;&lt;P&gt;        PERFORM read_stpo.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      IF stas2_found = 'Y'.                                 "D46K921679&lt;/P&gt;&lt;P&gt;        EXIT.                                               "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM read_stpo                                                *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Read the item level tables using information pulled from stas  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     to get the valid records.  Fill the internal table being sent  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     back in the function module.                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM read_stpo.&lt;/P&gt;&lt;P&gt;  CLEAR: i_item.&lt;/P&gt;&lt;P&gt;  READ TABLE i_stpo WITH KEY stlnr = i_stas2-stlnr&lt;/P&gt;&lt;P&gt;                             stlkn = i_stas2-stlkn&lt;/P&gt;&lt;P&gt;                             BINARY SEARCH.&lt;/P&gt;&lt;P&gt;  LOOP AT i_stpo FROM sy-tabix.&lt;/P&gt;&lt;P&gt;    IF i_stpo-stlnr &amp;lt;&amp;gt; i_stas2-stlnr OR&lt;/P&gt;&lt;P&gt;       i_stpo-stlkn &amp;lt;&amp;gt; i_stas2-stlkn.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      READ TABLE i_mara WITH KEY matnr = i_stpo-idnrk&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        i_item-matkl = i_mara-matkl.&lt;/P&gt;&lt;P&gt;        i_item-mtart = i_mara-mtart.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF i_stko-bmeng &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        i_item-menge = i_stpo-menge / i_stko-bmeng.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      i_item-postp = i_stpo-postp.&lt;/P&gt;&lt;P&gt;      i_item-potx1 = i_stpo-potx1.&lt;/P&gt;&lt;P&gt;      i_item-matnr = i_mast-matnr.&lt;/P&gt;&lt;P&gt;      i_item-werks = i_mast-werks.&lt;/P&gt;&lt;P&gt;      i_item-idnrk = i_stpo-idnrk.&lt;/P&gt;&lt;P&gt;      i_item-begin_date = i_stas2-datuv.                    "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-end_date   = i_stas2-enddt.                    "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-active = 'X'.                                  "D46K921679&lt;/P&gt;&lt;P&gt;      APPEND i_item.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM add_future_effective_materials.&lt;/P&gt;&lt;P&gt;  SORT i_mast BY stlnr stlal.                               "D46K921679&lt;/P&gt;&lt;P&gt;  LOOP AT i_stas.                                           "D46K921679&lt;/P&gt;&lt;P&gt;    READ TABLE i_mast WITH KEY                              "D46K921679&lt;/P&gt;&lt;P&gt;           stlnr = i_stas-stlnr                             "D46K921679&lt;/P&gt;&lt;P&gt;           stlal = i_stas-stlal BINARY SEARCH.              "D46K921679&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      IF i_stas-lkenz &amp;lt;&amp;gt; 'X'.                               "D46K921679&lt;/P&gt;&lt;P&gt;        READ TABLE i_stko WITH KEY stlnr = i_stas-stlnr     "D46K921679&lt;/P&gt;&lt;P&gt;                                   stlal = i_stas-stlal     "D46K921679&lt;/P&gt;&lt;P&gt;                                   BINARY SEARCH.           "D46K921679&lt;/P&gt;&lt;P&gt;        IF sy-subrc &amp;lt;&amp;gt; 0.                                   "D46K921679&lt;/P&gt;&lt;P&gt;          i_stko-bmeng = 0.                                 "D46K921679&lt;/P&gt;&lt;P&gt;        ENDIF.                                              "D46K921679&lt;/P&gt;&lt;P&gt;        READ TABLE i_stas2 WITH KEY                         "D46K921679&lt;/P&gt;&lt;P&gt;          stlnr = i_stas-stlnr                              "D46K921679&lt;/P&gt;&lt;P&gt;          stlal = i_stas-stlal                              "D46K921679&lt;/P&gt;&lt;P&gt;          stlkn = i_stas-stlkn BINARY SEARCH.               "D46K921679&lt;/P&gt;&lt;P&gt;        IF sy-subrc = 0.                                    "D46K921679&lt;/P&gt;&lt;P&gt;          IF i_stas-datuv &amp;gt; i_stas2-datuv AND               "D46K921679&lt;/P&gt;&lt;P&gt;          i_stas2-datuv &amp;gt; i_effective_date.                 "D46K921679&lt;/P&gt;&lt;P&gt;            PERFORM read_stpo_for_future_materials.         "D46K921679&lt;/P&gt;&lt;P&gt;          ENDIF.                                            "D46K921679&lt;/P&gt;&lt;P&gt;        ELSE.                                               "D46K921679&lt;/P&gt;&lt;P&gt;          IF i_stas-datuv &amp;gt; i_effective_date.               "D46K921679&lt;/P&gt;&lt;P&gt;            PERFORM read_stpo_for_future_materials.         "D46K921679&lt;/P&gt;&lt;P&gt;          ENDIF.                                            "D46K921679&lt;/P&gt;&lt;P&gt;        ENDIF.                                              "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get any materials that are effective startig tomorrow&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM read_stpo_for_future_materials.&lt;/P&gt;&lt;P&gt;  CLEAR: i_item.                                            "D46K921679&lt;/P&gt;&lt;P&gt;  READ TABLE i_stpo WITH KEY stlnr = i_stas-stlnr           "D46K921679&lt;/P&gt;&lt;P&gt;                             stlkn = i_stas-stlkn           "D46K921679&lt;/P&gt;&lt;P&gt;                             BINARY SEARCH.                 "D46K921679&lt;/P&gt;&lt;P&gt;  LOOP AT i_stpo FROM sy-tabix.                             "D46K921679&lt;/P&gt;&lt;P&gt;    IF i_stpo-stlnr &amp;lt;&amp;gt; i_stas-stlnr OR                      "D46K921679&lt;/P&gt;&lt;P&gt;       i_stpo-stlkn &amp;lt;&amp;gt; i_stas-stlkn.                        "D46K921679&lt;/P&gt;&lt;P&gt;      EXIT.                                                 "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;    IF sy-subrc = 0.                                        "D46K921679&lt;/P&gt;&lt;P&gt;      READ TABLE i_mara WITH KEY matnr = i_stpo-idnrk       "D46K921679&lt;/P&gt;&lt;P&gt;                                 BINARY SEARCH.             "D46K921679&lt;/P&gt;&lt;P&gt;      IF sy-subrc = 0.                                      "D46K921679&lt;/P&gt;&lt;P&gt;        i_item-matkl = i_mara-matkl.                        "D46K921679&lt;/P&gt;&lt;P&gt;        i_item-mtart = i_mara-mtart.                        "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;      IF i_stko-bmeng &amp;lt;&amp;gt; 0.                                 "D46K921679&lt;/P&gt;&lt;P&gt;        i_item-menge = i_stpo-menge / i_stko-bmeng.         "D46K921679&lt;/P&gt;&lt;P&gt;      ENDIF.                                                "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-postp = i_stpo-postp.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-potx1 = i_stpo-potx1.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-matnr = i_mast-matnr.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-werks = i_mast-werks.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-idnrk = i_stpo-idnrk.                          "D46K921679&lt;/P&gt;&lt;P&gt;      i_item-begin_date = i_stas-datuv.                     "D46K921679&lt;/P&gt;&lt;P&gt;      APPEND i_item.                                        "D46K921679&lt;/P&gt;&lt;P&gt;    ENDIF.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  "D46K921679&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Oct 2008 11:09:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509715#M1066593</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-01T11:09:51Z</dc:date>
    </item>
    <item>
      <title>Re: BOM tables</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509716#M1066594</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi check the code below for a similar requirement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Report  ZPPPRM_1087_BOM&lt;/P&gt;&lt;P&gt;*&amp;amp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;&lt;/P&gt;&lt;P&gt;*&amp;amp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;report  zppprm_1087_bom.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;include zbom_data_declarartion.&lt;/P&gt;&lt;P&gt;include zbom_selection_screen.&lt;/P&gt;&lt;P&gt;include zform_used.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*initialization&lt;/P&gt;&lt;P&gt;initialization.&lt;/P&gt;&lt;P&gt;  prm1  =  'SELECTION'.&lt;/P&gt;&lt;P&gt;  prm2  =  'Materials'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     START-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get the data from data base tablees&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform get_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Format the final data&lt;/P&gt;&lt;P&gt;  perform final_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Display the final data&lt;/P&gt;&lt;P&gt;  perform display_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;  Include           ZBOM_DATA_DECLARARTION&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;T Y P E - P O O L S&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tables: mara, "Material Master&lt;/P&gt;&lt;P&gt;        mast, "Material to BOM Linkage&lt;/P&gt;&lt;P&gt;        stpo. "BOM item&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;type-pools: slis .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;types: begin of ty_mara,&lt;/P&gt;&lt;P&gt;        matnr type matnr,&lt;/P&gt;&lt;P&gt;        mtart type mtart,&lt;/P&gt;&lt;P&gt;       end of ty_mara.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;types: begin of ty_mast,&lt;/P&gt;&lt;P&gt;        matnr  type matnr,&lt;/P&gt;&lt;P&gt;        werks  type werks_d,&lt;/P&gt;&lt;P&gt;        stlan  type stlan,&lt;/P&gt;&lt;P&gt;        stlnr  type stnum,&lt;/P&gt;&lt;P&gt;        stlal  type stalt,&lt;/P&gt;&lt;P&gt;       end of ty_mast.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;types: begin of ty_header,&lt;/P&gt;&lt;P&gt;       matnr type matnr,&lt;/P&gt;&lt;P&gt;       werks type werks_d,&lt;/P&gt;&lt;P&gt;       end of ty_header.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;types: begin of ty_stpo,&lt;/P&gt;&lt;P&gt;        stlty type stlty,&lt;/P&gt;&lt;P&gt;        stlnr type stnum,&lt;/P&gt;&lt;P&gt;        stlkn type stlkn,&lt;/P&gt;&lt;P&gt;        stpoz type cim_count,&lt;/P&gt;&lt;P&gt;        idnrk type idnrk,&lt;/P&gt;&lt;P&gt;        meins type kmpme,&lt;/P&gt;&lt;P&gt;        menge type kmpmg,&lt;/P&gt;&lt;P&gt;        preis type cprei,&lt;/P&gt;&lt;P&gt;        peinh type peinh,&lt;/P&gt;&lt;P&gt;       end of ty_stpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;types: begin of ty_bom,&lt;/P&gt;&lt;P&gt;          matnr type matnr,&lt;/P&gt;&lt;P&gt;          werks type werks_d,&lt;/P&gt;&lt;P&gt;          idnrk type idnrk,&lt;/P&gt;&lt;P&gt;          meins type kmpme,&lt;/P&gt;&lt;P&gt;          menge type kmpmg,&lt;/P&gt;&lt;P&gt;        end of ty_bom.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Internal tables used in the code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: it_stpo  type standard table of ty_stpo,&lt;/P&gt;&lt;P&gt;      it_mara1  type standard table of ty_mara,&lt;/P&gt;&lt;P&gt;      it_mara2  type standard table of ty_mara,&lt;/P&gt;&lt;P&gt;      it_mast  type standard table of ty_mast,&lt;/P&gt;&lt;P&gt;      it_bom   type standard table of ty_bom,&lt;/P&gt;&lt;P&gt;      it_header type standard table of ty_header.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work Areas used in the code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: wa_mast  type ty_mast,&lt;/P&gt;&lt;P&gt;      wa_stpo  type ty_stpo,&lt;/P&gt;&lt;P&gt;      wa_mara  type ty_mara,&lt;/P&gt;&lt;P&gt;      wa_bom   type ty_bom,&lt;/P&gt;&lt;P&gt;      wa_header type ty_header.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: v_matnr  type mara-matnr.&lt;/P&gt;&lt;P&gt;data: col_pos  type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: sortcat  type slis_t_sortinfo_alv,&lt;/P&gt;&lt;P&gt;      sortcat_ln type slis_sortinfo_alv,&lt;/P&gt;&lt;P&gt;      fcat type slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;      s_fcat type slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: obj_hieralv type ref to cl_salv_hierseq_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: it_binding type salv_t_hierseq_binding,&lt;/P&gt;&lt;P&gt;      wa_binding type salv_s_hierseq_binding.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;  Include           ZBOM_SELECTION_SCREEN&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;STRONG&gt;&lt;/STRONG&gt;&lt;DEL&gt;&lt;STRONG&gt;-Declaration of selection screen forthe program&lt;/STRONG&gt;&lt;/DEL&gt;-*&lt;/P&gt;&lt;P&gt;selection-screen begin of block blk1 with frame title prm1.&lt;/P&gt;&lt;P&gt;selection-screen begin of line.&lt;/P&gt;&lt;P&gt;selection-screen comment (10) prm2 for field so_matnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection Option.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;select-options : so_matnr for v_matnr.&lt;/P&gt;&lt;P&gt;selection-screen end of line.&lt;/P&gt;&lt;P&gt;selection-screen end of block blk1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;  Include           ZFORM_USED&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_DATA&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form get_data .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*LOADING FINISHED MATERIALS INTO AN INTERNAL TABLE&lt;/P&gt;&lt;P&gt;  select matnr&lt;/P&gt;&lt;P&gt;         mtart&lt;/P&gt;&lt;P&gt;    into table it_mara1&lt;/P&gt;&lt;P&gt;    from mara&lt;/P&gt;&lt;P&gt;    where matnr in so_matnr&lt;/P&gt;&lt;P&gt;      and mtart = 'FERT'.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    sort  it_mara1 by matnr.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*LOADING CORRESPONDING FROM Material to BOM LINK TABLE&lt;/P&gt;&lt;P&gt;  if it_mara1 is not initial.&lt;/P&gt;&lt;P&gt;    select matnr&lt;/P&gt;&lt;P&gt;           werks&lt;/P&gt;&lt;P&gt;           stlan&lt;/P&gt;&lt;P&gt;           stlnr&lt;/P&gt;&lt;P&gt;           stlal&lt;/P&gt;&lt;P&gt;      into table it_mast&lt;/P&gt;&lt;P&gt;      from mast&lt;/P&gt;&lt;P&gt;      for all entries in it_mara1&lt;/P&gt;&lt;P&gt;      where matnr = it_mara1-matnr .&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;      sort it_mast by stlnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     loop at it_mast into wa_mast.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       move-corresponding wa_mast to wa_header.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       append wa_header to it_header.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     endloop.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*LOADING CORRESPONDING BOM COMPONENTS FRON BOM ITEM TABLE&lt;/P&gt;&lt;P&gt;  if it_mast is not initial.&lt;/P&gt;&lt;P&gt;    select   stlty&lt;/P&gt;&lt;P&gt;             stlnr&lt;/P&gt;&lt;P&gt;             stlkn&lt;/P&gt;&lt;P&gt;             stpoz&lt;/P&gt;&lt;P&gt;             idnrk&lt;/P&gt;&lt;P&gt;             meins&lt;/P&gt;&lt;P&gt;             menge&lt;/P&gt;&lt;P&gt;             preis&lt;/P&gt;&lt;P&gt;             peinh&lt;/P&gt;&lt;P&gt;        from stpo&lt;/P&gt;&lt;P&gt;       into table it_stpo&lt;/P&gt;&lt;P&gt;       for all entries in it_mast&lt;/P&gt;&lt;P&gt;       where stlnr = it_mast-stlnr.&lt;/P&gt;&lt;P&gt;    if sy-subrc eq 0.&lt;/P&gt;&lt;P&gt;      sort it_stpo by stlnr.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*LOAD SEMIFINISHED MATERIAL&lt;/P&gt;&lt;P&gt;  select matnr&lt;/P&gt;&lt;P&gt;         mtart&lt;/P&gt;&lt;P&gt;         from mara&lt;/P&gt;&lt;P&gt;         into table it_mara2&lt;/P&gt;&lt;P&gt;         where mtart = 'HALB'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc eq 0.&lt;/P&gt;&lt;P&gt;    sort it_mara2 by matnr.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " GET_SELECT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  FINAL_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form final_data .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at it_stpo into wa_stpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear wa_mara.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read table it_mara2 into wa_mara&lt;/P&gt;&lt;P&gt;                       with key matnr = wa_stpo-idnrk&lt;/P&gt;&lt;P&gt;                       binary search.&lt;/P&gt;&lt;P&gt;    if sy-subrc ne 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      continue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      read table it_mast into wa_mast&lt;/P&gt;&lt;P&gt;                         with key stlnr = wa_stpo-stlnr&lt;/P&gt;&lt;P&gt;                         binary search.&lt;/P&gt;&lt;P&gt;      if sy-subrc eq 0.&lt;/P&gt;&lt;P&gt;        clear wa_bom.&lt;/P&gt;&lt;P&gt;        wa_bom-matnr = wa_mast-matnr.&lt;/P&gt;&lt;P&gt;        wa_bom-werks = wa_mast-werks.&lt;/P&gt;&lt;P&gt;        wa_bom-idnrk = wa_stpo-idnrk.&lt;/P&gt;&lt;P&gt;        wa_bom-meins = wa_stpo-meins.&lt;/P&gt;&lt;P&gt;        wa_bom-menge = wa_stpo-menge.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        collect wa_bom into it_bom.&lt;/P&gt;&lt;P&gt;        move-corresponding wa_mast to wa_header.&lt;/P&gt;&lt;P&gt;        append wa_header to it_header.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;          sort it_header by matnr werks.&lt;/P&gt;&lt;P&gt;          sort it_bom by matnr werks idnrk.&lt;/P&gt;&lt;P&gt;          delete adjacent duplicates from it_header comparing matnr werks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " FINAL_data&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  display_summary&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form display_final.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_binding-master = 'MATNR'.&lt;/P&gt;&lt;P&gt;  wa_binding-slave = 'MATNR'.&lt;/P&gt;&lt;P&gt;  append wa_binding to it_binding.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Process of binding the header and BOM info in hirarchial form&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  try.&lt;/P&gt;&lt;P&gt;      call method cl_salv_hierseq_table=&amp;gt;factory&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;          t_binding_level1_level2 = it_binding&lt;/P&gt;&lt;P&gt;        importing&lt;/P&gt;&lt;P&gt;          r_hierseq               = obj_hieralv&lt;/P&gt;&lt;P&gt;        changing&lt;/P&gt;&lt;P&gt;          t_table_level1          = it_header&lt;/P&gt;&lt;P&gt;          t_table_level2          = it_bom.&lt;/P&gt;&lt;P&gt;    catch cx_salv_data_error .&lt;/P&gt;&lt;P&gt;    catch cx_salv_not_found .&lt;/P&gt;&lt;P&gt;  endtry.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*to dispay the info&lt;/P&gt;&lt;P&gt;  call method obj_hieralv-&amp;gt;display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps you,&lt;/P&gt;&lt;P&gt;Murthy.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Oct 2008 12:18:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509716#M1066594</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-03T12:18:41Z</dc:date>
    </item>
    <item>
      <title>Re: BOM tables</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509717#M1066595</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt; The easiest way to look up BOM data is with this function module "CS_BOM_EXPL_MAT_V2".&lt;/P&gt;&lt;P&gt;&amp;gt; &lt;/P&gt;&lt;P&gt;&amp;gt; However I have looked up data with the tables as well.  It's a lot of code, and it may change.   We have had some changes to it.   We may have more changes.   It's easy to miss something.  &lt;/P&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And exactly for that reason: stick to the standard SAP function.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Oct 2008 16:52:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509717#M1066595</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-03T16:52:41Z</dc:date>
    </item>
    <item>
      <title>Re: BOM tables</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509718#M1066596</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kumar&lt;/P&gt;&lt;P&gt;   If you are looking at following FM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CS_BOM_EXPLOSION               General BOM explosion&lt;/P&gt;&lt;P&gt;CS_BOM_EXPLOSION_EQUI          BOM explosion - initial screen: equipment&lt;/P&gt;&lt;P&gt;CS_BOM_EXPLOSION_MAT           BOM explosion (old version); as of 3.0, use CS_BOM_EXPL_MAT_V2&lt;/P&gt;&lt;P&gt;CS_BOM_EXPL_EQU_V2             BOM explosion for equipment&lt;/P&gt;&lt;P&gt;CS_BOM_EXPL_KND_V1             BOM explosion for material&lt;/P&gt;&lt;P&gt;CS_BOM_EXPL_MAT_V2             BOM explosion for material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;with regards&lt;/P&gt;&lt;P&gt;naveen&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Oct 2008 17:28:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509718#M1066596</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-03T17:28:41Z</dc:date>
    </item>
    <item>
      <title>Re: BOM tables</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509719#M1066597</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;STLTY,STLNR,STLAL and STKOZ are key field in both table.so, you can find the records in table STPO by using these field.STLTY is BOM category to find BOM area like SD,MM/PP etc. you try to use this field. it will be better.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Oct 2008 05:57:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509719#M1066597</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-06T05:57:01Z</dc:date>
    </item>
    <item>
      <title>Re: BOM tables</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509720#M1066598</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;i have done through stko stas and stpo table.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 21 Oct 2008 07:06:19 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bom-tables/m-p/4509720#M1066598</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-10-21T07:06:19Z</dc:date>
    </item>
  </channel>
</rss>

