<?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: How about this implementation of BOM Explosion(simulate stack) in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-about-this-implementation-of-bom-explosion-simulate-stack/m-p/2211345#M473657</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Prabhu Peram,&lt;/P&gt;&lt;P&gt;Thanks very much.&lt;/P&gt;&lt;P&gt;I want to show an idea of BOM explosion by constructing a stack.&lt;/P&gt;&lt;P&gt;BOM explosion uses first-root-searching and pushes the "root" material into stack.If the "root" has no left-child,pops out the "root" material and searchs the right-child....and completes the entire BOM explosion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Mic chen&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Mic chen&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 27 Apr 2007 02:56:09 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-04-27T02:56:09Z</dc:date>
    <item>
      <title>How about this implementation of BOM Explosion(simulate stack)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-about-this-implementation-of-bom-explosion-simulate-stack/m-p/2211343#M473655</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;REPORT  YZWX00301_06 LINE-SIZE  142&lt;/P&gt;&lt;P&gt;                     LINE-COUNT 65&lt;/P&gt;&lt;P&gt;                     MESSAGE-ID YM1&lt;/P&gt;&lt;P&gt;                     NO STANDARD PAGE HEADING .&lt;/P&gt;&lt;P&gt;&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;INCLUDE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;INCLUDE: YXXI00050.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*TABLES use table define&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;TABLES: MARA,        " Material General Table&lt;/P&gt;&lt;P&gt;        MARC,        " Plant Data for Material&lt;/P&gt;&lt;P&gt;        MDMA,        " MRP Area table&lt;/P&gt;&lt;P&gt;        EORD,        " Vendor table&lt;/P&gt;&lt;P&gt;        A018,        " Vendor material mapping table&lt;/P&gt;&lt;P&gt;        KONP,        " Vendor condition table&lt;/P&gt;&lt;P&gt;        MAST,        " Material BOM table&lt;/P&gt;&lt;P&gt;        STPO,        " Material BOM Component table&lt;/P&gt;&lt;P&gt;        STAS.        " Material BOM Component table detail&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*CONSTANTS define&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  C_DAT_X        TYPE C VALUE 'X',&lt;/P&gt;&lt;P&gt;  C_MODE         LIKE dxfields-fileoper VALUE 'R',&lt;/P&gt;&lt;P&gt;  C_MASK         LIKE dxfields-filemask VALUE '&lt;STRONG&gt;.&lt;/STRONG&gt;',&lt;/P&gt;&lt;P&gt;  C_FLG_LOCATION TYPE C VALUE 'A',&lt;/P&gt;&lt;P&gt;  C_DFPATH(15)   TYPE C VALUE '\bmwx\'.&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;Work Area Define&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;---- build stack structure -&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF WK_STACK,&lt;/P&gt;&lt;P&gt;        LEVEL(1)      TYPE C,            "Save Level&lt;/P&gt;&lt;P&gt;        QUANT         TYPE I,            "Save Quantity&lt;/P&gt;&lt;P&gt;      END OF WK_STACK.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;---- BOM work area -&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF WK_BOM,&lt;/P&gt;&lt;P&gt;         LEVEL(1)     TYPE C,            "BOM LEVEL&lt;/P&gt;&lt;P&gt;         MATNR        LIKE MARC-MATNR,   "MATERIAL      18&lt;/P&gt;&lt;P&gt;         POSTP        LIKE STPO-POSTP,   "ITEM CATEGORY  1&lt;/P&gt;&lt;P&gt;         MENGE        LIKE STPO-MENGE,   "BOM COMPONENT 13&lt;/P&gt;&lt;P&gt;         DATUV        LIKE STPO-DATUV,   "VALID FROM    10&lt;/P&gt;&lt;P&gt;         DATUB        LIKE STPO-DATUV,   "VALID TO      10&lt;/P&gt;&lt;P&gt;END OF WK_BOM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;---- DATA work area -&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF DATAITEM,&lt;/P&gt;&lt;P&gt;         LEVEL(1)     TYPE C,            "BOM LEVEL&lt;/P&gt;&lt;P&gt;         MATNR        LIKE MARC-MATNR,   "MATERIAL&lt;/P&gt;&lt;P&gt;         POSTP        LIKE STPO-POSTP,   "ITEM CATEGORY&lt;/P&gt;&lt;P&gt;         MENGE        LIKE STPO-MENGE,   "BOM COMPONENT&lt;/P&gt;&lt;P&gt;         DATUV        LIKE STPO-DATUV,   "VALID FROM!!!&lt;/P&gt;&lt;P&gt;         DATUB        LIKE STPO-DATUV,   "VALID TO&lt;/P&gt;&lt;P&gt;         EKGRP        LIKE MARC-EKGRP,   "PURCHASE ORG&lt;/P&gt;&lt;P&gt;         LIFNR        LIKE EORD-LIFNR,    "Vendor code     10&lt;/P&gt;&lt;P&gt;         MARK(1)      TYPE C,             "Mark&lt;/P&gt;&lt;P&gt;         KBETR        LIKE KONP-KBETR,    "Rate price      11&lt;/P&gt;&lt;P&gt;         KONWA        LIKE KONP-KONWA,    "Currency        5&lt;/P&gt;&lt;P&gt;         KPEIN        LIKE KONP-KPEIN,    "Unit Qty        5&lt;/P&gt;&lt;P&gt;         KMEIN        LIKE KONP-KMEIN,    "Condition Unit  3&lt;/P&gt;&lt;P&gt;         DATAB        LIKE A018-DATAB,    "Condition from  10&lt;/P&gt;&lt;P&gt;         DATBI        LIKE A018-DATBI,    "Condition to    10&lt;/P&gt;&lt;P&gt;       END OF DATAITEM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;---- File Line work area -&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF LINE,&lt;/P&gt;&lt;P&gt;         WERKS(4)     TYPE C,                               "Plaint   4&lt;/P&gt;&lt;P&gt;         MATNR(18)    TYPE C,             "Material Number 18&lt;/P&gt;&lt;P&gt;         EKGRP(3)     TYPE C,             "Purchase Group  3&lt;/P&gt;&lt;P&gt;         LIFNR(10)    TYPE C,             "Vendor code     10&lt;/P&gt;&lt;P&gt;         VDATU        LIKE EORD-VDATU,    "Vendor valid from 10&lt;/P&gt;&lt;P&gt;         BDATU        LIKE EORD-BDATU,    "Vendor valid to   10&lt;/P&gt;&lt;P&gt;         MARK(1)      TYPE C,             "Mark&lt;/P&gt;&lt;P&gt;         KSCHL(4)     TYPE C,             "Condition type  4&lt;/P&gt;&lt;P&gt;         KBETR(18)    TYPE C,             "Rate price      11&lt;/P&gt;&lt;P&gt;         KPEIN(5)     TYPE C,             "Rate unit       5&lt;/P&gt;&lt;P&gt;         KONWA(5)     TYPE C,             "Currency        5&lt;/P&gt;&lt;P&gt;         KMEIN(3)     TYPE C,             "Condition Unit  3&lt;/P&gt;&lt;P&gt;         DATAB        LIKE A018-DATAB,    "Condition from  10&lt;/P&gt;&lt;P&gt;         DATBI        LIKE A018-DATBI,    "Condition to    10&lt;/P&gt;&lt;P&gt;       END OF LINE.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*Local Data Object Define&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;DATA:  WK_CNT TYPE I,                   "Count variable&lt;/P&gt;&lt;P&gt;       WK_LVL TYPE I,                   "BOM level&lt;/P&gt;&lt;P&gt;       WK_QTY TYPE I.                   "BOM component qty&lt;/P&gt;&lt;P&gt;DATA: WK_LIFNR LIKE EORD-LIFNR,&lt;/P&gt;&lt;P&gt;      WK_MATNR LIKE MARC-MATNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;*Internal Table define&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;DATA TAB_STACK LIKE STANDARD TABLE OF WK_STACK.   "STACK TABLE&lt;/P&gt;&lt;P&gt;DATA TAB_BOM   LIKE STANDARD TABLE OF WK_BOM.     "FOR BOM&lt;/P&gt;&lt;P&gt;DATA TAB_DATA  LIKE STANDARD TABLE OF DATAITEM.   "FOR ALL&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;Parameter in Block1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.         "TITLE TEXT-001.&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;  P_WERKS LIKE MARC-WERKS DEFAULT 'WX01',              "Plant&lt;/P&gt;&lt;P&gt;  P_STLTY LIKE STPO-STLTY DEFAULT 'M',                 "BOM Category&lt;/P&gt;&lt;P&gt;  P_MATNR LIKE MARC-MATNR OBLIGATORY,                  "Material&lt;/P&gt;&lt;P&gt;  P_STDAT LIKE EORD-VDATU OBLIGATORY DEFAULT SY-DATUM. "Standard Date&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B1.&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;Parameter in Block2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_SCREEN RADIOBUTTON GROUP R1.     "Screen output&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 03(21) TEXT-001.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN POSITION 32.&lt;/P&gt;&lt;P&gt;PARAMETERS: P_FILE RADIOBUTTON GROUP R1.       "NTFILE output&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 34(17) TEXT-002.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK B2.&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;Parameter in Block3&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME.&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; P_NTFILE(45)  TYPE C    LOWER CASE OBLIGATORY.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  P_PCFILE      LIKE RLGRAP-FILENAME.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END   OF BLOCK B3.&lt;/P&gt;&lt;P&gt;&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;INITIALIZATION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;INITIALIZATION .&lt;/P&gt;&lt;P&gt;  CLEAR :  WK_CNT,&lt;/P&gt;&lt;P&gt;           WK_LVL,&lt;/P&gt;&lt;P&gt;           WK_QTY,&lt;/P&gt;&lt;P&gt;           WK_MATNR,&lt;/P&gt;&lt;P&gt;           WK_STACK,&lt;/P&gt;&lt;P&gt;           WK_BOM,&lt;/P&gt;&lt;P&gt;           DATAITEM.&lt;/P&gt;&lt;P&gt;  WK_LVL = 0.&lt;/P&gt;&lt;P&gt;  WK_QTY = 1.&lt;/P&gt;&lt;P&gt;  REFRESH: TAB_STACK,&lt;/P&gt;&lt;P&gt;           TAB_DATA,&lt;/P&gt;&lt;P&gt;           TAB_BOM.&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;      AT SELECTION-SCREE ON VALUE-REQUEST&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;*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_NTFILE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PERFORM F_SHOW_FILE_POPUP CHANGING P_NTFILE.       "Popup display&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCFILE.&lt;/P&gt;&lt;P&gt;  PERFORM F_FILENAME_GET USING P_PCFILE&lt;/P&gt;&lt;P&gt;                      CHANGING P_PCFILE.&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  F_FILENAME_GET&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;  --&amp;gt; ST_DAT_PATH     : Preset path&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  &amp;lt;-- ST_DAT_FILENAME : Selected file name&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 F_FILENAME_GET USING st_dat_path&lt;/P&gt;&lt;P&gt;                 CHANGING st_dat_filename.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_FILENAME_GET'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      def_filename     = SPACE&lt;/P&gt;&lt;P&gt;      def_path         = st_dat_path&lt;/P&gt;&lt;P&gt;      mask             = ',&lt;STRONG&gt;.&lt;/STRONG&gt;,&lt;STRONG&gt;.&lt;/STRONG&gt;,'&lt;/P&gt;&lt;P&gt;      mode             = '0'&lt;/P&gt;&lt;P&gt;      title            = 'TXT-file select'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      filename         = st_dat_filename&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      inv_winsys       = 1&lt;/P&gt;&lt;P&gt;      no_batch         = 2&lt;/P&gt;&lt;P&gt;      selection_cancel = 3&lt;/P&gt;&lt;P&gt;      selection_error  = 4&lt;/P&gt;&lt;P&gt;      OTHERS           = 5.&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE s002(yf1) WITH 'F_FILENAME_GET' sy-subrc.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "F_FILENAME_GET&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;MAIN PROCESS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;---- Check material -&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM CHECK_PROD.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;---- get vendor data -&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM GET_VENDOR_DATA.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;---- output screen/file -&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF P_SCREEN = 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM SET_OUTPUT.            "Output to screen directly&lt;/P&gt;&lt;P&gt;  ELSEIF P_FILE = 'X'.&lt;/P&gt;&lt;P&gt;    IF P_PCFILE &amp;lt;&amp;gt; ''.&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_DATA.       "Write data into ntfile&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MESSAGE E007(00) WITH 'P_PCFILE'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  ULINE (142).&lt;/P&gt;&lt;P&gt;  WRITE: /002 'Component Material Count:', WK_CNT.&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;TOP-OF-PAGE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;  WRITE: /002 'Product:', 013 P_MATNR,&lt;/P&gt;&lt;P&gt;          030 '****** BOM Price List ******',&lt;/P&gt;&lt;P&gt;          070 SY-DATUM,&lt;/P&gt;&lt;P&gt;          095 'PAGE:',&lt;/P&gt;&lt;P&gt;          100 SY-PAGNO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE (142).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: /001   '|Level',&lt;/P&gt;&lt;P&gt;          007   '|Material',&lt;/P&gt;&lt;P&gt;          026   '|Cat',&lt;/P&gt;&lt;P&gt;          030   '|Quantity',&lt;/P&gt;&lt;P&gt;          044   '|From',&lt;/P&gt;&lt;P&gt;          055   '|To',&lt;/P&gt;&lt;P&gt;          066   '|PurG',&lt;/P&gt;&lt;P&gt;          071   '|Vendor',&lt;/P&gt;&lt;P&gt;          082   '|MK',&lt;/P&gt;&lt;P&gt;          085   '|Price',&lt;/P&gt;&lt;P&gt;          101   '|Crncy',&lt;/P&gt;&lt;P&gt;          107   '|UnitQty',&lt;/P&gt;&lt;P&gt;          115   '|Unit',&lt;/P&gt;&lt;P&gt;          120   '|From',&lt;/P&gt;&lt;P&gt;          131   '|To',&lt;/P&gt;&lt;P&gt;          142   '|'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE (142).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM CHECK_PROD&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM CHECK_PROD.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM MARC&lt;/P&gt;&lt;P&gt;                 WHERE WERKS = P_WERKS           " Plant&lt;/P&gt;&lt;P&gt;                 AND   MATNR = P_MATNR           " Material&lt;/P&gt;&lt;P&gt;                 AND   DISPR IN ('F100','F200'). " Product&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    PERFORM CHECK_BOM1 USING MARC-MATNR MARC-WERKS. " CHECK_BOM1&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MESSAGE E022.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                                         " CHECK_PROD&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM CHECK_BOM1&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM CHECK_BOM1 USING VALUE(FP_MATNR) VALUE(FP_WERKS).&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM  MAST&lt;/P&gt;&lt;P&gt;                  WHERE MATNR = FP_MATNR     AND      "Material&lt;/P&gt;&lt;P&gt;                        WERKS = FP_WERKS.             "Plant&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    PERFORM PUSH_STACK USING WK_LVL WK_QTY.   "Save parent attribute&lt;/P&gt;&lt;P&gt;    PERFORM CHECK_BOM2 USING MAST-STLNR.                    "Check BOM2&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    "CHECK_BOM1&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM CHECK_BOM2&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM CHECK_BOM2 USING VALUE(FP_STLNR).&lt;/P&gt;&lt;P&gt;  SELECT * FROM  STPO&lt;/P&gt;&lt;P&gt;           WHERE STLTY = P_STLTY        AND        "BOM category&lt;/P&gt;&lt;P&gt;                 STLNR = FP_STLNR.                 "BOM number&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM POPOUT_WK.                  "Pop out to work area&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WK_BOM-LEVEL = WK_LVL.              "Current BOM level&lt;/P&gt;&lt;P&gt;    WK_BOM-MATNR = STPO-IDNRK.          "Material number&lt;/P&gt;&lt;P&gt;    WK_BOM-POSTP = STPO-POSTP.          "ITEM Category&lt;/P&gt;&lt;P&gt;    WK_QTY       = STPO-MENGE * WK_QTY. "For Stack&lt;/P&gt;&lt;P&gt;    WK_BOM-MENGE = WK_QTY.              "BOM Component qty&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM CHECK_BOM3 USING STPO-STLTY STPO-STLNR STPO-STLKN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM CHECK_BOM1 USING STPO-IDNRK P_WERKS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;  PERFORM POPOUT_STACK.&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    "CHECK_BOM2&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM CHECK_BOM3&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM CHECK_BOM3 USING VALUE(FP_STLTY) VALUE(FP_STLNR) VALUE(FP_STLKN).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM  STAS&lt;/P&gt;&lt;P&gt;                  WHERE STLTY = FP_STLTY        "BOM category&lt;/P&gt;&lt;P&gt;                  AND   STLNR = FP_STLNR        "BOM number&lt;/P&gt;&lt;P&gt;                  AND   STLKN = FP_STLKN        "BOM item&lt;/P&gt;&lt;P&gt;                  AND   DATUV &amp;lt;= P_STDAT        "Valid from&lt;/P&gt;&lt;P&gt;                  AND   LKENZ = ' ' .           "Valid&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    WK_BOM-DATUV = STAS-DATUV.                  "Valid from&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM  STAS&lt;/P&gt;&lt;P&gt;                  WHERE STLTY = FP_STLTY        "BOM category&lt;/P&gt;&lt;P&gt;                  AND   STLNR = FP_STLNR        "BOM number&lt;/P&gt;&lt;P&gt;                  AND   STLKN = FP_STLKN        "BOM item&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                AND   DATUV &amp;gt; P_STDAT         "Valid from&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  AND   LKENZ = 'X' .           "Invalid&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE * FROM  STAS&lt;/P&gt;&lt;P&gt;                   WHERE STLTY = FP_STLTY        "BOM category&lt;/P&gt;&lt;P&gt;                   AND   STLNR = FP_STLNR        "BOM number&lt;/P&gt;&lt;P&gt;                   AND   STLKN = FP_STLKN        "BOM item&lt;/P&gt;&lt;P&gt;                   AND   DATUV &amp;gt; P_STDAT         "Valid from&lt;/P&gt;&lt;P&gt;                   AND   LKENZ = 'X' .           "Invalid&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      WK_BOM-DATUB = STAS-DATUV.          "Valid to&lt;/P&gt;&lt;P&gt;      APPEND WK_BOM TO TAB_BOM.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    WK_BOM-DATUB = '99991231'.          "Manul input&lt;/P&gt;&lt;P&gt;    APPEND WK_BOM TO TAB_BOM.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                                    "CHECK_BOM3&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM PUSH_STACK&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM PUSH_STACK USING VALUE(FP_LVL) VALUE(FP_QTY).&lt;/P&gt;&lt;P&gt;  WK_STACK-LEVEL = FP_LVL + 1.&lt;/P&gt;&lt;P&gt;  WK_STACK-QUANT = FP_QTY.&lt;/P&gt;&lt;P&gt;  APPEND WK_STACK TO TAB_STACK.    "Push stack&lt;/P&gt;&lt;P&gt;  SORT TAB_STACK BY LEVEL.         "Sort table by level&lt;/P&gt;&lt;P&gt;ENDFORM.                           "PUSH_STACK&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM PUSH_STACK&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM POPOUT_STACK.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TAB_STACK LINES WK_CNT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF WK_CNT &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    DELETE TAB_STACK INDEX WK_CNT.     "Popout stack&lt;/P&gt;&lt;P&gt;    SORT TAB_STACK BY LEVEL.           "Sort table by level&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                               "POPOUT_STACK&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM POPOUT_WK&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM POPOUT_WK.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TAB_STACK LINES WK_CNT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF WK_CNT &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    READ TABLE TAB_STACK INTO WK_STACK INDEX WK_CNT.   "Popout stack&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      WK_LVL = WK_STACK-LEVEL.                         "Current Level&lt;/P&gt;&lt;P&gt;      WK_QTY = WK_STACK-QUANT.                         "Parent Qty&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "POPOUT_WK&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM DOWNLOAD_DATA&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DOWNLOAD_DATA.&lt;/P&gt;&lt;P&gt;  DATA: L_RETURN     TYPE   SY-SUBRC.&lt;/P&gt;&lt;P&gt;  PERFORM GUI_DOWNLOAD&lt;/P&gt;&lt;P&gt;              TABLES&lt;/P&gt;&lt;P&gt;                 TAB_DATA&lt;/P&gt;&lt;P&gt;              USING&lt;/P&gt;&lt;P&gt;                 P_PCFILE&lt;/P&gt;&lt;P&gt;                 'X'&lt;/P&gt;&lt;P&gt;              CHANGING&lt;/P&gt;&lt;P&gt;                 L_RETURN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF L_RETURN &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE S020.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MESSAGE S021.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DOWNLOAD_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;*&amp;amp;FORM GET_VENDOR_DATA&lt;/P&gt;&lt;P&gt;*&amp;amp;----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt;p1      text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;--p2      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM GET_VENDOR_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT TAB_BOM  INTO WK_BOM.&lt;/P&gt;&lt;P&gt;    CLEAR DATAITEM.&lt;/P&gt;&lt;P&gt;    SELECT * FROM MARC&lt;/P&gt;&lt;P&gt;            WHERE WERKS = P_WERKS             "Plant&lt;/P&gt;&lt;P&gt;              AND MATNR = WK_BOM-MATNR.       "Material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      DATAITEM-EKGRP = MARC-EKGRP.&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM  MARA&lt;/P&gt;&lt;P&gt;                      WHERE MATNR = MARC-MATNR    AND   "Material number&lt;/P&gt;&lt;P&gt;                            MTART IN ('1211','1221').&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;        SELECT COUNT(*) FROM  EORD&lt;/P&gt;&lt;P&gt;                       INTO  (WK_CNT)&lt;/P&gt;&lt;P&gt;                 WHERE WERKS  = P_WERKS        AND  "Plaint&lt;/P&gt;&lt;P&gt;                       MATNR  = WK_BOM-MATNR   AND  "Material&lt;/P&gt;&lt;P&gt;                       VDATU &amp;lt;= P_STDAT        AND  "Valid-From&lt;/P&gt;&lt;P&gt;                       BDATU &amp;gt;  P_STDAT.            "Valid-To&lt;/P&gt;&lt;P&gt;        IF WK_CNT &amp;gt; 1.&lt;/P&gt;&lt;P&gt;          DATAITEM-MARK = '*'.&lt;/P&gt;&lt;P&gt;        ELSEIF WK_CNT = 0.&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING WK_BOM TO DATAITEM.&lt;/P&gt;&lt;P&gt;          APPEND DATAITEM TO TAB_DATA.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT * FROM  EORD&lt;/P&gt;&lt;P&gt;                 WHERE WERKS  = P_WERKS        AND  "Plaint&lt;/P&gt;&lt;P&gt;                       MATNR  = WK_BOM-MATNR   AND  "Material&lt;/P&gt;&lt;P&gt;                       VDATU &amp;lt;= P_STDAT        AND  "Valid-From&lt;/P&gt;&lt;P&gt;                       BDATU &amp;gt;  P_STDAT.            "Valid-To&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING WK_BOM TO DATAITEM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          DATAITEM-LIFNR  = EORD-LIFNR.             "Vendor code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          SELECT  * FROM  A018&lt;/P&gt;&lt;P&gt;                    WHERE LIFNR  =  EORD-LIFNR  AND  "Vendor code&lt;/P&gt;&lt;P&gt;                          MATNR  =  EORD-MATNR  AND  "Material&lt;/P&gt;&lt;P&gt;                          EKORG  =  EORD-EKORG  AND  "Purchase org&lt;/P&gt;&lt;P&gt;                          DATAB &amp;lt;=  P_STDAT     AND  "Valid-from&lt;/P&gt;&lt;P&gt;                          DATBI &amp;gt;   P_STDAT.         "Valid-to&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            DATAITEM-DATAB = A018-DATAB.    "Condition From&lt;/P&gt;&lt;P&gt;            DATAITEM-DATBI = A018-DATBI.    "Condition To&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;              SELECT * FROM  KONP&lt;/P&gt;&lt;P&gt;                       WHERE KNUMH = A018-KNUMH   AND   "Cnd Number&lt;/P&gt;&lt;P&gt;                             KSCHL = A018-KSCHL   AND   "Cnd Type&lt;/P&gt;&lt;P&gt;                             KAPPL = A018-KAPPL.        "Cnd Cat&lt;/P&gt;&lt;P&gt;                DATAITEM-KBETR = KONP-KBETR.            "Price&lt;/P&gt;&lt;P&gt;                DATAITEM-KONWA = KONP-KONWA.            "Currency&lt;/P&gt;&lt;P&gt;                DATAITEM-KPEIN = KONP-KPEIN.            "Price Unit&lt;/P&gt;&lt;P&gt;               DATAITEM-KMEIN = KONP-KMEIN.            "Unit of Material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                APPEND DATAITEM TO TAB_DATA.            "Append TAB_DATA&lt;/P&gt;&lt;P&gt;              ENDSELECT.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ENDSELECT.&lt;/P&gt;&lt;P&gt;        ENDSELECT.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING WK_BOM TO DATAITEM.&lt;/P&gt;&lt;P&gt;        APPEND DATAITEM TO TAB_DATA.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING WK_BOM TO DATAITEM.&lt;/P&gt;&lt;P&gt;      APPEND DATAITEM TO TAB_DATA.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                    "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;P&gt;*&amp;amp;      Form  SET_OUTPUT&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        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 SET_OUTPUT .&lt;/P&gt;&lt;P&gt;  CLEAR WK_CNT.&lt;/P&gt;&lt;P&gt;  LOOP AT TAB_DATA INTO DATAITEM.&lt;/P&gt;&lt;P&gt;    WRITE: /001   '|', 002 DATAITEM-LEVEL,   "Material Number&lt;/P&gt;&lt;P&gt;            007   '|', 008 DATAITEM-MATNR,   "Purchase Grp&lt;/P&gt;&lt;P&gt;            026   '|', 027 DATAITEM-POSTP,   "Item category&lt;/P&gt;&lt;P&gt;            030   '|', 031 DATAITEM-MENGE,   "BOM Component qty&lt;/P&gt;&lt;P&gt;            044   '|', 045 DATAITEM-DATUV,   "BOM valid from&lt;/P&gt;&lt;P&gt;            055   '|', 056 DATAITEM-DATUB,   "BOM valid to&lt;/P&gt;&lt;P&gt;            066   '|', 067 DATAITEM-EKGRP,   "Purchase Org&lt;/P&gt;&lt;P&gt;            071   '|', 072 DATAITEM-LIFNR,   "Vendor&lt;/P&gt;&lt;P&gt;            082   '|', 083 DATAITEM-MARK,    "Mark flag&lt;/P&gt;&lt;P&gt;            085   '|', 086 DATAITEM-KBETR,   "Price&lt;/P&gt;&lt;P&gt;            101   '|', 102 DATAITEM-KONWA,   "Currency&lt;/P&gt;&lt;P&gt;            107   '|', 108 DATAITEM-KPEIN,   "Unit Qty&lt;/P&gt;&lt;P&gt;            115   '|', 116 DATAITEM-KMEIN,   "Unit OM&lt;/P&gt;&lt;P&gt;            120   '|', 121 DATAITEM-DATAB,   "Cnd From&lt;/P&gt;&lt;P&gt;            131   '|', 132 DATAITEM-DATBI,   "Cnd To&lt;/P&gt;&lt;P&gt;            142   '|'.&lt;/P&gt;&lt;P&gt;    WK_CNT = WK_CNT + 1.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SET_OUTPUT&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Apr 2007 01:01:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-about-this-implementation-of-bom-explosion-simulate-stack/m-p/2211343#M473655</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-04-26T01:01:09Z</dc:date>
    </item>
    <item>
      <title>Re: How about this implementation of BOM Explosion(simulate stack)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-about-this-implementation-of-bom-explosion-simulate-stack/m-p/2211344#M473656</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;check this &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="3327732"&gt;&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;no need to access all the tables.&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;Prabhu&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Apr 2007 04:25:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-about-this-implementation-of-bom-explosion-simulate-stack/m-p/2211344#M473656</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-04-26T04:25:09Z</dc:date>
    </item>
    <item>
      <title>Re: How about this implementation of BOM Explosion(simulate stack)</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-about-this-implementation-of-bom-explosion-simulate-stack/m-p/2211345#M473657</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Prabhu Peram,&lt;/P&gt;&lt;P&gt;Thanks very much.&lt;/P&gt;&lt;P&gt;I want to show an idea of BOM explosion by constructing a stack.&lt;/P&gt;&lt;P&gt;BOM explosion uses first-root-searching and pushes the "root" material into stack.If the "root" has no left-child,pops out the "root" material and searchs the right-child....and completes the entire BOM explosion.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Mic chen&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: &lt;/P&gt;&lt;P&gt;        Mic chen&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Apr 2007 02:56:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-about-this-implementation-of-bom-explosion-simulate-stack/m-p/2211345#M473657</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-04-27T02:56:09Z</dc:date>
    </item>
  </channel>
</rss>

