<?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: Download all programs in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211156#M133504</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Abdul,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your immediate response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This program is correct what i expected.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is working in 4.6c but not in 4.7.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have another program please help on this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It would be great appreciable to provide us.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 05 Apr 2006 07:12:31 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-04-05T07:12:31Z</dc:date>
    <item>
      <title>Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211150#M133498</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Guys,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to download the programs from application server into one folder.If there is any program please help on this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If there is any attachment please mail to this id.&lt;/P&gt;&lt;P&gt;mailid:k_v_kumar@keane.com&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 06:40:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211150#M133498</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T06:40:15Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211151#M133499</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;go to se80 &lt;/P&gt;&lt;P&gt;type the program name and click display&lt;/P&gt;&lt;P&gt;now goto utilities&lt;DEL&gt;&amp;gt;moreutilities&lt;/DEL&gt;&amp;gt; upload/download--&amp;gt; download&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;specify the folder name and click save.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Kinshuk&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 06:44:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211151#M133499</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T06:44:02Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211152#M133500</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Vijay,&lt;/P&gt;&lt;P&gt;   In &amp;lt;b&amp;gt;AL11&amp;lt;/b&amp;gt; TRANSACTION and follow this path &amp;lt;b&amp;gt;SYSTEM-&amp;gt;LIST-&amp;gt;SAVE-&amp;gt;LOCAL FILE/OFFICE FOLD&amp;lt;/b&amp;gt;ERS...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;hope this helps.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Kalyani&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 06:49:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211152#M133500</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T06:49:59Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211153#M133501</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I want to download all programs which are all in application server.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Using above method we can download only one program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 06:53:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211153#M133501</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T06:53:01Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211154#M133502</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi vijay,&lt;/P&gt;&lt;P&gt;use the below program.&lt;/P&gt;&lt;P&gt;In the program name just type Z* or Y* to download customer programs.It is working perfectly for me.Hope you too can enjoy..The beauty is this program will also get downloaded...Enjoy!!!!!&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;Report: ZKBPROGS             *&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;Function   : Up/Download ABAP reports complete with texts            *&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;Change Log :                 *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;July 5, 1999         *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   - Combined existing programs that did the upload and download into*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   - one program.            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   - Changed format that the reports are saved in to be compatible   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     with Wolfgang Morgenthaler's upload/download program(YSTRASN00  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     at &lt;A href="https://community.sap.com/www.antarcon.de)" target="test_blank"&gt;www.antarcon.de)&lt;/A&gt;.  Major differences between this program and*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Wolfgang's are:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        - this program does not update TRDIR with the                *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TRDIR entries that are in the program uploaded.  Instead,  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          current users stats are used.          *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        - this program allows selection of reports from a list or    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          a single report can be tuped in and uploaded               *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        - this program also updates TADIR so that a development class*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          is assigned to the program             *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        - this program checks to see if the program already has a    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TRDIR entry, and if it does, warns the user                *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        - this program will save/restore the program documenation too*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         *&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;REPORT ZKBPROGS&lt;/P&gt;&lt;P&gt;       NO STANDARD PAGE HEADING&lt;/P&gt;&lt;P&gt;       LINE-SIZE  255.&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;Declare Database Objects     *&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;tables:&lt;/P&gt;&lt;P&gt;  DOKIL,&lt;/P&gt;&lt;P&gt;  TRDIR.&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;Constants*&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CONSTANTS:&lt;/P&gt;&lt;P&gt;  MC_TRDIR_IDENTIFIER(72)  TYPE C VALUE '%&amp;amp;%&amp;amp; RDIR',&lt;/P&gt;&lt;P&gt;  MC_REPORT_IDENTIFIER(72) TYPE C VALUE '%&amp;amp;%&amp;amp; REPO',&lt;/P&gt;&lt;P&gt;  MC_TEXT_IDENTIFIER(72)   TYPE C VALUE '%&amp;amp;%&amp;amp; TEXP',&lt;/P&gt;&lt;P&gt;  MC_THEAD_IDENTIFIER(72)  TYPE C VALUE '%&amp;amp;%&amp;amp; HEAD',&lt;/P&gt;&lt;P&gt;  MC_DOC_IDENTIFIER(72)    TYPE C VALUE '%&amp;amp;%&amp;amp; DOKL',&lt;/P&gt;&lt;P&gt;  MC_TRDIR_SHORT(4)        TYPE C VALUE 'RDIR',&lt;/P&gt;&lt;P&gt;  MC_REPORT_SHORT(4)       TYPE C VALUE 'REPO',&lt;/P&gt;&lt;P&gt;  MC_TEXT_SHORT(4)         TYPE C VALUE 'TEXP',&lt;/P&gt;&lt;P&gt;  MC_THEAD_SHORT(4)        TYPE C VALUE 'HEAD',&lt;/P&gt;&lt;P&gt;  MC_DOC_SHORT(4)          TYPE C VALUE 'DOKP'.&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;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;Declare Module level data structures             *&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;DATA: BEGIN OF MTAB_PROGRAM_SOURCE OCCURS 0,&lt;/P&gt;&lt;P&gt;        LINE(72) TYPE C,&lt;/P&gt;&lt;P&gt;      END OF MTAB_PROGRAM_SOURCE.&lt;/P&gt;&lt;P&gt;DATA: MTAB_PROGRAM_TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: MTAB_PROGRAM_TEXTS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: MSTR_THEAD LIKE THEAD.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF MTAB_PROGRAM_FILE OCCURS 0,&lt;/P&gt;&lt;P&gt;        LINE(275) TYPE C,&lt;/P&gt;&lt;P&gt;      END OF MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF MTAB_DIRECTORY OCCURS 0,&lt;/P&gt;&lt;P&gt;        NAME LIKE TRDIR-NAME,&lt;/P&gt;&lt;P&gt;        DESC(72) TYPE C,&lt;/P&gt;&lt;P&gt;        SAVENAME LIKE RLGRAP-FILENAME,&lt;/P&gt;&lt;P&gt;      END OF MTAB_DIRECTORY.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF MTAB_PROGRAM_DOCUMENTATION OCCURS 0,&lt;/P&gt;&lt;P&gt;        LINE(255) TYPE C,&lt;/P&gt;&lt;P&gt;      END OF MTAB_PROGRAM_DOCUMENTATION.&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;Selection Screen             *&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;*-- Options for upload/download of programs&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;  RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'.       " Download reports&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS:&lt;/P&gt;&lt;P&gt;  S_NAME  FOR TRDIR-NAME,              " Program Name&lt;/P&gt;&lt;P&gt;  S_SUBC  FOR TRDIR-SUBC               " Program Type&lt;/P&gt;&lt;P&gt;          DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by default&lt;/P&gt;&lt;P&gt;  S_CNAM  FOR TRDIR-CNAM               " Created by&lt;/P&gt;&lt;P&gt;          DEFAULT SY-UNAME,&lt;/P&gt;&lt;P&gt;  S_UNAM  FOR TRDIR-UNAM,              " Last Changed by&lt;/P&gt;&lt;P&gt;  S_CDAT  FOR TRDIR-CDAT,              " Creation date&lt;/P&gt;&lt;P&gt;  S_UDAT  FOR TRDIR-UDAT.              " Last update date&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK FRM_TRDIR.&lt;/P&gt;&lt;P&gt;*-- Options for uploading programs&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;  RB_UP   RADIOBUTTON GROUP UDL.       " Upload reports&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK FRM_UPLOAD WITH FRAME TITLE TEXT-UPL.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(29) TEXT-SNG.&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;  RB_FILE RADIOBUTTON GROUP HOW DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 33(42) TEXT-FNA.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;  RB_LIST RADIOBUTTON GROUP HOW.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK FRM_UPLOAD.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK FRM_OPTIONS.&lt;/P&gt;&lt;P&gt;*-- Options for up/downloading programs&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;  RB_DOS  RADIOBUTTON GROUP FIL DEFAULT 'X', " Save to local&lt;/P&gt;&lt;P&gt;  RB_UNIX RADIOBUTTON GROUP FIL,       " Save to UNIX&lt;/P&gt;&lt;P&gt;  P_PATH  LIKE RLGRAP-FILENAME         " Path to save files to&lt;/P&gt;&lt;P&gt;        DEFAULT 'c:\temp\'.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK FRM_FILEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-LOW.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'F4_PROGRAM'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            OBJECT             = S_NAME-LOW&lt;/P&gt;&lt;P&gt;            SUPPRESS_SELECTION = 'X'&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            RESULT             = S_NAME-LOW&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS             = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-HIGH.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'F4_PROGRAM'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            OBJECT             = S_NAME-HIGH&lt;/P&gt;&lt;P&gt;            SUPPRESS_SELECTION = 'X'&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            RESULT             = S_NAME-HIGH&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS             = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-LOW.&lt;/P&gt;&lt;P&gt;  PERFORM GET_NAME USING 'S_UNAM-LOW'&lt;/P&gt;&lt;P&gt;                CHANGING S_UNAM-LOW.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-HIGH.&lt;/P&gt;&lt;P&gt;  PERFORM GET_NAME USING 'S_UNAM-HIGH'&lt;/P&gt;&lt;P&gt;                CHANGING S_UNAM-HIGH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-LOW.&lt;/P&gt;&lt;P&gt;  PERFORM GET_NAME USING 'S_CNAM-LOW'&lt;/P&gt;&lt;P&gt;                CHANGING S_CNAM-LOW.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-HIGH.&lt;/P&gt;&lt;P&gt;  PERFORM GET_NAME USING 'S_CNAM-HIGH'&lt;/P&gt;&lt;P&gt;                CHANGING S_CNAM-HIGH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TOP-OF-PAGE.&lt;/P&gt;&lt;P&gt;  IF RB_LIST = 'X'.&lt;/P&gt;&lt;P&gt;    FORMAT COLOR COL_HEADING.&lt;/P&gt;&lt;P&gt;    NEW-LINE.&lt;/P&gt;&lt;P&gt;    WRITE: AT 3 TEXT-H01,&lt;/P&gt;&lt;P&gt;           AT 15 TEXT-H03.&lt;/P&gt;&lt;P&gt;    FORMAT COLOR OFF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT LINE-SELECTION.&lt;/P&gt;&lt;P&gt;  CHECK RB_LIST = 'X'.                 " only do in list mode&lt;/P&gt;&lt;P&gt;  READ LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.&lt;/P&gt;&lt;P&gt;*-- Read file into an internal table&lt;/P&gt;&lt;P&gt;  PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE&lt;/P&gt;&lt;P&gt;            USING  MTAB_DIRECTORY-SAVENAME.&lt;/P&gt;&lt;P&gt;*-- Split table into TADIR entry, report lines, and report text&lt;/P&gt;&lt;P&gt;  PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE&lt;/P&gt;&lt;P&gt;                 MTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;                 MTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;                 MTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;        CHANGING TRDIR&lt;/P&gt;&lt;P&gt;                 MSTR_THEAD.&lt;/P&gt;&lt;P&gt;*-- Save all of the data&lt;/P&gt;&lt;P&gt;  PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;               MTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;               MTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;        USING  TRDIR&lt;/P&gt;&lt;P&gt;               MSTR_THEAD.&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;Start of processing          *&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;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  FORMAT COLOR COL_NORMAL.&lt;/P&gt;&lt;P&gt;  IF RB_DOWN = 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM DOWNLOAD_REPORTS.&lt;/P&gt;&lt;P&gt;  ELSEIF RB_UP = 'X'.&lt;/P&gt;&lt;P&gt;    PERFORM UPLOAD_REPORTS.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  IF RB_DOWN = 'X'.&lt;/P&gt;&lt;P&gt;    CONCATENATE P_PATH&lt;/P&gt;&lt;P&gt;                'directory.txt'&lt;/P&gt;&lt;P&gt;      INTO P_PATH.&lt;/P&gt;&lt;P&gt;    PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_DIRECTORY&lt;/P&gt;&lt;P&gt;           USING  P_PATH.&lt;/P&gt;&lt;P&gt;  ENDIF.&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 UPLOAD_REPORTS   *&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 UPLOAD_REPORTS.&lt;/P&gt;&lt;P&gt;*-- Can upload a reports entered in selection criteria or&lt;/P&gt;&lt;P&gt;*-- select from a list.  List can be from index.txt in same directory&lt;/P&gt;&lt;P&gt;*-- (created by the download) or by reading the first line of each file&lt;/P&gt;&lt;P&gt;*-- in the directory.&lt;/P&gt;&lt;P&gt;  IF RB_FILE = 'X'. " Upload single program from a file&lt;/P&gt;&lt;P&gt;*-- Read file into an internal table&lt;/P&gt;&lt;P&gt;    PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE&lt;/P&gt;&lt;P&gt;              USING  P_PATH.&lt;/P&gt;&lt;P&gt;*-- Split table into TADIR entry, report lines, and report text&lt;/P&gt;&lt;P&gt;    PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE&lt;/P&gt;&lt;P&gt;                   MTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;                   MTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;                   MTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;          CHANGING TRDIR&lt;/P&gt;&lt;P&gt;                   MSTR_THEAD.&lt;/P&gt;&lt;P&gt;*-- Save all of the data&lt;/P&gt;&lt;P&gt;    PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;                 MTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;                 MTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;          USING  TRDIR&lt;/P&gt;&lt;P&gt;                 MSTR_THEAD.&lt;/P&gt;&lt;P&gt;  ELSEIF RB_LIST = 'X'. " Show list for user to choose from&lt;/P&gt;&lt;P&gt;*-- get list of report names/descriptions from directory text&lt;/P&gt;&lt;P&gt;    CONCATENATE P_PATH&lt;/P&gt;&lt;P&gt;                'directory.txt'&lt;/P&gt;&lt;P&gt;    INTO P_PATH.&lt;/P&gt;&lt;P&gt;    PERFORM READ_REPORT_FROM_DISK TABLES MTAB_DIRECTORY&lt;/P&gt;&lt;P&gt;              USING  P_PATH.&lt;/P&gt;&lt;P&gt;    SORT MTAB_DIRECTORY.&lt;/P&gt;&lt;P&gt;*-- Write out list of report names/descriptions&lt;/P&gt;&lt;P&gt;    LOOP AT MTAB_DIRECTORY.&lt;/P&gt;&lt;P&gt;      WRITE:&lt;/P&gt;&lt;P&gt;        / MTAB_DIRECTORY-NAME UNDER TEXT-H01,&lt;/P&gt;&lt;P&gt;          MTAB_DIRECTORY-DESC UNDER TEXT-H03,&lt;/P&gt;&lt;P&gt;          MTAB_DIRECTORY-SAVENAME.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;*-- Process user selections for reports to upload.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.           " upload_reports&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 DOWNLOAD_REPORTS *&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;      From the user selections, get all programs that meet the      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      criteria, and save them in ftab_program_directory.            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Also save the report to disk.             *&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 DOWNLOAD_REPORTS.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    LC_FULL_FILENAME LIKE RLGRAP-FILENAME.&lt;/P&gt;&lt;P&gt;*-- The table is put into an internal table because the program will&lt;/P&gt;&lt;P&gt;*-- abend if multiple transfers to a dataset occur within a SELECT/&lt;/P&gt;&lt;P&gt;*-- ENDSELCT (tested on 3.1H)&lt;/P&gt;&lt;P&gt;  SELECT * FROM  TRDIR&lt;/P&gt;&lt;P&gt;         INTO TABLE MTAB_PROGRAM_TRDIR&lt;/P&gt;&lt;P&gt;         WHERE  NAME  IN S_NAME&lt;/P&gt;&lt;P&gt;         AND    SUBC  IN S_SUBC&lt;/P&gt;&lt;P&gt;         AND    CNAM  IN S_CNAM&lt;/P&gt;&lt;P&gt;         AND    UNAM  IN S_UNAM&lt;/P&gt;&lt;P&gt;         AND    CDAT  IN S_CDAT&lt;/P&gt;&lt;P&gt;         AND    UDAT  IN S_UDAT.&lt;/P&gt;&lt;P&gt;  LOOP AT MTAB_PROGRAM_TRDIR.&lt;/P&gt;&lt;P&gt;*-- Clear out text and source code tables&lt;/P&gt;&lt;P&gt;    CLEAR:&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_FILE,&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_SOURCE,&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_TEXTS,&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_DOCUMENTATION.&lt;/P&gt;&lt;P&gt;    REFRESH:&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_FILE,&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_SOURCE,&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_TEXTS,&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_DOCUMENTATION.&lt;/P&gt;&lt;P&gt;*-- Get the report&lt;/P&gt;&lt;P&gt;    READ REPORT MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_SOURCE.&lt;/P&gt;&lt;P&gt;*-- Get the text for the report&lt;/P&gt;&lt;P&gt;    READ TEXTPOOL MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_TEXTS.&lt;/P&gt;&lt;P&gt;*-- Get the documentation for the report&lt;/P&gt;&lt;P&gt;    CLEAR DOKIL.&lt;/P&gt;&lt;P&gt;    SELECT * UP TO 1 ROWS FROM DOKIL&lt;/P&gt;&lt;P&gt;           WHERE  ID          = 'RE'&lt;/P&gt;&lt;P&gt;           AND    OBJECT      = MTAB_PROGRAM_TRDIR-NAME&lt;/P&gt;&lt;P&gt;           AND    LANGU       = SY-LANGU&lt;/P&gt;&lt;P&gt;           AND    TYP         = 'E'&lt;/P&gt;&lt;P&gt;           ORDER BY VERSION DESCENDING.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;*-- Documentation exists for this object&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'DOCU_READ'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                ID      = DOKIL-ID&lt;/P&gt;&lt;P&gt;                LANGU   = DOKIL-LANGU&lt;/P&gt;&lt;P&gt;                OBJECT  = DOKIL-OBJECT&lt;/P&gt;&lt;P&gt;                TYP     = DOKIL-TYP&lt;/P&gt;&lt;P&gt;                VERSION = DOKIL-VERSION&lt;/P&gt;&lt;P&gt;           IMPORTING&lt;/P&gt;&lt;P&gt;                HEAD    = MSTR_THEAD&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                LINE    = MTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                OTHERS  = 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;*-- Put the report code and texts into a single file&lt;/P&gt;&lt;P&gt;*-- Put the identifier line in so that the start of the TRDIR line&lt;/P&gt;&lt;P&gt;*-- is marked&lt;/P&gt;&lt;P&gt;    CONCATENATE MC_TRDIR_IDENTIFIER&lt;/P&gt;&lt;P&gt;    MTAB_PROGRAM_TRDIR-NAME&lt;/P&gt;&lt;P&gt;    INTO MTAB_PROGRAM_FILE-LINE.&lt;/P&gt;&lt;P&gt;    APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;*-- Add the TRDIR line&lt;/P&gt;&lt;P&gt;    MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TRDIR.&lt;/P&gt;&lt;P&gt;    APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;*-- Put the identifier line in so that the start of the report code&lt;/P&gt;&lt;P&gt;*-- is marked&lt;/P&gt;&lt;P&gt;    CONCATENATE MC_REPORT_IDENTIFIER&lt;/P&gt;&lt;P&gt;                MTAB_PROGRAM_TRDIR-NAME&lt;/P&gt;&lt;P&gt;      INTO MTAB_PROGRAM_FILE-LINE.&lt;/P&gt;&lt;P&gt;    APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;*-- Add the report code&lt;/P&gt;&lt;P&gt;    LOOP AT MTAB_PROGRAM_SOURCE.&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_FILE = MTAB_PROGRAM_SOURCE.&lt;/P&gt;&lt;P&gt;      APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;*-- Put the identifier line in so that the start of the report text&lt;/P&gt;&lt;P&gt;*-- is marked&lt;/P&gt;&lt;P&gt;    CONCATENATE MC_TEXT_IDENTIFIER&lt;/P&gt;&lt;P&gt;                MTAB_PROGRAM_TRDIR-NAME&lt;/P&gt;&lt;P&gt;      INTO MTAB_PROGRAM_FILE-LINE.&lt;/P&gt;&lt;P&gt;    APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;*-- Add the report texts&lt;/P&gt;&lt;P&gt;    LOOP AT MTAB_PROGRAM_TEXTS.&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_FILE = MTAB_PROGRAM_TEXTS.&lt;/P&gt;&lt;P&gt;      APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;*-- Put the identifier line in so that the start of the THEAD record&lt;/P&gt;&lt;P&gt;*-- is marked&lt;/P&gt;&lt;P&gt;    CONCATENATE MC_THEAD_IDENTIFIER&lt;/P&gt;&lt;P&gt;                MTAB_PROGRAM_TRDIR-NAME&lt;/P&gt;&lt;P&gt;      INTO MTAB_PROGRAM_FILE-LINE.&lt;/P&gt;&lt;P&gt;    APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;    MTAB_PROGRAM_FILE = MSTR_THEAD.&lt;/P&gt;&lt;P&gt;    APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;*-- Put the identifier line in so that the start of the report&lt;/P&gt;&lt;P&gt;*-- documentation is marked&lt;/P&gt;&lt;P&gt;    CONCATENATE MC_DOC_IDENTIFIER&lt;/P&gt;&lt;P&gt;                MTAB_PROGRAM_TRDIR-NAME&lt;/P&gt;&lt;P&gt;      INTO MTAB_PROGRAM_FILE-LINE.&lt;/P&gt;&lt;P&gt;    APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;*-- Add the report documentation&lt;/P&gt;&lt;P&gt;    LOOP AT MTAB_PROGRAM_DOCUMENTATION.&lt;/P&gt;&lt;P&gt;      MTAB_PROGRAM_FILE = MTAB_PROGRAM_DOCUMENTATION.&lt;/P&gt;&lt;P&gt;      APPEND MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;*-- Make the fully pathed filename that report will be saved to&lt;/P&gt;&lt;P&gt;    CONCATENATE P_PATH&lt;/P&gt;&lt;P&gt;                MTAB_PROGRAM_TRDIR-NAME&lt;/P&gt;&lt;P&gt;                '.txt'&lt;/P&gt;&lt;P&gt;      INTO LC_FULL_FILENAME.&lt;/P&gt;&lt;P&gt;    PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_PROGRAM_FILE&lt;/P&gt;&lt;P&gt;           USING  LC_FULL_FILENAME.&lt;/P&gt;&lt;P&gt;*-- Write out message with Program Name/Description&lt;/P&gt;&lt;P&gt;    READ TABLE MTAB_PROGRAM_TEXTS WITH KEY ID = 'R'.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.&lt;/P&gt;&lt;P&gt;      MTAB_DIRECTORY-DESC = MTAB_PROGRAM_TEXTS-ENTRY.&lt;/P&gt;&lt;P&gt;      MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.&lt;/P&gt;&lt;P&gt;      APPEND MTAB_DIRECTORY.&lt;/P&gt;&lt;P&gt;      WRITE: / MTAB_PROGRAM_TRDIR-NAME,&lt;/P&gt;&lt;P&gt;               MTAB_PROGRAM_TEXTS-ENTRY(65) COLOR COL_HEADING.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.&lt;/P&gt;&lt;P&gt;      MTAB_DIRECTORY-DESC = 'No description available'.&lt;/P&gt;&lt;P&gt;      MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.&lt;/P&gt;&lt;P&gt;      APPEND MTAB_DIRECTORY.&lt;/P&gt;&lt;P&gt;      WRITE: / MTAB_PROGRAM_TRDIR-NAME.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.           " BUILD_PROGRAM_DIRECTORY&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 SAVE_TABLE_TO_FILE                   *&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;      ........              *&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;  FTAB_TABLE            *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  F_FILENAME            *&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 SAVE_TABLE_TO_FILE TABLES FTAB_TABLE&lt;/P&gt;&lt;P&gt;    USING  F_FILENAME.&lt;/P&gt;&lt;P&gt;  IF RB_DOS = 'X'.                  " Save file to presentation server&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              FILENAME = F_FILENAME&lt;/P&gt;&lt;P&gt;              FILETYPE = 'ASC'&lt;/P&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;              DATA_TAB = FTAB_TABLE&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              OTHERS   = 4.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,&lt;/P&gt;&lt;P&gt;               F_FILENAME COLOR COL_NEGATIVE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.            " Save file to application server&lt;/P&gt;&lt;P&gt;    OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      LOOP AT FTAB_TABLE.&lt;/P&gt;&lt;P&gt;        TRANSFER FTAB_TABLE TO F_FILENAME.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;          WRITE: / 'Error writing record to file;' COLOR COL_NEGATIVE,&lt;/P&gt;&lt;P&gt;                   F_FILENAME COLOR COL_NEGATIVE.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,&lt;/P&gt;&lt;P&gt;               F_FILENAME COLOR COL_NEGATIVE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.           " End RB_DOS&lt;/P&gt;&lt;P&gt;ENDFORM.           " SAVE_PROGRAM&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_REPORT_FROM_DISK                *&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 report into internal table.  Can read from local or      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      remote computer       *&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_REPORT_FROM_DISK TABLES FTAB_TABLE&lt;/P&gt;&lt;P&gt;       USING  F_FILENAME.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;     LC_MESSAGE(128) TYPE C.&lt;/P&gt;&lt;P&gt;  CLEAR   FTAB_TABLE.&lt;/P&gt;&lt;P&gt;  REFRESH FTAB_TABLE.&lt;/P&gt;&lt;P&gt;  IF RB_DOS = 'X'.&lt;/P&gt;&lt;P&gt;    TRANSLATE F_FILENAME USING '/\'.   " correct slash for Dos PC file&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              FILENAME            = F_FILENAME&lt;/P&gt;&lt;P&gt;              FILETYPE            = 'ASC'&lt;/P&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;              DATA_TAB            = FTAB_TABLE&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              CONVERSION_ERROR    = 1&lt;/P&gt;&lt;P&gt;              FILE_OPEN_ERROR     = 2&lt;/P&gt;&lt;P&gt;              FILE_READ_ERROR     = 3&lt;/P&gt;&lt;P&gt;              INVALID_TABLE_WIDTH = 4&lt;/P&gt;&lt;P&gt;              INVALID_TYPE        = 5&lt;/P&gt;&lt;P&gt;              NO_BATCH            = 6&lt;/P&gt;&lt;P&gt;              UNKNOWN_ERROR       = 7&lt;/P&gt;&lt;P&gt;              OTHERS              = 8.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC &amp;gt;&amp;lt; 0.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Error reading file from local PC' COLOR COL_NEGATIVE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSEIF RB_UNIX = 'X'.&lt;/P&gt;&lt;P&gt;    TRANSLATE F_FILENAME USING '\/'.   " correct slash for unix&lt;/P&gt;&lt;P&gt;    OPEN DATASET F_FILENAME FOR INPUT MESSAGE LC_MESSAGE IN TEXT MODE.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      DO.&lt;/P&gt;&lt;P&gt;        READ DATASET F_FILENAME INTO FTAB_TABLE.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;          APPEND FTAB_TABLE.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          EXIT.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDDO.&lt;/P&gt;&lt;P&gt;      CLOSE DATASET F_FILENAME.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Error reading file from remote computer'&lt;/P&gt;&lt;P&gt;  COLOR COL_NEGATIVE,&lt;/P&gt;&lt;P&gt;             / LC_MESSAGE,&lt;/P&gt;&lt;P&gt;             / F_FILENAME.&lt;/P&gt;&lt;P&gt;      SY-SUBRC = 4.&lt;/P&gt;&lt;P&gt;    ENDIF.&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.           " READ_REPORT_FROM_DISK&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 SPLIT_INCOMING_FILE                  *&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;      ........              *&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;  FTAB_PROGRAM_FILE     *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  FTAB_PROGRAM_SOURCE   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  ` *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  FTAB_PROGRAM_TEXTS    *&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 SPLIT_INCOMING_FILE TABLES FTAB_PROGRAM_FILE&lt;/P&gt;&lt;P&gt;                 STRUCTURE MTAB_PROGRAM_FILE&lt;/P&gt;&lt;P&gt;            FTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;                 STRUCTURE MTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;            FTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;                 STRUCTURE MTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;            FTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;                STRUCTURE MTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;   CHANGING FSTR_TRDIR&lt;/P&gt;&lt;P&gt;            FSTR_THEAD.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    LC_DATATYPE(4) TYPE C,             " Type of data, REPO, TEXP, RDIR&lt;/P&gt;&lt;P&gt;    LC_PROGRAM_FILE LIKE MTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;  LOOP AT FTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;    LC_PROGRAM_FILE = FTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;    CASE LC_PROGRAM_FILE(9).&lt;/P&gt;&lt;P&gt;      WHEN MC_TRDIR_IDENTIFIER.&lt;/P&gt;&lt;P&gt;        LC_DATATYPE = MC_TRDIR_SHORT.&lt;/P&gt;&lt;P&gt;      WHEN MC_REPORT_IDENTIFIER.&lt;/P&gt;&lt;P&gt;        LC_DATATYPE = MC_REPORT_SHORT.&lt;/P&gt;&lt;P&gt;      WHEN MC_TEXT_IDENTIFIER.&lt;/P&gt;&lt;P&gt;        LC_DATATYPE = MC_TEXT_SHORT.&lt;/P&gt;&lt;P&gt;      WHEN MC_DOC_IDENTIFIER.&lt;/P&gt;&lt;P&gt;        LC_DATATYPE = MC_DOC_SHORT.&lt;/P&gt;&lt;P&gt;      WHEN MC_THEAD_IDENTIFIER.&lt;/P&gt;&lt;P&gt;        LC_DATATYPE = MC_THEAD_SHORT.&lt;/P&gt;&lt;P&gt;      WHEN OTHERS. " Actual contents of report, trdir, or text&lt;/P&gt;&lt;P&gt;        CASE LC_DATATYPE.&lt;/P&gt;&lt;P&gt;          WHEN MC_TRDIR_SHORT.&lt;/P&gt;&lt;P&gt;            FSTR_TRDIR = FTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;          WHEN MC_REPORT_SHORT.&lt;/P&gt;&lt;P&gt;            FTAB_PROGRAM_SOURCE = FTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;            APPEND FTAB_PROGRAM_SOURCE.&lt;/P&gt;&lt;P&gt;          WHEN MC_TEXT_SHORT.&lt;/P&gt;&lt;P&gt;            FTAB_PROGRAM_TEXTS = FTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;            APPEND FTAB_PROGRAM_TEXTS.&lt;/P&gt;&lt;P&gt;          WHEN MC_THEAD_SHORT.&lt;/P&gt;&lt;P&gt;            FSTR_THEAD = FTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;          WHEN MC_DOC_SHORT.&lt;/P&gt;&lt;P&gt;            FTAB_PROGRAM_DOCUMENTATION = FTAB_PROGRAM_FILE.&lt;/P&gt;&lt;P&gt;            APPEND FTAB_PROGRAM_DOCUMENTATION.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.           " SPLIT_INCOMING_FILE&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 INSERT_NEW_REPORT*&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;      ........              *&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;  FTAB_PROGRAM_SOURCE   *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  FTAB_PROGRAM_TEXTS    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  F_TRDIR               *&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 INSERT_NEW_REPORT TABLES FTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;              STRUCTURE MTAB_PROGRAM_SOURCE&lt;/P&gt;&lt;P&gt;          FTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;               STRUCTURE MTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;          FTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;               STRUCTURE MTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;   USING  FSTR_TRDIR LIKE TRDIR&lt;/P&gt;&lt;P&gt;          FSTR_THEAD LIKE MSTR_THEAD.&lt;/P&gt;&lt;P&gt;  DATA:&lt;/P&gt;&lt;P&gt;    LC_OBJ_NAME LIKE E071-OBJ_NAME,&lt;/P&gt;&lt;P&gt;    LC_LINE2(40)     TYPE C,&lt;/P&gt;&lt;P&gt;    LC_ANSWER(1)     TYPE C.&lt;/P&gt;&lt;P&gt;*-- read trdir to see if the report already exists, if it does, prompt&lt;/P&gt;&lt;P&gt;*-- user to overwrite or abort.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM TRDIR WHERE NAME = FSTR_TRDIR-NAME.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0. " Already exists&lt;/P&gt;&lt;P&gt;    CONCATENATE 'want to overwrite report'&lt;/P&gt;&lt;P&gt;                FSTR_TRDIR-NAME&lt;/P&gt;&lt;P&gt;      INTO LC_LINE2 SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;    CONCATENATE LC_LINE2&lt;/P&gt;&lt;P&gt;                '?'&lt;/P&gt;&lt;P&gt;      INTO LC_LINE2.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              DEFAULTOPTION  = 'N'&lt;/P&gt;&lt;P&gt;              TEXTLINE1   = 'The selected report already exists, do you'&lt;/P&gt;&lt;P&gt;              TEXTLINE2      = LC_LINE2&lt;/P&gt;&lt;P&gt;              TITEL          = 'Report already exists'&lt;/P&gt;&lt;P&gt;              CANCEL_DISPLAY = SPACE&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;              ANSWER         = LC_ANSWER&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              OTHERS         = 1.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LC_ANSWER = 'J'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF LC_ANSWER = 'J'.&lt;/P&gt;&lt;P&gt;*-- Create the TADIR entry.  (TRDIR entry created by INSERT REPORT)&lt;/P&gt;&lt;P&gt;    LC_OBJ_NAME = TRDIR-NAME.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              WI_E071_PGMID     = 'R3TR'&lt;/P&gt;&lt;P&gt;              WI_E071_OBJECT    = 'PROG'&lt;/P&gt;&lt;P&gt;              WI_E071_OBJ_NAME  = LC_OBJ_NAME&lt;/P&gt;&lt;P&gt;              WI_TADIR_DEVCLASS = '$TMP'&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              EXIT              = 3&lt;/P&gt;&lt;P&gt;              OTHERS            = 4.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;*-- Create Report&lt;/P&gt;&lt;P&gt;      INSERT REPORT FSTR_TRDIR-NAME FROM FTAB_PROGRAM_SOURCE.&lt;/P&gt;&lt;P&gt;*-- Create Texts&lt;/P&gt;&lt;P&gt;      INSERT TEXTPOOL FSTR_TRDIR-NAME FROM FTAB_PROGRAM_TEXTS&lt;/P&gt;&lt;P&gt;             LANGUAGE SY-LANGU.&lt;/P&gt;&lt;P&gt;*-- Save Documentation&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'DOCU_UPDATE'&lt;/P&gt;&lt;P&gt;           EXPORTING&lt;/P&gt;&lt;P&gt;                HEAD    = FSTR_THEAD&lt;/P&gt;&lt;P&gt;                STATE   = 'A'&lt;/P&gt;&lt;P&gt;                TYP     = 'E'&lt;/P&gt;&lt;P&gt;                VERSION = '1'&lt;/P&gt;&lt;P&gt;           TABLES&lt;/P&gt;&lt;P&gt;                LINE    = FTAB_PROGRAM_DOCUMENTATION&lt;/P&gt;&lt;P&gt;           EXCEPTIONS&lt;/P&gt;&lt;P&gt;                OTHERS  = 1.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      WRITE: / 'Error updating the TADIR entry' COLOR COL_NEGATIVE,&lt;/P&gt;&lt;P&gt;               'Program' COLOR COL_NEGATIVE INTENSIFIED OFF,&lt;/P&gt;&lt;P&gt;               FSTR_TRDIR-NAME, 'was not loaded into SAP.'&lt;/P&gt;&lt;P&gt;                  COLOR COL_NEGATIVE INTENSIFIED OFF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    WRITE: / FSTR_TRDIR-NAME COLOR COL_NEGATIVE,&lt;/P&gt;&lt;P&gt;             'was not uploaded into SAP.  Action cancelled by user'&lt;/P&gt;&lt;P&gt;                 COLOR COL_NEGATIVE INTENSIFIED OFF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.           " INSERT_NEW_REPORT&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_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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........              *&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;  VALUE(F_FIELD)        *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  F_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 GET_NAME USING VALUE(F_FIELD)&lt;/P&gt;&lt;P&gt;           CHANGING F_NAME.&lt;/P&gt;&lt;P&gt;  DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,&lt;/P&gt;&lt;P&gt;        LC_PROG LIKE D020S-PROG,&lt;/P&gt;&lt;P&gt;        LC_DNUM LIKE D020S-DNUM.&lt;/P&gt;&lt;P&gt;  TRANSLATE F_FIELD TO UPPER CASE.&lt;/P&gt;&lt;P&gt;  refresh ltab_fields.&lt;/P&gt;&lt;P&gt;  LTAB_FIELDS-FIELDNAME = F_FIELD.&lt;/P&gt;&lt;P&gt;  append ltab_fields.&lt;/P&gt;&lt;P&gt;  LC_PROG =  SY-REPID .&lt;/P&gt;&lt;P&gt;  LC_DNUM =  SY-DYNNR .&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'DYNP_VALUES_READ'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            DYNAME     = LC_PROG&lt;/P&gt;&lt;P&gt;            DYNUMB     = LC_DNUM&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            dynpfields = ltab_fields&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS     = 01.&lt;/P&gt;&lt;P&gt;  read table ltab_fields index 1.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;    F_NAME = LTAB_FIELDS-FIELDVALUE.&lt;/P&gt;&lt;P&gt;    refresh ltab_fields.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'F4_USER'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            OBJECT = F_NAME&lt;/P&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            RESULT = F_NAME.&lt;/P&gt;&lt;P&gt;ENDFORM.           " GET_NAME&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Abdul Hakim&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 06:57:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211154#M133502</guid>
      <dc:creator>abdul_hakim</dc:creator>
      <dc:date>2006-04-05T06:57:15Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211155#M133503</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;once you are in display mode of program follow the path utilities&lt;DEL&gt;&amp;gt;moreutilities&lt;/DEL&gt;&amp;gt; upload/download--&amp;gt; download from menu and download the program in specific file format in a pre defined folder at your hard drive.&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Pragya&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 06:59:58 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211155#M133503</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T06:59:58Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211156#M133504</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Abdul,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your immediate response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This program is correct what i expected.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is working in 4.6c but not in 4.7.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have another program please help on this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It would be great appreciable to provide us.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 07:12:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211156#M133504</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T07:12:31Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211157#M133505</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi vijay,&lt;/P&gt;&lt;P&gt;i have not tested this program in 4.7 since i m working on 46c.Will modify this logic and update you..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Abdul Hakim&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 07:15:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211157#M133505</guid>
      <dc:creator>abdul_hakim</dc:creator>
      <dc:date>2006-04-05T07:15:38Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211158#M133506</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi vijay,&lt;/P&gt;&lt;P&gt;i think this will work on 4.7.&lt;/P&gt;&lt;P&gt;May i know what message ur getting while executing the report..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Abdul Hakim&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 07:18:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211158#M133506</guid>
      <dc:creator>abdul_hakim</dc:creator>
      <dc:date>2006-04-05T07:18:53Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211159#M133507</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Abdul,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am getting these errors in 4.7 versio.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Error 1: &lt;/P&gt;&lt;P&gt;"MTAB_PROGRAM_FILE" and "MTAB_PROGRAM_TEXTS" are not mutually convertible. In Unicode systems, "MTAB_PROGRAM_FILE " must have the same structure layout (fragment view) as"MTAB_PROGRAM_TEXTS", regardless of the length of the Unicode character.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;error 2:&lt;/P&gt;&lt;P&gt;"FTAB_PROGRAM_TEXTS" and "FTAB_PROGRAM_FILE" are not mutually convertible. In Unicode systems, "FTAB_PROGRAM_TEXTS " must have the same structure layout (fragment view) as"FTAB_PROGRAM_FILE", regardless of the length of the Unicode character.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 09:12:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211159#M133507</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T09:12:59Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211160#M133508</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI Vijay,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the following program works on 47..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;[code]&lt;/P&gt;&lt;P&gt;REPORT ZDOWN.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$&lt;/STRONG&gt;$================================================================&lt;STRONG&gt;$&lt;/STRONG&gt;$&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Direct download ver 4.12.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; THIS SOFTWARE IS FOR PERSONAL USE ONLY.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; THIS PROGRAM IS FREEWARE AND IS PROVIDED ON AN AS-IS BASIS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   WITHOUT WARRANTY OF ANY KIND.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   THE PROVIDER SPECIFICALLY DISCLAIMS ANY OTHER WARRANTY,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   IN NO EVENT SHALL PROVIDER BE LIABLE FOR ANY CONSEQUENTIAL,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   INDIRECT, SPECIAL OR INCIDENTAL DAMAGES, EVEN IF PROVIDER&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   HAS BEEN ADVISED BY CLIENT OF THE POSSIBILITY OF SUCH&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   POTENTIAL LOSS OR DAMAGE. CLIENT AGREES TO HOLD PROVIDER&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   HARMLESS FROM AND AGAINST ANY AND ALL CLAIMS, LOSSES,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   LIABILITIES AND EXPENSES.  BY INSTALLING OR RUNNING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   THIS PROGRAM YOU ARE AGREEING TO THE TERMS AND CONDITONS STATED&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ABOVE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$&lt;/STRONG&gt;$----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;$&lt;/STRONG&gt;$&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PROGRAM DESCRIPTION&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Allows a user to download ABAPs, Functions DD definitions, etc to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; the presentation server.  This version searches recursively for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; nested includes and function modules, and allows you to download&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; the resulting code as standard text or HTML web pages.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Compatible with R/3 versions 3 and 4.&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;STRONG&gt;$&lt;/STRONG&gt;$&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;AUTHORS         : E.Mellodew &amp;amp; John Davies-Hale&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;PROGRAM HISTORY&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;---------------&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;1.0   Original program created&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2.0   Modified selection texts so they are now stored within&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        the actual abap program.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Added functionality to download text elements and selection&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        texts for any downloaded online programs.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Added functionality to download message classes.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Added functionality to download screens.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;2.1   Fixed program names being truncated when downloading&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        programs on version 4 systems.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;3.0   New version - allows you to download files in HTML format as&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        well as text format.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;3.1   Added the ability to download nested include programs.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;3.2   Added the ability to download custom dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         referenced within programs.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Added the option to include/exclude local private objects.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Fixed problem with HTML documents not displaying correctly&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         within Netscape Communicator.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;3.21   Added domain name texts to HTML dictionary structure download.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Fixed issue whereby field symbols displayed incorrectly within&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         HTML documents.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;4.00   Re-structured program.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Increased scope of options on parameter screen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Created user friendly screen showing downloads&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Allows user to download function modules&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Program is now fully recursive and allows downloading of&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         includes within includes/functions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         and functions within functions/includes.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;4.02   Added ability to download module pools&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Added 'key' flag to dictionary downloads&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;4.03   Screen 1000's can now be downloaded if they belong to a&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         module pool and are not a parameter screen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;4.10   Added ability to download function module documentation&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;4.11   Problem with some documentation not being downloaded fixed&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;Limitations&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; SAP does not have the provision to create sub-folders at present.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Messages are not downloaded for nested includes&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;&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; TABLES - DATABASES&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;TABLES: RS38M, TADIR, TRDIR, DD01T, "REPOSRC,&lt;/P&gt;&lt;P&gt;TRDIRE, T100, TLIBV,&lt;/P&gt;&lt;P&gt;        DD02L, DD03L, DD04T, V_FDIR, TFDIR, TFTIT, D010INC, DD02T.&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; TYPES&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;*----- Text element structure&lt;/P&gt;&lt;P&gt;TYPES: T_TEXTTAB LIKE TEXTPOOL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Message classes&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF T_MESSAGES,&lt;/P&gt;&lt;P&gt;         MSGID LIKE TRDIRE-MSGID,&lt;/P&gt;&lt;P&gt;         MSGNR LIKE T100-MSGNR,&lt;/P&gt;&lt;P&gt;         TEXT  LIKE T100-TEXT,&lt;/P&gt;&lt;P&gt;       END OF T_MESSAGES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- screen flow.&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF T_SCREEN_FLOW,&lt;/P&gt;&lt;P&gt;         SCREEN LIKE D020S-DNUM,&lt;/P&gt;&lt;P&gt;         CODE LIKE D022S-LINE,&lt;/P&gt;&lt;P&gt;       END OF T_SCREEN_FLOW.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Data dictionary objects - tables, structures.&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF T_DICT_STRUCT,&lt;/P&gt;&lt;P&gt;         TABNAME   LIKE DD03L-TABNAME,&lt;/P&gt;&lt;P&gt;         TABTEXT    LIKE DD02T-DDTEXT,&lt;/P&gt;&lt;P&gt;         FIELDNAME LIKE DD03L-FIELDNAME,&lt;/P&gt;&lt;P&gt;         POSITION  LIKE DD03L-POSITION,&lt;/P&gt;&lt;P&gt;         KEYFLAG   LIKE DD03L-KEYFLAG,&lt;/P&gt;&lt;P&gt;         ROLLNAME  LIKE DD03L-ROLLNAME,&lt;/P&gt;&lt;P&gt;         DOMNAME   LIKE DD03L-DOMNAME,&lt;/P&gt;&lt;P&gt;         DATATYPE  LIKE DD03L-DATATYPE,&lt;/P&gt;&lt;P&gt;         LENG      LIKE DD03L-LENG,&lt;/P&gt;&lt;P&gt;         DDTEXT    LIKE DD04T-DDTEXT,&lt;/P&gt;&lt;P&gt;       END OF T_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Function Modules&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF T_FUNCTIONS,&lt;/P&gt;&lt;P&gt;         FUNCNAME LIKE TFDIR-FUNCNAME,&lt;/P&gt;&lt;P&gt;         INCLUDE  LIKE TFDIR-INCLUDE,&lt;/P&gt;&lt;P&gt;         PNAME    LIKE TFDIR-PNAME,&lt;/P&gt;&lt;P&gt;         STEXT    LIKE TFTIT-STEXT,&lt;/P&gt;&lt;P&gt;       END OF T_FUNCTIONS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Include program names&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF T_INCLUDES,&lt;/P&gt;&lt;P&gt;         PROG LIKE TRDIR-NAME,&lt;/P&gt;&lt;P&gt;         TEXT(255),&lt;/P&gt;&lt;P&gt;       END OF T_INCLUDES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----- ABAP program list&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF T_PROGRAMMES,&lt;/P&gt;&lt;P&gt;         DEVCLASS        LIKE TADIR-DEVCLASS,&lt;/P&gt;&lt;P&gt;         PROG            LIKE TRDIR-NAME,&lt;/P&gt;&lt;P&gt;         TEXT(255),&lt;/P&gt;&lt;P&gt;         SUBC(1)         TYPE C,&lt;/P&gt;&lt;P&gt;         FUNCTIONS       TYPE T_FUNCTIONS  OCCURS 0,&lt;/P&gt;&lt;P&gt;       END OF T_PROGRAMMES.&lt;/P&gt;&lt;P&gt;&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; DATA - INTERNAL 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;*---- Program texts - declaration only not used&lt;/P&gt;&lt;P&gt;DATA: I_TEXTTAB TYPE T_TEXTTAB OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_MESSAGES TYPE T_MESSAGES OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_SCREEN_FLOW TYPE T_SCREEN_FLOW.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----- Program content for text download&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF CONTENT OCCURS 0,&lt;/P&gt;&lt;P&gt;        LINE(255),&lt;/P&gt;&lt;P&gt;      END OF CONTENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Programme texts.&lt;/P&gt;&lt;P&gt;DATA: I_PROGRAMME_TEXTS TYPE T_TEXTTAB OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- dictionary object&lt;/P&gt;&lt;P&gt;DATA: I_DICTIONARY TYPE T_DICT_STRUCT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Allows HTML routines to create an HTML without the table name on&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     each line.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF I_DICT_MINUS_TABNAME OCCURS 0,&lt;/P&gt;&lt;P&gt;         fieldname like dd03l-fieldname,&lt;/P&gt;&lt;P&gt;         position  like dd03l-position,&lt;/P&gt;&lt;P&gt;         KEYFLAG   LIKE DD03L-KEYFLAG,&lt;/P&gt;&lt;P&gt;         rollname  like dd03l-rollname,&lt;/P&gt;&lt;P&gt;         domname   like dd03l-domname,&lt;/P&gt;&lt;P&gt;         datatype  like dd03l-datatype,&lt;/P&gt;&lt;P&gt;         leng      like dd03l-leng,&lt;/P&gt;&lt;P&gt;         ddtext    like dd04t-ddtext,&lt;/P&gt;&lt;P&gt;      END OF I_DICT_MINUS_TABNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Table names of customer tables, used for searching for tables&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF TABLE_NAMES OCCURS 0,&lt;/P&gt;&lt;P&gt;        TABNAME LIKE I_DICTIONARY-TABNAME,&lt;/P&gt;&lt;P&gt;        TABTEXT  LIKE DD02T-DDTEXT,&lt;/P&gt;&lt;P&gt;      END OF TABLE_NAMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Function Modules.&lt;/P&gt;&lt;P&gt;DATA: I_FUNCTIONS TYPE T_FUNCTIONS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_FUNCTIONS_2 TYPE T_FUNCTIONS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Customer function names, used for searching for functions&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF FUNCTION_NAMES OCCURS 0,&lt;/P&gt;&lt;P&gt;       FUNCNAME LIKE I_FUNCTIONS-FUNCNAME,&lt;/P&gt;&lt;P&gt;      END OF FUNCTION_NAMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_PROGRAMMES OCCURS 0,&lt;/P&gt;&lt;P&gt;        DEVCLASS        LIKE TADIR-DEVCLASS,&lt;/P&gt;&lt;P&gt;        PROG            LIKE TRDIR-NAME,&lt;/P&gt;&lt;P&gt;        TEXT(255),&lt;/P&gt;&lt;P&gt;        SUBC(1)         TYPE C,&lt;/P&gt;&lt;P&gt;        MESSAGES        TYPE T_MESSAGES OCCURS 0,&lt;/P&gt;&lt;P&gt;        TEXT_ELEMENTS   TYPE T_TEXTTAB OCCURS 0,&lt;/P&gt;&lt;P&gt;        SELECTION_TEXTS TYPE T_TEXTTAB OCCURS 0,&lt;/P&gt;&lt;P&gt;        SCREEN_FLOW     TYPE T_SCREEN_FLOW OCCURS 0,&lt;/P&gt;&lt;P&gt;        INCLUDES        TYPE T_INCLUDES OCCURS 0,&lt;/P&gt;&lt;P&gt;        FUNCTIONS       TYPE T_FUNCTIONS OCCURS 0,&lt;/P&gt;&lt;P&gt;        DICT_STRUCT     TYPE T_DICT_STRUCT OCCURS 0,&lt;/P&gt;&lt;P&gt;      END OF I_PROGRAMMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Names of function modules used within programmes&lt;/P&gt;&lt;P&gt;data: i_prog_includes type t_includes occurs 0 with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Includes to download&lt;/P&gt;&lt;P&gt;DATA: I_INCLUDES LIKE I_PROGRAMMES OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Tree display structure.&lt;/P&gt;&lt;P&gt;DATA: I_NODE LIKE SNODETEXT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Temp table of downloaded objects.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_DOWNLOADED OCCURS 0,&lt;/P&gt;&lt;P&gt;        OBJECT(30),&lt;/P&gt;&lt;P&gt;      END OF I_DOWNLOADED.&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; DATA - WORKING FIELDS&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;DATA: FOOTER_MESSAGE LIKE CONTENT-LINE.&lt;/P&gt;&lt;P&gt;DATA: MESS(100).&lt;/P&gt;&lt;P&gt;DATA: TEMP_FUNC_NAME LIKE I_FUNCTIONS-FUNCNAME.&lt;/P&gt;&lt;P&gt;DATA: FORCED_EXIT TYPE I VALUE 0.&lt;/P&gt;&lt;P&gt;DATA: START_TIME LIKE SY-UZEIT.&lt;/P&gt;&lt;P&gt;DATA: RUN_TIME LIKE SY-UZEIT.&lt;/P&gt;&lt;P&gt;DATA: RUN_TIME_CHAR(8).&lt;/P&gt;&lt;P&gt;RANGES: S_PROG   FOR TRDIR-NAME.&lt;/P&gt;&lt;P&gt;RANGES: S_DEV    FOR TADIR-DEVCLASS.&lt;/P&gt;&lt;P&gt;RANGES: S_AUTH   FOR USR02-BNAME.&lt;/P&gt;&lt;P&gt;RANGES: S_TABLE  FOR DD02L-TABNAME.&lt;/P&gt;&lt;P&gt;RANGES: S_FNAME  FOR TFDIR-FUNCNAME.&lt;/P&gt;&lt;P&gt;RANGES: S_FGROUP FOR ENLFDIR-AREA.&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; CONSTANTS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;CONSTANTS: C_TABLES(6) VALUE 'TABLES'.&lt;/P&gt;&lt;P&gt;CONSTANTS: C_LIKE(4) VALUE 'LIKE'.&lt;/P&gt;&lt;P&gt;CONSTANTS: C_TYPE(4) VALUE 'TYPE'.&lt;/P&gt;&lt;P&gt;CONSTANTS: C_STRUCTURE(9) VALUE 'STRUCTURE'.&lt;/P&gt;&lt;P&gt;CONSTANTS: C_COMMA(1) VALUE ','.&lt;/P&gt;&lt;P&gt;CONSTANTS: C_PERIOD(1) VALUE '.'.&lt;/P&gt;&lt;P&gt;CONSTANTS: C_VERSION_NO(4) VALUE '4.12'.&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; SELECTION SCREEN&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;*--- Author&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE T_B1.&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 5(23) T_AUTH.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_AUTH LIKE USR02-BNAME.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; selection-screen begin of line.&lt;/P&gt;&lt;P&gt;   SELECTION-SCREEN COMMENT 5(36) T_PMOD.&lt;/P&gt;&lt;P&gt;   parameters: p_mod as checkbox.&lt;/P&gt;&lt;P&gt; selection-screen end of line.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF BLOCK B1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE T_B2.&lt;/P&gt;&lt;P&gt;*--- Tables&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    PARAMETERS: R_TABLE RADIOBUTTON GROUP R1.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 5(20) T_RTABLE.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 10(18) T_PTABLE.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_TABLE LIKE DD02L-TABNAME.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 10(69) T_TNOTE.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; selection-screen begin of line.&lt;/P&gt;&lt;P&gt;   SELECTION-SCREEN COMMENT 14(61) T_TNOTE1.&lt;/P&gt;&lt;P&gt; selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Function Modules&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    PARAMETERS: R_FUNC RADIOBUTTON GROUP R1.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 5(30) T_RFUNC.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 10(18) T_PFNAME.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_FNAME LIKE TFDIR-FUNCNAME.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 10(18) T_FGROUP.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_FGROUP LIKE ENLFDIR-AREA.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Programs / Includes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    PARAMETERS: R_PROG RADIOBUTTON GROUP R1.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 5(18) T_RPROG.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 10(18) T_RPNAME.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_PROG LIKE TRDIR-NAME MEMORY ID RID.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 10(18) T_SDEV.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   PARAMETERS: P_DEV LIKE TADIR-DEVCLASS.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Local objects&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN SKIP.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 1(27) T_$TMP.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_$TMP AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF BLOCK B2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-----  Additional things to download.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE T_B3.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 1(30) T_PTEXT.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_TEXT AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 1(30) T_PMES.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_MES AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 1(30) T_PINC.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_INC AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 40(20) T_RECU.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_RECI AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 1(30) T_PFUNC.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_FUNC AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 40(20) T_RECF.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_RECF AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 1(30) T_DOC.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_DOC AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 1(30) T_PSCR.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_SCR AS CHECKBOX.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN COMMENT 1(30) T_PDICT.&lt;/P&gt;&lt;P&gt;  PARAMETERS: P_DICT AS CHECKBOX DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;  SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF BLOCK B3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-----  File details&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: BEGIN OF BLOCK B4 WITH FRAME TITLE T_B4.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 1(20) T_PHTML.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_HTML RADIOBUTTON GROUP G1 DEFAULT 'X'.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 30(20) T_PHEXT.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_HEX(4) TYPE C DEFAULT 'Html' LOWER CASE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 1(20) T_PTXT.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_TXT RADIOBUTTON GROUP G1.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 30(20) T_PEXT.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_TEX(4) TYPE C DEFAULT 'Txt' LOWER CASE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN SKIP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN COMMENT 1(20) T_PPATH.&lt;/P&gt;&lt;P&gt;    PARAMETERS: P_PATH LIKE RLGRAP-FILENAME&lt;/P&gt;&lt;P&gt;                                           OBLIGATORY DEFAULT 'C:\temp'.&lt;/P&gt;&lt;P&gt;    SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN: END OF BLOCK B4.&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;*--- parameter screen texts.&lt;/P&gt;&lt;P&gt; T_B1     = 'Author (Optional)'.&lt;/P&gt;&lt;P&gt; T_B2     = 'Objects to download'.&lt;/P&gt;&lt;P&gt; T_B3     = 'Additional downloads'.&lt;/P&gt;&lt;P&gt; T_B4     = 'Download parameters'.&lt;/P&gt;&lt;P&gt; T_AUTH   = 'Author name'.&lt;/P&gt;&lt;P&gt; T_PMOD   = 'Include programs modified by author'.&lt;/P&gt;&lt;P&gt; T_RTABLE = 'Tables'.&lt;/P&gt;&lt;P&gt; T_PTABLE = 'Table name'.&lt;/P&gt;&lt;P&gt; T_TNOTE  = 'Please note: tables are stored under the username of'.&lt;/P&gt;&lt;P&gt; T_TNOTE1 = '             the last person who modified them.'.&lt;/P&gt;&lt;P&gt; T_RFUNC  = 'Function modules'.&lt;/P&gt;&lt;P&gt; T_PFNAME = 'Function name'.&lt;/P&gt;&lt;P&gt; T_FGROUP = 'Function group'.&lt;/P&gt;&lt;P&gt; T_RPROG  = 'Programs'.&lt;/P&gt;&lt;P&gt; T_RPNAME = 'Program name'.&lt;/P&gt;&lt;P&gt; T_SDEV   = 'Development class'.&lt;/P&gt;&lt;P&gt; T_PTXT   = 'Text document'.&lt;/P&gt;&lt;P&gt; T_PHTML  = 'HTML document'.&lt;/P&gt;&lt;P&gt; T_PTEXT  = 'Text elements'.&lt;/P&gt;&lt;P&gt; T_PINC   = 'Include programs'.&lt;/P&gt;&lt;P&gt; T_RECU   = 'Recursive search'.&lt;/P&gt;&lt;P&gt; T_PHEXT  = 'File extension'.&lt;/P&gt;&lt;P&gt; T_PEXT   = 'File extension'.&lt;/P&gt;&lt;P&gt; T_PPATH  = 'File path'.&lt;/P&gt;&lt;P&gt; T_PMES   = 'Message classes'.&lt;/P&gt;&lt;P&gt; T_PFUNC  = 'Function modules'.&lt;/P&gt;&lt;P&gt; T_DOC    = 'Function module documentation'.&lt;/P&gt;&lt;P&gt; T_RECF   = 'Recursive search'.&lt;/P&gt;&lt;P&gt; T_PSCR   = 'Screens'.&lt;/P&gt;&lt;P&gt; T_PDICT  = 'Dictionary structures'.&lt;/P&gt;&lt;P&gt; T_$TMP   = 'Include local objects'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; CONCATENATE 'Extracted by Direct download v' C_VERSION_NO&lt;/P&gt;&lt;P&gt;                         ' 1998-2000.' INTO FOOTER_MESSAGE.&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; START-OF-SELECTION.&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;/P&gt;&lt;P&gt;  PERFORM CHECK_COMBO_BOXES.&lt;/P&gt;&lt;P&gt;  PERFORM FILL_RANGES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  START_TIME = SY-UZEIT.&lt;/P&gt;&lt;P&gt;  TRANSLATE P_HEX TO LOWER CASE.&lt;/P&gt;&lt;P&gt;  TRANSLATE P_TEX TO LOWER CASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Main program flow.&lt;/P&gt;&lt;P&gt;  CASE 'X'.&lt;/P&gt;&lt;P&gt;*--- Select tables&lt;/P&gt;&lt;P&gt;    WHEN R_TABLE.&lt;/P&gt;&lt;P&gt;      PERFORM RETRIEVE_TABLES TABLES I_DICTIONARY&lt;/P&gt;&lt;P&gt;                                     TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                     S_TABLE.&lt;/P&gt;&lt;P&gt;    WHEN R_FUNC.&lt;/P&gt;&lt;P&gt;*--- Select function modules&lt;/P&gt;&lt;P&gt;      PERFORM RETRIEVE_FUNCTIONS TABLES S_FNAME&lt;/P&gt;&lt;P&gt;                                        S_FGROUP&lt;/P&gt;&lt;P&gt;                                        I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                                        I_FUNCTIONS&lt;/P&gt;&lt;P&gt;                                 USING 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT I_FUNCTIONS.&lt;/P&gt;&lt;P&gt;         PERFORM FUNC_INCLUDE_NAME USING I_FUNCTIONS-PNAME&lt;/P&gt;&lt;P&gt;                                         I_FUNCTIONS-INCLUDE&lt;/P&gt;&lt;P&gt;                                         TEMP_FUNC_NAME&lt;/P&gt;&lt;P&gt;                                         0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         PERFORM FIND_INCLUDE_PROGRAMS USING TEMP_FUNC_NAME.&lt;/P&gt;&lt;P&gt;         PERFORM FIND_CUSTOM_FUNCTIONS TABLES I_FUNCTIONS&lt;/P&gt;&lt;P&gt;                                       USING TEMP_FUNC_NAME.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SORT I_PROG_INCLUDES ASCENDING BY PROG.&lt;/P&gt;&lt;P&gt;      DELETE ADJACENT DUPLICATES FROM I_PROG_INCLUDES COMPARING PROG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform retrieve_functions tables s_fname&lt;/P&gt;&lt;P&gt;                                        s_fgroup&lt;/P&gt;&lt;P&gt;                                        I_FUNCTIONS&lt;/P&gt;&lt;P&gt;                                        I_FUNCTIONS_2&lt;/P&gt;&lt;P&gt;                                 USING 0.&lt;/P&gt;&lt;P&gt;      I_FUNCTIONS[] = I_FUNCTIONS_2[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Select programs&lt;/P&gt;&lt;P&gt;    WHEN R_PROG.&lt;/P&gt;&lt;P&gt;      MESS = 'Processing please wait...'.&lt;/P&gt;&lt;P&gt;      PERFORM DISPLAY_STATUS USING MESS 0.&lt;/P&gt;&lt;P&gt;      PERFORM RETRIEVE_PROGRAMS TABLES I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                                       S_PROG&lt;/P&gt;&lt;P&gt;                                       S_DEV&lt;/P&gt;&lt;P&gt;                                       S_AUTH.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;END-OF-SELECTION&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF FORCED_EXIT = 0.&lt;/P&gt;&lt;P&gt;    CASE 'X'.&lt;/P&gt;&lt;P&gt;      WHEN R_TABLE.&lt;/P&gt;&lt;P&gt;        IF NOT ( I_DICTIONARY[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;          PERFORM DOWNLOAD_DD_STRUCTURES TABLES I_DICTIONARY&lt;/P&gt;&lt;P&gt;                                         USING P_PATH.&lt;/P&gt;&lt;P&gt;          PERFORM FILL_TREE_NODE_TABLES TABLES I_DICTIONARY.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WHEN R_FUNC.&lt;/P&gt;&lt;P&gt;        IF NOT ( I_FUNCTIONS[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;          PERFORM DOWNLOAD_FUNCTIONS TABLES I_FUNCTIONS&lt;/P&gt;&lt;P&gt;                                     USING P_PATH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM FILL_TREE_NODE_FUNCTIONS TABLES I_FUNCTIONS.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      WHEN R_PROG.&lt;/P&gt;&lt;P&gt;        IF NOT ( I_PROGRAMMES[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;          PERFORM DOWNLOAD_PROGRAMS TABLES I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                                    USING P_PATH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM FILL_TREE_NODE_PROGRAMS TABLES I_PROGRAMMES.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT ( I_NODE[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;      PERFORM DISPLAY_TREE TABLES I_NODE.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MESS = 'No items found matching selection criteria'.&lt;/P&gt;&lt;P&gt;      PERFORM DISPLAY_STATUS USING MESS 2.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;*--- Name parameters&lt;/P&gt;&lt;P&gt;  SET PARAMETER ID 'RID' FIELD P_PROG.&lt;/P&gt;&lt;P&gt;  SET PARAMETER ID 'DOB' FIELD P_TABLE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; SET PARAMETER ID 'DVC' FIELD P_DEV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET PARAMETER ID 'LIB' FIELD P_FNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;****************************&lt;STRONG&gt;SUBROUTINES&lt;/STRONG&gt;*******************************&lt;/P&gt;&lt;P&gt;************************************************************************&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; CHECK_COMBO_BOXES...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM CHECK_COMBO_BOXES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_AUTH IS INITIAL.&lt;/P&gt;&lt;P&gt;      CASE 'X'.&lt;/P&gt;&lt;P&gt;        WHEN R_TABLE.&lt;/P&gt;&lt;P&gt;          IF P_TABLE IS INITIAL.&lt;/P&gt;&lt;P&gt;            MESS = 'You must enter a table name or author'.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        WHEN R_FUNC.&lt;/P&gt;&lt;P&gt;          IF ( P_FNAME IS INITIAL AND P_FGROUP IS INITIAL ).&lt;/P&gt;&lt;P&gt;            CONCATENATE 'You must enter a function name,'&lt;/P&gt;&lt;P&gt;                        'function group or author'&lt;/P&gt;&lt;P&gt;                        INTO MESS SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;        WHEN R_PROG.&lt;/P&gt;&lt;P&gt;          IF P_PROG IS INITIAL.&lt;/P&gt;&lt;P&gt;            CONCATENATE 'You must enter a program name'&lt;/P&gt;&lt;P&gt;                        'development class or author'&lt;/P&gt;&lt;P&gt;                        INTO MESS SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      IF R_FUNC = 'X'.&lt;/P&gt;&lt;P&gt;        IF ( ( P_AUTH &amp;lt;&amp;gt; '' ) AND&lt;/P&gt;&lt;P&gt;           ( ( P_FNAME &amp;lt;&amp;gt; '' ) OR ( P_FGROUP &amp;lt;&amp;gt; '' ) ) ).&lt;/P&gt;&lt;P&gt;              CONCATENATE 'You cannnot enter an author as well as'&lt;/P&gt;&lt;P&gt;                          'a func name or func group'&lt;/P&gt;&lt;P&gt;                          INTO MESS SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT MESS IS INITIAL.&lt;/P&gt;&lt;P&gt;      PERFORM DISPLAY_STATUS USING MESS 3.&lt;/P&gt;&lt;P&gt;      FORCED_EXIT = 1.&lt;/P&gt;&lt;P&gt;      STOP.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CHECK_COMBO_BOXES&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;FILL_RANGES...      for selection routines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FILL_RANGES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not p_auth is initial.&lt;/P&gt;&lt;P&gt;    s_auth-sign = 'I'.&lt;/P&gt;&lt;P&gt;    s_auth-option = 'EQ'.&lt;/P&gt;&lt;P&gt;    s_auth-low = p_auth.&lt;/P&gt;&lt;P&gt;    append s_auth.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT P_TABLE IS INITIAL.&lt;/P&gt;&lt;P&gt;    S_TABLE-SIGN = 'I'.&lt;/P&gt;&lt;P&gt;    S_TABLE-OPTION = 'EQ'.&lt;/P&gt;&lt;P&gt;    S_TABLE-LOW = P_TABLE.&lt;/P&gt;&lt;P&gt;    APPEND S_TABLE.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT P_FNAME IS INITIAL.&lt;/P&gt;&lt;P&gt;    S_FNAME-SIGN = 'I'.&lt;/P&gt;&lt;P&gt;    S_FNAME-OPTION = 'EQ'.&lt;/P&gt;&lt;P&gt;    S_FNAME-LOW = P_FNAME.&lt;/P&gt;&lt;P&gt;    APPEND S_FNAME.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT P_FGROUP IS INITIAL.&lt;/P&gt;&lt;P&gt;    S_FGROUP-SIGN = 'I'.&lt;/P&gt;&lt;P&gt;    S_FGROUP-OPTION = 'EQ'.&lt;/P&gt;&lt;P&gt;    S_FGROUP-LOW = P_FGROUP.&lt;/P&gt;&lt;P&gt;    APPEND S_FGROUP.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT P_PROG IS INITIAL.&lt;/P&gt;&lt;P&gt;    S_PROG-SIGN = 'I'.&lt;/P&gt;&lt;P&gt;    S_PROG-OPTION = 'EQ'.&lt;/P&gt;&lt;P&gt;    S_PROG-LOW = P_PROG.&lt;/P&gt;&lt;P&gt;    APPEND S_PROG.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF NOT P_DEV IS INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   S_DEV-SIGN = 'I'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   S_DEV-OPTION = 'EQ'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   S_DEV-LOW = P_DEV.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   APPEND S_DEV.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF P_$TMP IS INITIAL.&lt;/P&gt;&lt;P&gt;    S_DEV-SIGN = 'E'.&lt;/P&gt;&lt;P&gt;    S_DEV-OPTION = 'EQ'.&lt;/P&gt;&lt;P&gt;    S_DEV-LOW = '$TMP'.&lt;/P&gt;&lt;P&gt;    APPEND S_DEV.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; FIND_TABLES...             Search for tables in dictionary&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM RETRIEVE_TABLES TABLES I_DICTIONARY STRUCTURE I_DICTIONARY&lt;/P&gt;&lt;P&gt;                            TABLE_NAMES STRUCTURE TABLE_NAMES&lt;/P&gt;&lt;P&gt;                            RANGE_TABLE STRUCTURE S_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT TABNAME FROM DD02L&lt;/P&gt;&lt;P&gt;                 INTO TABLE_NAMES-TABNAME&lt;/P&gt;&lt;P&gt;                 WHERE TABNAME IN RANGE_TABLE&lt;/P&gt;&lt;P&gt;                 AND AS4USER IN S_AUTH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE DDTEXT FROM DD02T&lt;/P&gt;&lt;P&gt;                         INTO TABLE_NAMES-TABTEXT&lt;/P&gt;&lt;P&gt;                         WHERE TABNAME = TABLE_NAMES-TABNAME&lt;/P&gt;&lt;P&gt;                         AND DDLANGUAGE = SY-LANGU.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND TABLE_NAMES.&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT ( TABLE_NAMES[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;    PERFORM FIND_TABLE_DEFINITION TABLES I_DICTIONARY&lt;/P&gt;&lt;P&gt;                                         TABLE_NAMES.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; find_table_definition... from sap database.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_TABLE_DEFINITION TABLES I_DICT STRUCTURE I_DICTIONARY&lt;/P&gt;&lt;P&gt;                                  TABLENAMES STRUCTURE TABLE_NAMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA gotstate LIKE  dcobjif-gotstate.&lt;/P&gt;&lt;P&gt;DATA dd02v_wa LIKE dd02v.&lt;/P&gt;&lt;P&gt;DATA dd09l_wa LIKE dd09l.&lt;/P&gt;&lt;P&gt;DATA: DEFINITION LIKE DD03P OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT TABLENAMES.&lt;/P&gt;&lt;P&gt;   CALL FUNCTION 'DDIF_TABL_GET'&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;          NAME          = TABLENAMES-TABNAME&lt;/P&gt;&lt;P&gt;          STATE         = 'A'&lt;/P&gt;&lt;P&gt;          LANGU         = 'E'&lt;/P&gt;&lt;P&gt;     IMPORTING&lt;/P&gt;&lt;P&gt;         GOTSTATE      = GOTSTATE&lt;/P&gt;&lt;P&gt;         DD02V_WA      = DD02V_WA&lt;/P&gt;&lt;P&gt;         DD09L_WA      = DD09L_WA&lt;/P&gt;&lt;P&gt;     TABLES&lt;/P&gt;&lt;P&gt;          DD03P_TAB     = DEFINITION&lt;/P&gt;&lt;P&gt;     EXCEPTIONS&lt;/P&gt;&lt;P&gt;          ILLEGAL_INPUT = 1&lt;/P&gt;&lt;P&gt;          OTHERS        = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0 AND GOTSTATE = 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT DEFINITION.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING DEFINITION TO I_DICT.&lt;/P&gt;&lt;P&gt;        MOVE TABLE_NAMES-TABTEXT TO I_DICT-TABTEXT.&lt;/P&gt;&lt;P&gt;        APPEND I_DICT.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&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;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; RETRIEVE_FUNCTIONS...   Retrieve function modules from SAP DB&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM RETRIEVE_FUNCTIONS TABLES S_FNAME STRUCTURE S_FNAME&lt;/P&gt;&lt;P&gt;                               S_FGROUP STRUCTURE S_FGROUP&lt;/P&gt;&lt;P&gt;                               FUNC_NAMES STRUCTURE I_FUNCTIONS&lt;/P&gt;&lt;P&gt;                               FOUND_FUNC STRUCTURE I_FUNCTIONS&lt;/P&gt;&lt;P&gt;                        USING MAIN_SCAN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RANGES: SEL_FNAME  FOR TFDIR-FUNCNAME.&lt;/P&gt;&lt;P&gt;RANGES: SEL_FGROUP FOR ENLFDIR-AREA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SEL_FNAME[] = S_FNAME[].&lt;/P&gt;&lt;P&gt;  SEL_FGROUP[] = S_FGROUP[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF  MAIN_SCAN = 1.&lt;/P&gt;&lt;P&gt;    IF NOT P_AUTH IS INITIAL.&lt;/P&gt;&lt;P&gt;*---  select all function groups by author&lt;/P&gt;&lt;P&gt;      SELECT AREA FROM TLIBV INTO SEL_FGROUP-LOW&lt;/P&gt;&lt;P&gt;                       WHERE UNAME = P_AUTH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SEL_FGROUP-SIGN = 'I'.&lt;/P&gt;&lt;P&gt;        SEL_FGROUP-OPTION = 'EQ'.&lt;/P&gt;&lt;P&gt;        APPEND SEL_FGROUP.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Select by function name and/or function group.&lt;/P&gt;&lt;P&gt;      SELECT * FROM V_FDIR&lt;/P&gt;&lt;P&gt;               WHERE FUNCNAME IN SEL_FNAME&lt;/P&gt;&lt;P&gt;                 AND AREA IN SEL_FGROUP&lt;/P&gt;&lt;P&gt;                 AND GENERATED = ''.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT SINGLE FUNCNAME&lt;/P&gt;&lt;P&gt;                      PNAME&lt;/P&gt;&lt;P&gt;                      INCLUDE  FROM TFDIR&lt;/P&gt;&lt;P&gt;                               INTO (FOUND_FUNC-FUNCNAME,&lt;/P&gt;&lt;P&gt;                                     FOUND_FUNC-PNAME,&lt;/P&gt;&lt;P&gt;                                     FOUND_FUNC-INCLUDE)&lt;/P&gt;&lt;P&gt;                               WHERE FUNCNAME = V_FDIR-FUNCNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT SINGLE STEXT FROM TFTIT&lt;/P&gt;&lt;P&gt;                            INTO FOUND_FUNC-STEXT&lt;/P&gt;&lt;P&gt;                            WHERE SPRAS = SY-LANGU&lt;/P&gt;&lt;P&gt;                              AND FUNCNAME = V_FDIR-FUNCNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND I_FUNCTIONS.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    LOOP AT FUNC_NAMES.&lt;/P&gt;&lt;P&gt;        SELECT SINGLE FUNCNAME&lt;/P&gt;&lt;P&gt;                      PNAME&lt;/P&gt;&lt;P&gt;                      INCLUDE  FROM TFDIR&lt;/P&gt;&lt;P&gt;                               INTO (FOUND_FUNC-FUNCNAME,&lt;/P&gt;&lt;P&gt;                                     FOUND_FUNC-PNAME,&lt;/P&gt;&lt;P&gt;                                     FOUND_FUNC-INCLUDE)&lt;/P&gt;&lt;P&gt;                               WHERE FUNCNAME = FUNC_NAMES-FUNCNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT SINGLE STEXT FROM TFTIT&lt;/P&gt;&lt;P&gt;                            INTO FOUND_FUNC-STEXT&lt;/P&gt;&lt;P&gt;                            WHERE SPRAS = SY-LANGU&lt;/P&gt;&lt;P&gt;                              AND FUNCNAME = FUNC_NAMES-FUNCNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND FOUND_FUNC.&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;/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;RETRIEVE_PROGRAMS...    find programs and sub objects from SAP DB&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM RETRIEVE_PROGRAMS TABLES I_PROG STRUCTURE I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                              SEL_PROG STRUCTURE S_PROG&lt;/P&gt;&lt;P&gt;                              SEL_DEV  STRUCTURE S_DEV&lt;/P&gt;&lt;P&gt;                              SEL_AUTH STRUCTURE S_AUTH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: COUNTER TYPE I VALUE 1.&lt;/P&gt;&lt;P&gt;DATA: WA_INCLUDES TYPE T_INCLUDES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----- Select by name, development class and author&lt;/P&gt;&lt;P&gt;  IF P_MOD IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT  PROGNAME SUBC FROM REPOSRC&lt;/P&gt;&lt;P&gt;                              INTO (I_PROG-PROG,&lt;/P&gt;&lt;P&gt;                                    I_PROG-SUBC)&lt;/P&gt;&lt;P&gt;                              WHERE PROGNAME IN SEL_PROG&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                              AND DEVCLASS IN SEL_DEV&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                                AND CNAM     IN SEL_AUTH.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                               AND ( SUBC     = '1'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                     OR SUBC  = 'M' ).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND I_PROG.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    SELECT PROGNAME SUBC FROM REPOSRC&lt;/P&gt;&lt;P&gt;                              INTO (I_PROG-PROG,&lt;/P&gt;&lt;P&gt;                                    I_PROG-SUBC)&lt;/P&gt;&lt;P&gt;                              WHERE PROGNAME IN SEL_PROG&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                              AND DEVCLASS IN SEL_DEV&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                               AND SUBC     = '1'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                                AND ( CNAM     IN SEL_AUTH&lt;/P&gt;&lt;P&gt;                                 OR   UNAM     IN SEL_AUTH ).&lt;/P&gt;&lt;P&gt;      APPEND I_PROG.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----- Find extra items&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG.&lt;/P&gt;&lt;P&gt;    PERFORM FIND_PROGRAM_NAME USING I_PROG-PROG&lt;/P&gt;&lt;P&gt;                              CHANGING I_PROG-TEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_TEXT = 'X'.&lt;/P&gt;&lt;P&gt;      PERFORM FIND_PROGRAM_TEXTS TABLES I_PROG.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_MES = 'X'.&lt;/P&gt;&lt;P&gt;      PERFORM FIND_MESSAGES TABLES I_PROG USING I_PROG-PROG.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_SCR = 'X'.&lt;/P&gt;&lt;P&gt;      PERFORM FIND_SCREEN_FLOW TABLES I_PROG USING I_PROG-PROG.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if p_dict = 'X'.&lt;/P&gt;&lt;P&gt;      perform find_custom_dict_structures tables i_prog&lt;/P&gt;&lt;P&gt;                                                 table_names&lt;/P&gt;&lt;P&gt;                                          using i_prog-prog.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if p_func = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM FIND_CUSTOM_FUNCTIONS TABLES FUNCTION_NAMES&lt;/P&gt;&lt;P&gt;                                    USING I_PROG-PROG.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_INC = 'X'.&lt;/P&gt;&lt;P&gt;       PERFORM FIND_INCLUDE_PROGRAMS USING I_PROG-PROG.&lt;/P&gt;&lt;P&gt;       PERFORM SORT_INCLUDES TABLES I_PROG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*---   find all relevant data for the includes table.&lt;/P&gt;&lt;P&gt;       IF NOT ( I_INCLUDES[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;         LOOP AT I_PROG-INCLUDES INTO WA_INCLUDES.&lt;/P&gt;&lt;P&gt;           IF P_DICT = 'X'.&lt;/P&gt;&lt;P&gt;              PERFORM FIND_CUSTOM_DICT_STRUCTURES TABLES I_PROG&lt;/P&gt;&lt;P&gt;                                                         TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                                 USING WA_INCLUDES-PROG.&lt;/P&gt;&lt;P&gt;           ENDIF.&lt;/P&gt;&lt;P&gt;           IF P_FUNC = 'X'.&lt;/P&gt;&lt;P&gt;              PERFORM FIND_CUSTOM_FUNCTIONS TABLES FUNCTION_NAMES&lt;/P&gt;&lt;P&gt;                                            USING WA_INCLUDES-PROG.&lt;/P&gt;&lt;P&gt;           ENDIF.&lt;/P&gt;&lt;P&gt;         ENDLOOP.&lt;/P&gt;&lt;P&gt;       ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM SORT_DICT_STRUCTURES TABLES I_PROG TABLE_NAMES.&lt;/P&gt;&lt;P&gt;    PERFORM SORT_FUNCTIONS TABLES I_PROG FUNCTION_NAMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MODIFY I_PROG INDEX COUNTER.&lt;/P&gt;&lt;P&gt;    COUNTER = COUNTER + 1.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; FIND_PROGRAM_NAME... find programme name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_PROGRAM_NAME USING PROGramme_name&lt;/P&gt;&lt;P&gt;                       CHANGING programme_TEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TEXTPOOL PROGRAMME_NAME INTO I_PROGRAMME_TEXTS LANGUAGE SY-LANGU.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE I_PROGRAMME_TEXTS WITH KEY 'R'.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;    PROGRAMME_TEXT = I_PROGRAMME_TEXTS-ENTRY.&lt;/P&gt;&lt;P&gt;    DELETE I_PROGRAMME_TEXTS INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " FIND_PROGRAMME_NAME&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;  FIND_PROGRAM_TEXTS...  Messages and text elements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_PROGRAM_TEXTS TABLES I_PROG STRUCTURE I_PROGRAMMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: TEMP_SELECTION TYPE T_TEXTTAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- selection texts.&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROGRAMME_TEXTS WHERE ID = 'S'.&lt;/P&gt;&lt;P&gt;    APPEND I_PROGRAMME_TEXTS TO I_PROG-SELECTION_TEXTS.&lt;/P&gt;&lt;P&gt;    DELETE I_PROGRAMME_TEXTS INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Text elements.&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROGRAMME_TEXTS WHERE ID = 'I'.&lt;/P&gt;&lt;P&gt;    APPEND I_PROGRAMME_TEXTS TO I_PROG-TEXT_ELEMENTS.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FIND_MESSAGES... finds all program messages including dynamically&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     called messages - providing they have been&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     declared on one complete line.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_MESSAGES TABLES I_PROG STRUCTURE I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                   USING PROGNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- lines for main program&lt;/P&gt;&lt;P&gt;DATA: I_REPORT_LINES LIKE CONTENT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Separate working area for internal table&lt;/P&gt;&lt;P&gt;DATA: WA_MESSAGES TYPE T_MESSAGES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: msgid LIKE trdire-msgid.&lt;/P&gt;&lt;P&gt;DATA: HEAD LIKE I_REPORT_LINES-LINE.&lt;/P&gt;&lt;P&gt;DATA: TAIL LIKE I_REPORT_LINES-LINE.&lt;/P&gt;&lt;P&gt;DATA: headlength TYPE i VALUE 0.&lt;/P&gt;&lt;P&gt;DATA: TAILLENGTH TYPE I VALUE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Read the program contents into memory&lt;/P&gt;&lt;P&gt;  READ REPORT PROGNAME INTO I_REPORT_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Read the report content looking for message calls.&lt;/P&gt;&lt;P&gt;  LOOP AT I_REPORT_LINES.&lt;/P&gt;&lt;P&gt;    TRANSLATE I_REPORT_LINES TO UPPER CASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT ( I_REPORT_LINES IS INITIAL ) AND I_REPORT_LINES(1) &amp;lt;&amp;gt; '*'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Find the main message definition.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF I_REPORT_LINES CS 'MESSAGE-ID'.&lt;/P&gt;&lt;P&gt;        SHIFT I_REPORT_LINES LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;        SPLIT I_REPORT_LINES AT 'MESSAGE-ID' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;        SPLIT TAIL AT '.' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;        SHIFT HEAD LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;        MSGID = HEAD.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    There are three different ways of calling a message to display&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    this routine looks for all three of them and strips the message&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    class and number out of the code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF I_REPORT_LINES CS 'MESSAGE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          SHIFT I_REPORT_LINES-LINE UP TO 'MESSAGE'.&lt;/P&gt;&lt;P&gt;          IF I_REPORT_LINES-LINE CS '('.&lt;/P&gt;&lt;P&gt;            SPLIT I_REPORT_LINES-LINE AT '(' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;            HEADLENGTH = STRLEN( HEAD ).&lt;/P&gt;&lt;P&gt;            HEADLENGTH = HEADLENGTH - 3.&lt;/P&gt;&lt;P&gt;            WA_MESSAGES-MSGNR = HEAD+HEADLENGTH(3).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            SPLIT TAIL AT ')' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;            WA_MESSAGES-MSGID = HEAD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          ELSEIF I_REPORT_LINES-LINE CS 'ID'.&lt;/P&gt;&lt;P&gt;            SHIFT I_REPORT_LINES UP TO 'ID'.&lt;/P&gt;&lt;P&gt;            SPLIT I_REPORT_LINES AT SPACE INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;            SHIFT TAIL LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;            HEAD = TAIL.&lt;/P&gt;&lt;P&gt;            SPLIT HEAD AT SPACE INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;            WA_MESSAGES-MSGID = HEAD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            SPLIT TAIL AT 'NUMBER' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;            SHIFT TAIL LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            TAILLENGTH = STRLEN( TAIL ).&lt;/P&gt;&lt;P&gt;            IF TAILLENGTH = 3.&lt;/P&gt;&lt;P&gt;              WA_MESSAGES-MSGNR = TAIL+0(3).&lt;/P&gt;&lt;P&gt;            ELSE.&lt;/P&gt;&lt;P&gt;              CONTINUE.&lt;/P&gt;&lt;P&gt;            ENDIF.&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;*---        use message class from main program&lt;/P&gt;&lt;P&gt;            SPLIT I_REPORT_LINES-LINE AT SPACE INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;            SHIFT TAIL LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;            WA_MESSAGES-MSGID = MSGID.&lt;/P&gt;&lt;P&gt;            WA_MESSAGES-MSGNR = TAIL+1(3).&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          APPEND WA_MESSAGES TO I_PROG-MESSAGES.&lt;/P&gt;&lt;P&gt;          CLEAR WA_MESSAGES.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Sort the messages and delete multiple occurrences from the&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   internal table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT I_PROG-MESSAGES ASCENDING BY MSGID MSGNR.&lt;/P&gt;&lt;P&gt;  DELETE I_PROG-MESSAGES WHERE MSGID(1) &amp;lt;&amp;gt; 'Y'&lt;/P&gt;&lt;P&gt;                           AND MSGID(1) &amp;lt;&amp;gt; 'Z'.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM I_PROG-MESSAGES.&lt;/P&gt;&lt;P&gt;  DELETE I_PROG-MESSAGES WHERE MSGID IS INITIAL.&lt;/P&gt;&lt;P&gt;  DELETE I_PROG-MESSAGES WHERE MSGNR IS INITIAL.&lt;/P&gt;&lt;P&gt;  DELETE I_PROG-MESSAGES WHERE MSGNR CN '0123456789'.&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG-MESSAGES INTO WA_MESSAGES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE TEXT FROM T100 INTO WA_MESSAGES-TEXT&lt;/P&gt;&lt;P&gt;                       WHERE SPRSL = SY-LANGU&lt;/P&gt;&lt;P&gt;                         AND ARBGB = WA_MESSAGES-MSGID&lt;/P&gt;&lt;P&gt;                         AND MSGNR = WA_MESSAGES-MSGNR.&lt;/P&gt;&lt;P&gt;     MODIFY I_PROG-MESSAGES FROM WA_MESSAGES INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; FIND_SCREEN_FLOW...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_SCREEN_FLOW TABLES I_PROG STRUCTURE I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                      USING PROGNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: FLOW TYPE T_SCREEN_FLOW OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   call function 'DYNPRO_PROCESSINGLOGIC'&lt;/P&gt;&lt;P&gt;        exporting&lt;/P&gt;&lt;P&gt;             REP_NAME  = PROGNAME&lt;/P&gt;&lt;P&gt;        tables&lt;/P&gt;&lt;P&gt;             SCR_LOGIC = FLOW.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT FLOW ASCENDING BY SCREEN.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM FLOW COMPARING SCREEN.&lt;/P&gt;&lt;P&gt;  IF I_PROG-SUBC &amp;lt;&amp;gt; 'M'.&lt;/P&gt;&lt;P&gt;    DELETE FLOW WHERE SCREEN = '1000'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT FLOW.&lt;/P&gt;&lt;P&gt;    APPEND FLOW TO I_PROG-SCREEN_FLOW.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " FIND_SCREEN_FLOW&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;FIND_INCLUDE_PROGRAMS... Search each program for INCLUDE programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_INCLUDE_PROGRAMS USING VALUE(PROGRAM).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: FIP_PROG(255),&lt;/P&gt;&lt;P&gt;      TAIL(255).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Lines for include&lt;/P&gt;&lt;P&gt;DATA: I_INC_LINES LIKE CONTENT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----- Read ABAP&lt;/P&gt;&lt;P&gt;    READ REPORT PROGRAM INTO I_INC_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----- Examine each line of ABAP&lt;/P&gt;&lt;P&gt;    LOOP AT I_INC_LINES.&lt;/P&gt;&lt;P&gt;*--- find include programs.&lt;/P&gt;&lt;P&gt;      IF I_INC_LINES(1) = '*' OR I_INC_LINES IS INITIAL.&lt;/P&gt;&lt;P&gt;        CONTINUE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TRANSLATE I_INC_LINES-LINE TO UPPER CASE.&lt;/P&gt;&lt;P&gt;      SHIFT I_INC_LINES-LINE UP TO 'INCLUDE'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF ( I_INC_LINES-LINE(9) EQ 'INCLUDE Z' ) OR&lt;/P&gt;&lt;P&gt;         ( I_INC_LINES-LINE(9) EQ 'INCLUDE Y' )&lt;/P&gt;&lt;P&gt;      AND I_INC_LINES-LINE+8(9) NE SPACE&lt;/P&gt;&lt;P&gt;      AND SY-TABIX &amp;lt;&amp;gt; 1.&lt;/P&gt;&lt;P&gt;        FIP_PROG = I_INC_LINES-LINE+8(64).&lt;/P&gt;&lt;P&gt;        SPLIT FIP_PROG AT '.' INTO FIP_PROG TAIL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Append program name to list of include programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE * FROM TRDIR WHERE NAME EQ FIP_PROG.&lt;/P&gt;&lt;P&gt;        CHECK SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;        I_PROG_INCLUDES-PROG = FIP_PROG.&lt;/P&gt;&lt;P&gt;        APPEND I_PROG_INCLUDES.&lt;/P&gt;&lt;P&gt;*--- Recursively look for other includes.&lt;/P&gt;&lt;P&gt;        IF P_RECI = 'X'.&lt;/P&gt;&lt;P&gt;          PERFORM FIND_INCLUDE_PROGRAMS USING FIP_PROG.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " FIND_INCLUDE_PROGRAMS&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; SORT_INCLUDES.. Remove any duplicates from include table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM SORT_INCLUDES TABLES I_PROG STRUCTURE I_PROGRAMMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT I_PROG_INCLUDES.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM I_PROG_INCLUDES COMPARING PROG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG_INCLUDES.&lt;/P&gt;&lt;P&gt;    PERFORM FIND_PROGRAM_NAME USING    I_PROG_INCLUDES-PROG&lt;/P&gt;&lt;P&gt;                              CHANGING I_PROG_INCLUDES-TEXT.&lt;/P&gt;&lt;P&gt;    MODIFY I_PROG_INCLUDES.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING I_PROG_INCLUDES TO I_INCLUDES.&lt;/P&gt;&lt;P&gt;    APPEND I_INCLUDES.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND LINES OF I_PROG_INCLUDES TO I_PROG-INCLUDES.&lt;/P&gt;&lt;P&gt;  CLEAR I_PROG_INCLUDES. REFRESH I_PROG_INCLUDES.&lt;/P&gt;&lt;P&gt;ENDFORM.&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;FIND_CUSTOM_DICT_STRUCTURES... Look for any dictionary objects&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                not created by SAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_CUSTOM_DICT_STRUCTURES TABLES I_PROG STRUCTURE I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                                        TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                        STRUCTURE TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                 USING VALUE(PROGRAM).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA I_LINES LIKE CONTENT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: HEAD(76).&lt;/P&gt;&lt;P&gt;DATA: TAIL(76).&lt;/P&gt;&lt;P&gt;DATA: LINETYPE(9).&lt;/P&gt;&lt;P&gt;DATA: END_OF_LINE TYPE I VALUE 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- read abap&lt;/P&gt;&lt;P&gt;   READ REPORT PROGRAM INTO I_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   LOOP AT I_LINES.&lt;/P&gt;&lt;P&gt;*--- find custom tables.&lt;/P&gt;&lt;P&gt;     IF I_LINES-LINE(1) = '*' OR I_LINES IS INITIAL.&lt;/P&gt;&lt;P&gt;       CONTINUE.&lt;/P&gt;&lt;P&gt;     ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     TRANSLATE I_LINES-LINE TO UPPER CASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Determine the linetype.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     IF END_OF_LINE = 1.&lt;/P&gt;&lt;P&gt;       SHIFT I_LINES-LINE UP TO C_TABLES.&lt;/P&gt;&lt;P&gt;       IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;         LINETYPE = C_TABLES.&lt;/P&gt;&lt;P&gt;       ELSE.&lt;/P&gt;&lt;P&gt;         SHIFT I_LINES-LINE UP TO C_LIKE.&lt;/P&gt;&lt;P&gt;         IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;           LINETYPE = C_TYPE.&lt;/P&gt;&lt;P&gt;         ELSE.&lt;/P&gt;&lt;P&gt;           SHIFT I_LINES-LINE UP TO C_TYPE.&lt;/P&gt;&lt;P&gt;           IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;             LINETYPE = C_TYPE.&lt;/P&gt;&lt;P&gt;           ELSE.&lt;/P&gt;&lt;P&gt;             SHIFT I_LINES-LINE UP TO C_STRUCTURE.&lt;/P&gt;&lt;P&gt;             IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;               LINETYPE = C_STRUCTURE.&lt;/P&gt;&lt;P&gt;             ELSE.&lt;/P&gt;&lt;P&gt;               CONTINUE.&lt;/P&gt;&lt;P&gt;             ENDIF.&lt;/P&gt;&lt;P&gt;           ENDIF.&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;       LINETYPE = C_COMMA.&lt;/P&gt;&lt;P&gt;     ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work on the appropriate linetype&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     CASE LINETYPE.&lt;/P&gt;&lt;P&gt;       WHEN C_TABLES.&lt;/P&gt;&lt;P&gt;         SHIFT I_LINES-LINE UP TO SPACE.&lt;/P&gt;&lt;P&gt;         PERFORM FIND_TABLES_ON_ONE_LINE TABLES TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                        USING I_LINES-LINE END_OF_LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       WHEN C_COMMA.&lt;/P&gt;&lt;P&gt;         PERFORM FIND_TABLES_ON_NEW_LINE TABLES TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                        USING I_LINES-LINE END_OF_LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       WHEN C_LIKE OR C_TYPE OR C_STRUCTURE.&lt;/P&gt;&lt;P&gt;         SHIFT I_LINES-LINE UP TO SPACE.&lt;/P&gt;&lt;P&gt;         SHIFT I_LINES-LINE LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;         IF I_LINES-LINE(1) = 'Y' OR I_LINES-LINE(1) = 'Z'.&lt;/P&gt;&lt;P&gt;           IF I_LINES-LINE CS C_COMMA.&lt;/P&gt;&lt;P&gt;             SPLIT I_LINES-LINE AT C_COMMA INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;             IF I_LINES-LINE CS '-'.&lt;/P&gt;&lt;P&gt;               SPLIT HEAD AT '-' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;             ENDIF.&lt;/P&gt;&lt;P&gt;             IF I_LINES-LINE CS 'OCCURS'.&lt;/P&gt;&lt;P&gt;               SPLIT I_LINES-LINE AT SPACE INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;             ENDIF.&lt;/P&gt;&lt;P&gt;           ELSE.&lt;/P&gt;&lt;P&gt;             IF I_LINES-LINE CS C_PERIOD.&lt;/P&gt;&lt;P&gt;               SPLIT I_LINES-LINE AT C_PERIOD INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;               IF I_LINES-LINE CS '-'.&lt;/P&gt;&lt;P&gt;                 SPLIT HEAD AT '-' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;               ENDIF.&lt;/P&gt;&lt;P&gt;               IF I_LINES-LINE CS 'OCCURS'.&lt;/P&gt;&lt;P&gt;                 SPLIT I_LINES-LINE AT SPACE INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;               ENDIF.&lt;/P&gt;&lt;P&gt;             ELSE.&lt;/P&gt;&lt;P&gt;               SPLIT I_LINES-LINE AT SPACE INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;             ENDIF.&lt;/P&gt;&lt;P&gt;           ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           TABLE_NAMES-TABNAME = HEAD.&lt;/P&gt;&lt;P&gt;           APPEND TABLE_NAMES.&lt;/P&gt;&lt;P&gt;         endif.&lt;/P&gt;&lt;P&gt;     ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; SORT_DICT_STRUCTURES... don't allow muliples in prog structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM SORT_DICT_STRUCTURES TABLES I_PROG STRUCTURE I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                                 TAB_NAMES STRUCTURE TABLE_NAMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: WA_DICT_STRUCT TYPE T_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT TAB_NAMES ASCENDING BY TABNAME.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM TAB_NAMES.&lt;/P&gt;&lt;P&gt;  IF NOT TAB_NAMES[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT TABLE_NAMES.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING TABLE_NAMES TO WA_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;      APPEND WA_DICT_STRUCT TO I_PROG-DICT_STRUCT.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;    CLEAR TAB_NAMES. REFRESH TAB_NAMES.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; FIND_TABLES_ON_NEW_LINE...  Find custom tables declared with a&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             tables statement but have extended onto&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             multiple lines.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_TABLES_ON_NEW_LINE TABLES CUST_TABLES STRUCTURE TABLE_nameS&lt;/P&gt;&lt;P&gt;                             USING LINE EOL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: TEMP_LINE(100).&lt;/P&gt;&lt;P&gt;DATA: HEAD(76).&lt;/P&gt;&lt;P&gt;DATA: TAIL(76).&lt;/P&gt;&lt;P&gt;DATA: STRLENGTH TYPE I VALUE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TEMP_LINE = LINE.&lt;/P&gt;&lt;P&gt;  SHIFT TEMP_LINE LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;  IF TEMP_LINE(1) = 'Y' OR TEMP_LINE(1) = 'Z'.&lt;/P&gt;&lt;P&gt;    IF TEMP_LINE CS C_COMMA.&lt;/P&gt;&lt;P&gt;      SPLIT TEMP_LINE AT ',' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;      TABLE_NAMES-TABNAME = HEAD.&lt;/P&gt;&lt;P&gt;      APPEND TABLE_NAMES.&lt;/P&gt;&lt;P&gt;      SHIFT TAIL LEFT BY 1 PLACES.&lt;/P&gt;&lt;P&gt;      PERFORM FIND_TABLES_ON_NEW_LINE TABLES TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                      USING TAIL EOL.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      SPLIT TEMP_LINE AT '.' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;      EOL = 1.&lt;/P&gt;&lt;P&gt;      TABLE_NAMES-TABNAME = HEAD.&lt;/P&gt;&lt;P&gt;      APPEND TABLE_NAMES.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    STRLENGTH = STRLEN( TEMP_LINE ).&lt;/P&gt;&lt;P&gt;    IF STRLENGTH &amp;gt; 0.&lt;/P&gt;&lt;P&gt;      IF TEMP_LINE CS C_COMMA.&lt;/P&gt;&lt;P&gt;        SHIFT TEMP_LINE UP TO SPACE.&lt;/P&gt;&lt;P&gt;        PERFORM FIND_TABLES_ON_NEW_LINE TABLES TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                        USING TEMP_LINE EOL.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        IF TEMP_LINE(1) = '"'.&lt;/P&gt;&lt;P&gt;          EOL = 0.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          EOL = 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;      EOL = 0.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; FIND_TABLES_ON_ONE_LINE...  Find custom tables declared with a table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             statement whereby the tables are declare&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             on one line&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_TABLES_ON_ONE_LINE TABLES CUST_TABLES STRUCTURE TABLE_nameS&lt;/P&gt;&lt;P&gt;                             USING LINE EOL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: TEMP_LINE(100).&lt;/P&gt;&lt;P&gt;DATA: HEAD(76).&lt;/P&gt;&lt;P&gt;DATA: TAIL(76).&lt;/P&gt;&lt;P&gt;DATA: STRLENGTH TYPE I VALUE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TEMP_LINE = LINE.&lt;/P&gt;&lt;P&gt;  SHIFT TEMP_LINE LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;  IF TEMP_LINE(1) = 'Y' OR TEMP_LINE(1) = 'Z'.&lt;/P&gt;&lt;P&gt;    IF TEMP_LINE CS C_COMMA.&lt;/P&gt;&lt;P&gt;      SPLIT TEMP_LINE AT ',' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;      TABLE_NAMES-TABNAME = HEAD.&lt;/P&gt;&lt;P&gt;      APPEND TABLE_NAMES.&lt;/P&gt;&lt;P&gt;      SHIFT TAIL LEFT BY 1 PLACES.&lt;/P&gt;&lt;P&gt;      PERFORM FIND_TABLES_ON_ONE_LINE TABLES TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                       USING TAIL EOL.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      SPLIT TEMP_LINE AT '.' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;      EOL = 1.&lt;/P&gt;&lt;P&gt;      TABLE_NAMES-TABNAME = HEAD.&lt;/P&gt;&lt;P&gt;      APPEND TABLE_NAMES.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    STRLENGTH = STRLEN( TEMP_LINE ).&lt;/P&gt;&lt;P&gt;    IF STRLENGTH &amp;gt; 0.&lt;/P&gt;&lt;P&gt;      SHIFT TEMP_LINE UP TO SPACE.&lt;/P&gt;&lt;P&gt;      PERFORM FIND_TABLES_ON_ONE_LINE TABLES TABLE_NAMES&lt;/P&gt;&lt;P&gt;                                      USING TEMP_LINE EOL.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      EOL = 0.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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;FIND_CUSTOM_FUNCTIONS... Look for any functions not created by SAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM FIND_CUSTOM_FUNCTIONS TABLES I_FUNC_NAMES STRUCTURE FUNCTION_NAMES&lt;/P&gt;&lt;P&gt;                           USING VALUE(PROGRAM).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA I_LINES LIKE CONTENT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: HEAD(76).&lt;/P&gt;&lt;P&gt;DATA: TAIL(76).&lt;/P&gt;&lt;P&gt;DATA: I_RECURSIVE_FUNC LIKE I_FUNCTIONS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_FOUND_RECURSIVE LIKE I_FUNCTIONS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: REC_FUNC_NAME LIKE TRDIR-NAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- read abap&lt;/P&gt;&lt;P&gt;   READ REPORT PROGRAM INTO I_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   LOOP AT I_LINES.&lt;/P&gt;&lt;P&gt;*--- find custom tables.&lt;/P&gt;&lt;P&gt;     IF I_LINES-LINE(1) = '*' OR I_LINES IS INITIAL.&lt;/P&gt;&lt;P&gt;       CONTINUE.&lt;/P&gt;&lt;P&gt;     ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     TRANSLATE I_LINES-LINE TO UPPER CASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF I_LINES-LINE CS 'CALL FUNCTION'.&lt;/P&gt;&lt;P&gt;      SHIFT I_LINES-LINE UP TO 'FUNCTION'.&lt;/P&gt;&lt;P&gt;      SHIFT I_LINES-LINE UP TO SPACE.&lt;/P&gt;&lt;P&gt;      SHIFT I_LINES-LINE LEFT DELETING LEADING SPACE.&lt;/P&gt;&lt;P&gt;      SHIFT I_LINES-LINE LEFT DELETING LEADING ''''.&lt;/P&gt;&lt;P&gt;      SPLIT I_LINES-LINE AT '''' INTO HEAD TAIL.&lt;/P&gt;&lt;P&gt;      IF HEAD(1) = 'Y' OR HEAD(1) = 'Z'.&lt;/P&gt;&lt;P&gt;        I_FUNC_NAMES-FUNCNAME = HEAD.&lt;/P&gt;&lt;P&gt;        APPEND I_FUNC_NAMES TO I_RECURSIVE_FUNC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        READ TABLE I_FUNC_NAMES WITH KEY FUNCNAME = HEAD.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;          APPEND I_FUNC_NAMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          IF P_RECF = 'X'.&lt;/P&gt;&lt;P&gt;            PERFORM RETRIEVE_FUNCTIONS TABLES S_FNAME&lt;/P&gt;&lt;P&gt;                                              S_FGROUP&lt;/P&gt;&lt;P&gt;                                              I_RECURSIVE_FUNC&lt;/P&gt;&lt;P&gt;                                              I_FOUND_RECURSIVE&lt;/P&gt;&lt;P&gt;                                        USING 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            READ TABLE I_FOUND_RECURSIVE INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM FUNC_INCLUDE_NAME USING I_FOUND_RECURSIVE-PNAME&lt;/P&gt;&lt;P&gt;                                            I_FOUND_RECURSIVE-INCLUDE&lt;/P&gt;&lt;P&gt;                                            REC_FUNC_NAME&lt;/P&gt;&lt;P&gt;                                            0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM FIND_INCLUDE_PROGRAMS USING REC_FUNC_NAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            PERFORM FIND_CUSTOM_FUNCTIONS TABLES I_FUNC_NAMES&lt;/P&gt;&lt;P&gt;                                          USING REC_FUNC_NAME.&lt;/P&gt;&lt;P&gt;           ENDIF.&lt;/P&gt;&lt;P&gt;           CLEAR I_FOUND_RECURSIVE. REFRESH I_FOUND_RECURSIVE.&lt;/P&gt;&lt;P&gt;           CLEAR I_RECURSIVE_FUNC. REFRESH I_RECURSIVE_FUNC.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&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;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; FUNC_INCLUDE_NAME...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FUNC_INCLUDE_NAME USING VALUE(PROG_NAME)&lt;/P&gt;&lt;P&gt;                             VALUE(INCLUDE_NO)&lt;/P&gt;&lt;P&gt;                             INTERNAL_NAME&lt;/P&gt;&lt;P&gt;                             VALUE(WANT_TOP).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: INC_NUMBER(4).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE '%U' INCLUDE_NO INTO INC_NUMBER.&lt;/P&gt;&lt;P&gt;  IF WANT_TOP = 0.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE INCLUDE FROM D010INC INTO INTERNAL_NAME&lt;/P&gt;&lt;P&gt;                          WHERE MASTER = PROG_NAME&lt;/P&gt;&lt;P&gt;                            AND INCLUDE LIKE INC_NUMBER.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE INCLUDE FROM D010INC INTO INTERNAL_NAME&lt;/P&gt;&lt;P&gt;                          WHERE MASTER = PROG_NAME&lt;/P&gt;&lt;P&gt;                            AND ( INCLUDE LIKE '%TOP'&lt;/P&gt;&lt;P&gt;                             OR  ( INCLUDE LIKE INC_NUMBER&lt;/P&gt;&lt;P&gt;                               AND INCLUDE NOT LIKE '%$%' ) ).&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; SORT_FUNCTIONS... don't allow duplicates in prog structure.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM SORT_FUNCTIONS TABLES I_PROG STRUCTURE I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                           I_FUNC_NAMES STRUCTURE FUNCTION_NAMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: WA_FUNC_STRUCT TYPE T_FUNCTIONS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT I_FUNC_NAMES ASCENDING BY FUNCNAME.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM I_FUNC_NAMES.&lt;/P&gt;&lt;P&gt;  IF NOT I_FUNC_NAMES[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT I_FUNC_NAMES.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING I_FUNC_NAMES TO WA_FUNC_STRUCT.&lt;/P&gt;&lt;P&gt;      APPEND WA_FUNC_STRUCT TO I_PROG-FUNCTIONS.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;    CLEAR I_FUNC_NAMES. REFRESH I_FUNC_NAMES.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; DISPLAY_STATUS...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM DISPLAY_STATUS USING MESSAGE DELAY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;           PERCENTAGE = 0&lt;/P&gt;&lt;P&gt;           TEXT       = MESSAGE&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS     = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF DELAY &amp;gt; 0.&lt;/P&gt;&lt;P&gt;       call function 'RZL_SLEEP'&lt;/P&gt;&lt;P&gt;           exporting&lt;/P&gt;&lt;P&gt;                SECONDS        = DELAY&lt;/P&gt;&lt;P&gt;            exceptions&lt;/P&gt;&lt;P&gt;                 argument_error = 1&lt;/P&gt;&lt;P&gt;                 others         = 2.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DISPLAY_STATUS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;***********************&lt;STRONG&gt;HTML ROUTINES&lt;/STRONG&gt;**********************************&lt;/P&gt;&lt;P&gt;************************************************************************&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; CONVERT_DD_TO_HTML...   Convert text description to HTML&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM CONVERT_DD_TO_HTML TABLES I_DICT STRUCTURE I_DICT_MINUS_TABNAME&lt;/P&gt;&lt;P&gt;                               I_DICT_HTML STRUCTURE W3HTML.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: COLUMN_CAPTIONS LIKE W3HEAD OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA  ROW_ATTRIBUTES LIKE W3FIELDS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: W_BORDER LIKE W3HTML.&lt;/P&gt;&lt;P&gt;W_BORDER-LINE = 'BORDER=1'.&lt;/P&gt;&lt;P&gt;  PERFORM SET_COLUMN_HEADERS TABLES COLUMN_CAPTIONS.&lt;/P&gt;&lt;P&gt;  PERFORM SET_ROW_ATTRIBUTES TABLES ROW_ATTRIBUTES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'WWW_ITAB_TO_HTML'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           TABLE_ATTRIBUTES = W_BORDER&lt;/P&gt;&lt;P&gt;           ALL_FIELDS       = 'X'&lt;/P&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;           HTML             = I_DICT_HTML&lt;/P&gt;&lt;P&gt;           FIELDS           = ROW_ATTRIBUTES&lt;/P&gt;&lt;P&gt;           ROW_HEADER       = COLUMN_CAPTIONS&lt;/P&gt;&lt;P&gt;           ITABLE           = I_DICT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM RE_FORMAT_HTML TABLES I_DICT_HTML.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; SET_COLUMN_HEADERS... For DD structures converted to HTML&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM SET_COLUMN_HEADERS TABLES COLUMN_CAPTIONS STRUCTURE W3HEAD.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA FIELD_NO LIKE W3HEAD-NR VALUE 1.&lt;/P&gt;&lt;P&gt;DATA TEXT LIKE W3HEAD-TEXT VALUE 'Field name'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 8 TIMES.         "number of fields in structure i_dictionary.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WWW_ITAB_TO_HTML_HEADERS'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;             FIELD_NR    = FIELD_NO&lt;/P&gt;&lt;P&gt;             TEXT        = TEXT&lt;/P&gt;&lt;P&gt;             FGCOLOR     = '#FFFF00'&lt;/P&gt;&lt;P&gt;             BGCOLOR     = '#000000'&lt;/P&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;             HEADER      = COLUMN_CAPTIONS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     FIELD_NO = FIELD_NO + 1.&lt;/P&gt;&lt;P&gt;     CASE FIELD_NO.&lt;/P&gt;&lt;P&gt;       WHEN 2. TEXT = 'Position'.&lt;/P&gt;&lt;P&gt;       WHEN 3. TEXT = 'Key'.&lt;/P&gt;&lt;P&gt;       WHEN 4. TEXT = 'Data element'.&lt;/P&gt;&lt;P&gt;       WHEN 5. TEXT = 'Domain'.&lt;/P&gt;&lt;P&gt;       WHEN 6. TEXT = 'Datatype'.&lt;/P&gt;&lt;P&gt;       WHEN 7. TEXT = 'Length'.&lt;/P&gt;&lt;P&gt;       WHEN 8. TEXT = 'Domain text'.&lt;/P&gt;&lt;P&gt;     ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDDO.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; SET_ROW_ATTRIBUTES... For DD structures converted to HTML&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM SET_ROW_ATTRIBUTES TABLES ROW_ATTRIBUTES STRUCTURE W3FIELDS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA FIELD_NO LIKE W3FIELDS-NR VALUE 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DO 8 TIMES.         "number of fields in structure i_dict.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'WWW_ITAB_TO_HTML_LAYOUT'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;           FIELD_NR  = FIELD_NO&lt;/P&gt;&lt;P&gt;           SIZE      = '1'&lt;/P&gt;&lt;P&gt;           FGCOLOR   = 'green'&lt;/P&gt;&lt;P&gt;           FONT      = '"Arial"'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            FIELDS    = ROW_ATTRIBUTES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     FIELD_NO = FIELD_NO + 1.&lt;/P&gt;&lt;P&gt;   ENDDO.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; RE_FORMAT_HTML... Splits table lines at EOL marker an places line on&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                   a new line.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM RE_FORMAT_HTML TABLES HTML_TABLE STRUCTURE W3HTML.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: NEW_HTML LIKE W3HTML OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: HEAD LIKE W3HTML.&lt;/P&gt;&lt;P&gt;DATA TAIL(510).&lt;/P&gt;&lt;P&gt;CONSTANTS: CR(2) TYPE X VALUE '0D0A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; LOOP AT HTML_TABLE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CONCATENATE TAIL HTML_TABLE INTO TAIL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IF HTML_TABLE CS CR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WHILE tail CS cr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      SPLIT tail AT cr INTO head tail.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      APPEND HEAD TO NEW_HTML.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ENDWHILE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    APPEND HTML_TABLE TO NEW_HTML.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDLOOP.&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 tail TO new_html.&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; HTML_TABLE[] = NEW_HTML[].&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;ENDFORM.&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; BUILD_HTML_TABLE... Builds an HTML table based upon a text table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                     Replaces signs '&amp;lt;&amp;gt;' with HTML versions.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM CONVERT_TABLE_TO_HTML TABLES CONTENTS STRUCTURE CONTENT&lt;/P&gt;&lt;P&gt;                           USING VALUE(PROGRAM_NAME).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: HTML_TABLE LIKE W3HTML OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: LISTING_NAME(100) VALUE 'Program listing for:'.&lt;/P&gt;&lt;P&gt;CONSTANTS: BR(4) VALUE '&amp;lt;br&amp;gt;'.&lt;/P&gt;&lt;P&gt;CONSTANTS: CR(4) VALUE '&amp;lt;cr&amp;gt;'.&lt;/P&gt;&lt;P&gt;CONSTANTS: HR(4) VALUE '&amp;lt;hr&amp;gt;'.&lt;/P&gt;&lt;P&gt;CONSTANTS: LT(4) VALUE '&amp;amp;lt;'.&lt;/P&gt;&lt;P&gt;CONSTANTS: GT(4) VALUE '&amp;amp;gt;'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;html&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;head&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE '&amp;lt;title&amp;gt;' PROGRAM_NAME '&amp;lt;/title&amp;gt;' INTO HTML_TABLE.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;/head&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;body bgcolor=#FFFF4b&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE LISTING_NAME PROGRAM_NAME INTO LISTING_NAME&lt;/P&gt;&lt;P&gt;                                        SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE '&amp;lt;font size=3 face = "Arial" color=#000000&amp;gt;&amp;lt;b&amp;gt;'&lt;/P&gt;&lt;P&gt;                LISTING_NAME '&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;' INTO HTML_TABLE.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = HR.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;font size=2 face = "Sans Serif"&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;pre width=100&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;  LOOP AT CONTENTS.&lt;/P&gt;&lt;P&gt;      IF NOT ( CONTENTS IS INITIAL ).&lt;/P&gt;&lt;P&gt;        WHILE ( CONTENTS CS '&amp;lt;' OR CONTENTS CS '&amp;gt;' ).&lt;/P&gt;&lt;P&gt;          REPLACE '&amp;lt;' WITH LT INTO CONTENTS.&lt;/P&gt;&lt;P&gt;          REPLACE '&amp;gt;' WITH GT INTO CONTENTS.&lt;/P&gt;&lt;P&gt;        ENDWHILE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CONCATENATE CONTENTS CR INTO HTML_TABLE.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        HTML_TABLE = BR.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;/pre&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = HR.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONCATENATE FOOTER_MESSAGE BR INTO HTML_TABLE.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;/body&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  HTML_TABLE = '&amp;lt;/html&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND HTML_TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CONTENTS[] = HTML_TABLE[].&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;********************&lt;STRONG&gt;DOWNLOAD ROUTINES&lt;/STRONG&gt;*********************************&lt;/P&gt;&lt;P&gt;************************************************************************&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;DOWNLOAD_DD_STRUCTURES... download database objects to file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DOWNLOAD_DD_STRUCTURES TABLES I_DICT STRUCTURE I_DICTIONARY&lt;/P&gt;&lt;P&gt;                            USING VALUE(PATHNAME).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: FILENAME LIKE RLGRAP-FILENAME.&lt;/P&gt;&lt;P&gt;DATA: I_DICT_HTML LIKE W3HTML OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_DICT.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING I_DICT TO I_DICT_MINUS_TABNAME.&lt;/P&gt;&lt;P&gt;    APPEND I_DICT_MINUS_TABNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    AT END OF TABNAME.&lt;/P&gt;&lt;P&gt;      CONCATENATE 'Converting table' I_DICT-TABNAME 'to html'&lt;/P&gt;&lt;P&gt;                                     INTO MESS SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;      PERFORM DISPLAY_STATUS USING MESS 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TRANSLATE I_DICT-TABNAME TO LOWER CASE.&lt;/P&gt;&lt;P&gt;      TRANSLATE P_HEX TO LOWER CASE.&lt;/P&gt;&lt;P&gt;      CONCATENATE PATHNAME '\' 'Dictionary-'&lt;/P&gt;&lt;P&gt;                               I_DICT-TABNAME '.'&lt;/P&gt;&lt;P&gt;                               P_HEX INTO FILENAME.&lt;/P&gt;&lt;P&gt;      PERFORM CONVERT_DD_TO_HTML TABLES I_DICT_MINUS_TABNAME&lt;/P&gt;&lt;P&gt;                                        i_dict_html.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM WS_DOWNLOAD TABLES I_DICT_HTML&lt;/P&gt;&lt;P&gt;                          USING FILENAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR I_DICT_HTML. REFRESH I_DICT_HTML.&lt;/P&gt;&lt;P&gt;      CLEAR I_DICT_MINUS_TABNAME. REFRESH I_DICT_MINUS_TABNAME.&lt;/P&gt;&lt;P&gt;    ENDAT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; DOWNLOAD_FUNCTIONS...       Download function modules to file.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DOWNLOAD_FUNCTIONS TABLES I_FUNC STRUCTURE I_FUNCTIONS&lt;/P&gt;&lt;P&gt;                               USING VALUE(P_PATH).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: INC_NUMBER(4).&lt;/P&gt;&lt;P&gt;DATA: FILE_EXT(4).&lt;/P&gt;&lt;P&gt;DATA: FUNC_PATH LIKE RLGRAP-FILENAME.&lt;/P&gt;&lt;P&gt;DATA: HTML_NAME(110).&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_LOC_INCLUDES OCCURS 0,&lt;/P&gt;&lt;P&gt;         INCLUDE LIKE D010INC-INCLUDE,&lt;/P&gt;&lt;P&gt;      END OF I_LOC_INCLUDES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_FUNC.&lt;/P&gt;&lt;P&gt;    CLEAR I_LOC_INCLUDES. REFRESH I_LOC_INCLUDES.&lt;/P&gt;&lt;P&gt;*--- Function module&lt;/P&gt;&lt;P&gt;    PERFORM FUNC_INCLUDE_NAME USING I_FUNC-PNAME&lt;/P&gt;&lt;P&gt;                                    I_FUNC-INCLUDE&lt;/P&gt;&lt;P&gt;                                    I_LOC_INCLUDES-INCLUDE&lt;/P&gt;&lt;P&gt;                                    0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND I_LOC_INCLUDES.&lt;/P&gt;&lt;P&gt;*--- Global declarations&lt;/P&gt;&lt;P&gt;    perform func_include_name using i_func-pname&lt;/P&gt;&lt;P&gt;                                    i_func-include&lt;/P&gt;&lt;P&gt;                                    I_LOC_INCLUDES-INCLUDE&lt;/P&gt;&lt;P&gt;                                    1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append i_loc_includes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT I_LOC_INCLUDES.&lt;/P&gt;&lt;P&gt;      READ REPORT I_LOC_INCLUDES-INCLUDE INTO CONTENT.&lt;/P&gt;&lt;P&gt;      TRANSLATE I_FUNCTIONS-STEXT TO LOWER CASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Create filename and convert contents to HTML if applicable&lt;/P&gt;&lt;P&gt;      IF P_HTML = 'X'.&lt;/P&gt;&lt;P&gt;        IF I_LOC_INCLUDES-INCLUDE CS 'TOP'.&lt;/P&gt;&lt;P&gt;          CONCATENATE 'Global-' I_FUNC-FUNCNAME&lt;/P&gt;&lt;P&gt;                                      INTO HTML_NAME SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          HTML_NAME = I_FUNC-FUNCNAME.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          PERFORM CONVERT_TABLE_TO_HTML TABLES CONTENT&lt;/P&gt;&lt;P&gt;                                        USING HTML_NAME.&lt;/P&gt;&lt;P&gt;          FILE_EXT = P_HEX.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;          FILE_EXT = P_TEX.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF I_LOC_INCLUDES-INCLUDE CS 'TOP'.&lt;/P&gt;&lt;P&gt;        CONCATENATE P_PATH '\Global-' I_FUNC-FUNCNAME '.'&lt;/P&gt;&lt;P&gt;                                       FILE_EXT&lt;/P&gt;&lt;P&gt;                                       INTO FUNC_PATH.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CONCATENATE P_PATH '\' I_FUNC-FUNCNAME '.' FILE_EXT&lt;/P&gt;&lt;P&gt;                                     INTO FUNC_PATH.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      TRANSLATE FUNC_PATH TO LOWER CASE.&lt;/P&gt;&lt;P&gt;      PERFORM WS_DOWNLOAD TABLES CONTENT&lt;/P&gt;&lt;P&gt;                          USING FUNC_PATH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CLEAR CONTENT. REFRESH CONTENT.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_DOC = 'X'.&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_FUNC_DOCUMENTATION USING I_FUNC-FUNCNAME&lt;/P&gt;&lt;P&gt;                                                     I_FUNC-STEXT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG_INCLUDES.&lt;/P&gt;&lt;P&gt;  PERFORM READ_MAIN_CODE_AND_DOWNLOAD TABLES I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                             I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                             I_MESSAGES&lt;/P&gt;&lt;P&gt;                                       USING I_PROG_INCLUDES-PROG.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;ENDFORM.&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;DOWNLOAD_FUNCTION_DOCUMENTATION...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DOWNLOAD_FUNC_DOCUMENTATION USING FUNCTION_NAME&lt;/P&gt;&lt;P&gt;                                       DESCRIPTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: I_LINES LIKE CONTENT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_SCRIPT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: HTML_PAGE_NAME(100).&lt;/P&gt;&lt;P&gt;DATA: DOC_PATH LIKE RLGRAP-FILENAME.&lt;/P&gt;&lt;P&gt;DATA: OBJECT LIKE DOKHL-OBJECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE FUNCTION_NAME TO OBJECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'DOCU_GET'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            ID                     = 'FU'&lt;/P&gt;&lt;P&gt;            LANGU                  = SY-LANGU&lt;/P&gt;&lt;P&gt;            OBJECT                 = OBJECT&lt;/P&gt;&lt;P&gt;            TYP                    = 'T'&lt;/P&gt;&lt;P&gt;            VERSION_ACTIVE_OR_LAST = 'L'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            LINE                   = I_SCRIPT_LINES&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            NO_DOCU_ON_SCREEN      = 1&lt;/P&gt;&lt;P&gt;            NO_DOCU_SELF_DEF       = 2&lt;/P&gt;&lt;P&gt;            NO_DOCU_TEMP           = 3&lt;/P&gt;&lt;P&gt;            RET_CODE               = 4&lt;/P&gt;&lt;P&gt;            OTHERS                 = 5.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0 AND NOT ( I_SCRIPT_LINES[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;    APPEND 'SHORT TEXT' TO I_LINES.&lt;/P&gt;&lt;P&gt;    APPEND DESCRIPTION TO I_LINES.&lt;/P&gt;&lt;P&gt;    APPEND SPACE TO I_LINES.&lt;/P&gt;&lt;P&gt;    LOOP AT I_SCRIPT_LINES.&lt;/P&gt;&lt;P&gt;      MOVE I_SCRIPT_LINES-TDLINE TO I_LINES-LINE.&lt;/P&gt;&lt;P&gt;      WHILE I_LINES-LINE CP '&amp;amp;&lt;STRONG&gt;' OR I_LINES-LINE CP '&lt;/STRONG&gt;&amp;amp;'.&lt;/P&gt;&lt;P&gt;        REPLACE '&amp;amp;' WITH '' INTO I_LINES-LINE.&lt;/P&gt;&lt;P&gt;      ENDWHILE.&lt;/P&gt;&lt;P&gt;      APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE 'Documentation -' FUNCTION_NAME&lt;/P&gt;&lt;P&gt;                                 INTO HTML_PAGE_NAME SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;    PERFORM CONVERT_TABLE_TO_HTML TABLES I_LINES&lt;/P&gt;&lt;P&gt;                                  USING  HTML_PAGE_NAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE P_PATH '\Docs-' FUNCTION_NAME '.'&lt;/P&gt;&lt;P&gt;                                      P_HEX&lt;/P&gt;&lt;P&gt;                                      INTO DOC_PATH.&lt;/P&gt;&lt;P&gt;    TRANSLATE DOC_PATH TO LOWER CASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM WS_DOWNLOAD TABLES I_LINES&lt;/P&gt;&lt;P&gt;                        USING DOC_PATH.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; DOWNLOAD_PROGRAMS..&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DOWNLOAD_PROGRAMS TABLES I_PROG STRUCTURE I_PROGRAMMES&lt;/P&gt;&lt;P&gt;                                     USING VALUE(P_PATH).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: WA_DICT_STRUCT LIKE I_DICTIONARY.&lt;/P&gt;&lt;P&gt;DATA: I_LOC_TAB_NAMES LIKE TABLE_NAMES OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: I_LOC_DICT TYPE T_DICT_STRUCT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: WA_INCLUDES TYPE T_INCLUDES.&lt;/P&gt;&lt;P&gt;DATA: I_LOC_FUNCTIONS TYPE T_FUNCTIONS OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: WA_FUNCTIONS TYPE T_FUNCTIONS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT I_PROG ASCENDING BY PROG.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM I_PROG COMPARING PROG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG.&lt;/P&gt;&lt;P&gt;*-- Download screens.&lt;/P&gt;&lt;P&gt;    PERFORM DOWNLOAD_SCREENS TABLES I_PROG-SCREEN_FLOW&lt;/P&gt;&lt;P&gt;                             USING  I_PROG-PROG.&lt;/P&gt;&lt;P&gt;*-- Download dictionary objects&lt;/P&gt;&lt;P&gt;    LOOP AT I_PROG-DICT_STRUCT INTO WA_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;      MOVE WA_DICT_STRUCT-TABNAME TO I_LOC_TAB_NAMES-TABNAME.&lt;/P&gt;&lt;P&gt;      APPEND I_LOC_TAB_NAMES.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Temporary stops multiple objects with the same name being&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     downloaded to the same directory.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT I_LOC_TAB_NAMES.&lt;/P&gt;&lt;P&gt;      SORT I_DOWNLOADED ASCENDING BY OBJECT.&lt;/P&gt;&lt;P&gt;      READ TABLE I_DOWNLOADED WITH KEY OBJECT = I_LOC_TAB_NAMES-TABNAME.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;        DELETE I_LOC_TAB_NAMES.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT ( I_LOC_TAB_NAMES[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;      PERFORM FIND_TABLE_DEFINITION TABLES I_LOC_DICT&lt;/P&gt;&lt;P&gt;                                           I_LOC_TAB_NAMES.&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_DD_STRUCTURES TABLES I_LOC_DICT&lt;/P&gt;&lt;P&gt;                                     USING P_PATH.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Temporary&lt;/P&gt;&lt;P&gt;    LOOP AT I_LOC_TAB_NAMES.&lt;/P&gt;&lt;P&gt;      APPEND I_LOC_TAB_NAMES TO I_DOWNLOADED.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Download function modules&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Temporary stops multiple objects with the same name being&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     downloaded to the same directory.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT I_PROG-FUNCTIONS INTO WA_FUNCTIONS.&lt;/P&gt;&lt;P&gt;      SORT I_DOWNLOADED ASCENDING BY OBJECT.&lt;/P&gt;&lt;P&gt;      READ TABLE I_DOWNLOADED WITH KEY&lt;/P&gt;&lt;P&gt;                                   OBJECT = WA_FUNCTIONS-FUNCNAME.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        DELETE I_PROG-FUNCTIONS.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF NOT ( I_PROG-FUNCTIONS[] IS INITIAL ).&lt;/P&gt;&lt;P&gt;      PERFORM RETRIEVE_FUNCTIONS TABLES S_FNAME&lt;/P&gt;&lt;P&gt;                                        S_FGROUP&lt;/P&gt;&lt;P&gt;                                        I_PROG-FUNCTIONS&lt;/P&gt;&lt;P&gt;                                        I_LOC_FUNCTIONS&lt;/P&gt;&lt;P&gt;                                 USING 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_FUNCTIONS TABLES I_LOC_FUNCTIONS&lt;/P&gt;&lt;P&gt;                                 USING P_PATH.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Temporary&lt;/P&gt;&lt;P&gt;    LOOP AT I_LOC_FUNCTIONS.&lt;/P&gt;&lt;P&gt;      MOVE I_LOC_FUNCTIONS-FUNCNAME TO I_DOWNLOADED.&lt;/P&gt;&lt;P&gt;      APPEND I_DOWNLOADED.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Download includes&lt;/P&gt;&lt;P&gt;    LOOP AT I_PROG-INCLUDES INTO WA_INCLUDES.&lt;/P&gt;&lt;P&gt;      PERFORM READ_MAIN_CODE_AND_DOWNLOAD TABLES I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                                 I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                                 I_MESSAGES&lt;/P&gt;&lt;P&gt;                                          USING WA_INCLUDES-PROG.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Main program&lt;/P&gt;&lt;P&gt;    PERFORM READ_MAIN_CODE_AND_DOWNLOAD TABLES I_PROG-TEXT_ELEMENTS&lt;/P&gt;&lt;P&gt;                                               I_PROG-SELECTION_TEXTS&lt;/P&gt;&lt;P&gt;                                                 I_PROG-MESSAGES&lt;/P&gt;&lt;P&gt;                                        USING I_PROG-PROG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CLEAR CONTENT. REFRESH CONTENT.&lt;/P&gt;&lt;P&gt;    CLEAR I_LOC_DICT. REFRESH I_LOC_DICT.&lt;/P&gt;&lt;P&gt;    CLEAR I_LOC_TAB_NAMES. REFRESH I_LOC_TAB_NAMES.&lt;/P&gt;&lt;P&gt;    CLEAR I_LOC_FUNCTIONS. REFRESH I_LOC_FUNCTIONS.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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;  FIND_MAIN_CODE_AND_DOWNLOAD...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM READ_MAIN_CODE_AND_DOWNLOAD TABLES&lt;/P&gt;&lt;P&gt;                                   TEXT_ELEMENTS STRUCTURE I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                   SELECTION_TEXTS STRUCTURE I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                   MESSAGES STRUCTURE I_MESSAGES&lt;/P&gt;&lt;P&gt;                                 USING PROGNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: I_LINES LIKE CONTENT OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: W_FILENAME LIKE RLGRAP-FILENAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ REPORT PROGNAME INTO I_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- download text elements and selection texts for main program&lt;/P&gt;&lt;P&gt;   PERFORM APPEND_TEXT_ELEMENTS TABLES TEXT_ELEMENTS&lt;/P&gt;&lt;P&gt;                                       SELECTION_TEXTS&lt;/P&gt;&lt;P&gt;                                       i_lines.&lt;/P&gt;&lt;P&gt;*-- download messages classes for main program.&lt;/P&gt;&lt;P&gt;   PERFORM APPEND_MESSAGES_TO_FILE TABLES MESSAGES I_LINES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF ( P_TXT = 'X' ) OR ( PROGNAME = SY-CPROG ).&lt;/P&gt;&lt;P&gt;    IF PROGNAME = SY-CPROG.&lt;/P&gt;&lt;P&gt;      CONCATENATE P_PATH '\' 'Direct download v' C_VERSION_NO '.' P_TEX&lt;/P&gt;&lt;P&gt;                                                       INTO W_FILENAME.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      CONCATENATE P_PATH '\' PROGNAME '.' P_TEX INTO W_FILENAME.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    TRANSLATE W_FILENAME TO LOWER CASE.&lt;/P&gt;&lt;P&gt;    PERFORM WS_DOWNLOAD TABLES I_LINES USING W_FILENAME.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    PERFORM CONVERT_TABLE_TO_HTML TABLES I_LINES&lt;/P&gt;&lt;P&gt;                                  USING PROGNAME.&lt;/P&gt;&lt;P&gt;    CONCATENATE P_PATH '\' PROGNAME '.' P_HEX INTO W_FILENAME.&lt;/P&gt;&lt;P&gt;    TRANSLATE W_FILENAME TO LOWER CASE.&lt;/P&gt;&lt;P&gt;    PERFORM WS_DOWNLOAD TABLES I_LINES USING W_FILENAME.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&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;APPEND_TEXTS_TO_FILE...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM APPEND_TEXT_ELEMENTS TABLES TEXT_ELEMENTS STRUCTURE I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                 SELECTION_TEXTS STRUCTURE I_TEXTTAB&lt;/P&gt;&lt;P&gt;                                 I_LINES STRUCTURE CONTENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: W_LINES TYPE I VALUE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TEXT_ELEMENTS LINES W_LINES.&lt;/P&gt;&lt;P&gt;  IF W_LINES &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    DO 3 TIMES.&lt;/P&gt;&lt;P&gt;      I_LINES-LINE = ''.&lt;/P&gt;&lt;P&gt;      APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    I_LINES-LINE = '*Text elements'.&lt;/P&gt;&lt;P&gt;    APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    I_LINES-LINE = '*----&lt;/P&gt;&lt;HR originaltext="--------" /&gt;&lt;P&gt;'.&lt;/P&gt;&lt;P&gt;    APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    LOOP AT TEXT_ELEMENTS.&lt;/P&gt;&lt;P&gt;       I_LINES-LINE+0(2) = '* '.&lt;/P&gt;&lt;P&gt;       I_LINES-LINE+2(74) = TEXT_ELEMENTS.&lt;/P&gt;&lt;P&gt;       APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE SELECTION_TEXTS LINES W_LINES.&lt;/P&gt;&lt;P&gt;  IF W_LINES &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    DO 3 TIMES.&lt;/P&gt;&lt;P&gt;      I_LINES-LINE = ''.&lt;/P&gt;&lt;P&gt;      APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    I_LINES-LINE = '*Selection texts'.&lt;/P&gt;&lt;P&gt;    APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    I_LINES-LINE = '*----&lt;/P&gt;&lt;HR originaltext="----------" /&gt;&lt;P&gt;'.&lt;/P&gt;&lt;P&gt;    APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    LOOP AT SELECTION_TEXTS.&lt;/P&gt;&lt;P&gt;      I_LINES-LINE+0(1) = '*'.&lt;/P&gt;&lt;P&gt;      I_LINES-LINE+1(75) = SELECTION_TEXTS.&lt;/P&gt;&lt;P&gt;      APPEND I_LINES.&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;/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; APPEND_MESSAGES_TO_FILE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;FORM APPEND_MESSAGES_TO_FILE TABLES MESSAGES STRUCTURE I_MESSAGES&lt;/P&gt;&lt;P&gt;                                    I_LINES STRUCTURE CONTENT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: W_LINES TYPE I VALUE 0,&lt;/P&gt;&lt;P&gt;      PREV_MSGID LIKE MESSAGES-MSGID.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE MESSAGES LINES W_LINES.&lt;/P&gt;&lt;P&gt;  IF W_LINES &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    DO 2 TIMES.&lt;/P&gt;&lt;P&gt;      I_LINES-LINE = ''.&lt;/P&gt;&lt;P&gt;      APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    ENDDO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    I_LINES-LINE = '*Messages'.&lt;/P&gt;&lt;P&gt;    APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    I_LINES-LINE = '*----&lt;/P&gt;&lt;HR originaltext="--------" /&gt;&lt;P&gt;'.&lt;/P&gt;&lt;P&gt;    APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    LOOP AT MESSAGES.&lt;/P&gt;&lt;P&gt;       IF ( MESSAGES-MSGID &amp;lt;&amp;gt; PREV_MSGID ).&lt;/P&gt;&lt;P&gt;         CONCATENATE '*' 'Message class:' MESSAGES-MSGID&lt;/P&gt;&lt;P&gt;                          INTO I_LINES-LINE SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;         PREV_MSGID = MESSAGES-MSGID.&lt;/P&gt;&lt;P&gt;         APPEND I_LINES.&lt;/P&gt;&lt;P&gt;       ENDIF.&lt;/P&gt;&lt;P&gt;         CONCATENATE '*' MESSAGES-MSGNR MESSAGES-TEXT INTO I_LINES-LINE&lt;/P&gt;&lt;P&gt;                                        SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;         APPEND I_LINES.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " APPEND_MESSAGES_TO_FILE&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; DOWNLOAD_SCREENS...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DOWNLOAD_SCREENS TABLES SCREEN_FLOW STRUCTURE I_SCREEN_FLOW&lt;/P&gt;&lt;P&gt;                      USING VALUE(PROGNAME).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: HEADER LIKE D020S.&lt;/P&gt;&lt;P&gt;DATA: FIELDS LIKE D021S OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: FLOW LIKE D022S OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: W_FILENAME LIKE RLGRAP-FILENAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT SCREEN_FLOW.&lt;/P&gt;&lt;P&gt;    CLEAR HEADER.&lt;/P&gt;&lt;P&gt;    CLEAR FIELDS[].&lt;/P&gt;&lt;P&gt;    CLEAR FLOW[].&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_IMPORT_DYNPRO'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;             DYLANG               = SY-LANGU&lt;/P&gt;&lt;P&gt;             DYNAME               = PROGNAME&lt;/P&gt;&lt;P&gt;             DYNUMB               = SCREEN_FLOW-SCREEN&lt;/P&gt;&lt;P&gt;        IMPORTING&lt;/P&gt;&lt;P&gt;             HEADER               = HEADER&lt;/P&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;              FTAB                 = FIELDS&lt;/P&gt;&lt;P&gt;              PLTAB                = FLOW.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CONCATENATE PROGNAME 'screen' SCREEN_FLOW-SCREEN&lt;/P&gt;&lt;P&gt;                                  INTO W_FILENAME SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;    CONCATENATE P_PATH '\' W_FILENAME '.txt'  INTO W_FILENAME.&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_DYNPRO_DOWNLOAD'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              HEADER              = HEADER&lt;/P&gt;&lt;P&gt;              DESCRIPT            = ''&lt;/P&gt;&lt;P&gt;              FILE                = W_FILENAME&lt;/P&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;              FIELDS              = FIELDS&lt;/P&gt;&lt;P&gt;              FLOWLOGIC           = FLOW.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; WS_DOWNLOAD...    Write an internal table to file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM WS_DOWNLOAD TABLES I_DOWNLOAD&lt;/P&gt;&lt;P&gt;                 USING FILENAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;           FILENAME            = FILENAME&lt;/P&gt;&lt;P&gt;           FILETYPE            = 'ASC'&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;           DATA_TAB            = I_DOWNLOAD.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;*************************&lt;STRONG&gt;DISPLAY ROUTINES&lt;/STRONG&gt;*****************************&lt;/P&gt;&lt;P&gt;************************************************************************&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; FILL_TREE_NODE_PROGRAMS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FILL_TREE_NODE_PROGRAMS TABLES I_PROG STRUCTURE I_PROGRAMMES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: W_PROG TYPE T_PROGRAMMES.&lt;/P&gt;&lt;P&gt;DATA: W_NODE LIKE SNODETEXT.&lt;/P&gt;&lt;P&gt;DATA: WA_SCREENS TYPE T_SCREEN_FLOW.&lt;/P&gt;&lt;P&gt;DATA: WA_MESSAGES TYPE T_MESSAGES.&lt;/P&gt;&lt;P&gt;DATA: WA_INCLUDES TYPE T_INCLUDES.&lt;/P&gt;&lt;P&gt;DATA: WA_DICT_STRUCT TYPE T_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;DATA: WA_FUNC_STRUCT TYPE T_FUNCTIONS.&lt;/P&gt;&lt;P&gt;DATA: STRLENGTH TYPE I.&lt;/P&gt;&lt;P&gt;DATA: TEXT(255).&lt;/P&gt;&lt;P&gt;DATA: W_LINES(4) TYPE C.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   DESCRIBE TABLE I_PROG LINES W_LINES.&lt;/P&gt;&lt;P&gt;   IF W_LINES = 1.&lt;/P&gt;&lt;P&gt;     CONCATENATE W_LINES 'programs downloaded' INTO W_NODE-TEXT2&lt;/P&gt;&lt;P&gt;                                              SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;   ELSE.&lt;/P&gt;&lt;P&gt;     CONCATENATE W_LINES 'programs downloaded' INTO W_NODE-TEXT2&lt;/P&gt;&lt;P&gt;                                              SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;   ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  run_time = sy-uzeit - start_time.&lt;/P&gt;&lt;P&gt;  write run_time to run_time_char.&lt;/P&gt;&lt;P&gt;  concatenate w_node-text2 '- runtime' run_time_char into w_node-text2&lt;/P&gt;&lt;P&gt;                                         separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- Include header display record.&lt;/P&gt;&lt;P&gt;   w_node-tlevel = '1'.&lt;/P&gt;&lt;P&gt;   W_NODE-TLENGTH2  = 45.&lt;/P&gt;&lt;P&gt;   W_NODE-TCOLOR2    = 1.&lt;/P&gt;&lt;P&gt;   append w_node to i_node.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG.&lt;/P&gt;&lt;P&gt;*--- Main programs.&lt;/P&gt;&lt;P&gt;     w_node-tlevel = '2'.&lt;/P&gt;&lt;P&gt;     CONCATENATE 'Program -' I_PROG-TEXT INTO TEXT SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;     W_NODE-TEXT2 = I_PROG-PROG.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Description&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     STRLENGTH =  STRLEN( TEXT ).&lt;/P&gt;&lt;P&gt;     W_NODE-TLENGTH3   = STRLENGTH.&lt;/P&gt;&lt;P&gt;     W_NODE-TCOLOR3    = 4.&lt;/P&gt;&lt;P&gt;     W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;     W_NODE-TEXT3      = TEXT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    write 'Main Program' to w_node-text3.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     APPEND W_NODE TO I_NODE.&lt;/P&gt;&lt;P&gt;*--- Screens.&lt;/P&gt;&lt;P&gt;     LOOP AT I_PROG-SCREEN_FLOW INTO WA_SCREENS.&lt;/P&gt;&lt;P&gt;       W_NODE-TLEVEL = '3'.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT2 = WA_SCREENS-SCREEN.&lt;/P&gt;&lt;P&gt;       W_NODE-TLENGTH3   = 6.&lt;/P&gt;&lt;P&gt;       W_NODE-TCOLOR3    = 4.&lt;/P&gt;&lt;P&gt;       W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT3 = 'Screen'.&lt;/P&gt;&lt;P&gt;       APPEND W_NODE TO I_NODE.&lt;/P&gt;&lt;P&gt;     ENDLOOP.&lt;/P&gt;&lt;P&gt;*--- Message Classes.&lt;/P&gt;&lt;P&gt;     LOOP AT I_PROG-MESSAGES INTO WA_MESSAGES.&lt;/P&gt;&lt;P&gt;       AT NEW MSGID.&lt;/P&gt;&lt;P&gt;         W_NODE-TLEVEL = '3'.&lt;/P&gt;&lt;P&gt;         W_NODE-TEXT2 = WA_MESSAGES-MSGID.&lt;/P&gt;&lt;P&gt;         W_NODE-TLENGTH3   = 14.&lt;/P&gt;&lt;P&gt;         W_NODE-TCOLOR3    = 4.&lt;/P&gt;&lt;P&gt;         W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;         W_NODE-TEXT3 = 'Message class'.&lt;/P&gt;&lt;P&gt;         APPEND W_NODE TO I_NODE.&lt;/P&gt;&lt;P&gt;       ENDAT.&lt;/P&gt;&lt;P&gt;     ENDLOOP.&lt;/P&gt;&lt;P&gt;*--- Includes&lt;/P&gt;&lt;P&gt;     LOOP AT I_PROG-INCLUDES INTO WA_INCLUDES.&lt;/P&gt;&lt;P&gt;       w_node-tlevel = '3'.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT2 = WA_INCLUDES-PROG.&lt;/P&gt;&lt;P&gt;       W_NODE-TLENGTH3   = 8.&lt;/P&gt;&lt;P&gt;       W_NODE-TCOLOR3    = 4.&lt;/P&gt;&lt;P&gt;       W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT3 = 'Include'.&lt;/P&gt;&lt;P&gt;       APPEND W_NODE TO I_NODE.&lt;/P&gt;&lt;P&gt;     ENDLOOP.&lt;/P&gt;&lt;P&gt;*--- Dictionary structures&lt;/P&gt;&lt;P&gt;     LOOP AT I_PROG-DICT_STRUCT INTO WA_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;       w_node-tlevel = '3'.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT2 = WA_DICT_STRUCT-TABNAME.&lt;/P&gt;&lt;P&gt;       W_NODE-TLENGTH3   = 17.&lt;/P&gt;&lt;P&gt;       w_node-tcolor3    = 4.&lt;/P&gt;&lt;P&gt;       W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT3 = 'Dictionary object'.&lt;/P&gt;&lt;P&gt;       append w_node to i_node.&lt;/P&gt;&lt;P&gt;     endloop.&lt;/P&gt;&lt;P&gt;*--- Function Modules&lt;/P&gt;&lt;P&gt;     LOOP AT I_PROG-FUNCTIONS INTO WA_FUNC_STRUCT.&lt;/P&gt;&lt;P&gt;      w_node-tlevel = '3'.&lt;/P&gt;&lt;P&gt;      W_NODE-TEXT2 = WA_FUNC_STRUCT-FUNCNAME.&lt;/P&gt;&lt;P&gt;      w_node-tlength3   = 17.&lt;/P&gt;&lt;P&gt;      w_node-tcolor3    = 4.&lt;/P&gt;&lt;P&gt;      W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;      W_NODE-TEXT3 = 'Function Module'.&lt;/P&gt;&lt;P&gt;      append w_node to i_node.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " FILL_TREE_NODE&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; FILL_TREE_NODE_TABLES...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FILL_TREE_NODE_TABLES TABLES I_DICT STRUCTURE I_DICTIONARY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: W_LINES(4) TYPE C VALUE '0'.&lt;/P&gt;&lt;P&gt;DATA: W_NODE LIKE SNODETEXT.&lt;/P&gt;&lt;P&gt;DATA: WA_DICT_STRUCT TYPE T_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_DICT.&lt;/P&gt;&lt;P&gt;    AT NEW TABNAME.&lt;/P&gt;&lt;P&gt;      W_LINES = W_LINES + 1.&lt;/P&gt;&lt;P&gt;    ENDAT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF W_LINES = 1.&lt;/P&gt;&lt;P&gt;    CONCATENATE W_LINES 'table downloaded' INTO W_NODE-TEXT2&lt;/P&gt;&lt;P&gt;                                            SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CONCATENATE W_LINES 'tables downloaded' INTO W_NODE-TEXT2&lt;/P&gt;&lt;P&gt;                                             SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  run_time = sy-uzeit - start_time.&lt;/P&gt;&lt;P&gt;  write run_time to run_time_char.&lt;/P&gt;&lt;P&gt;  concatenate w_node-text2 '- runtime' run_time_char into w_node-text2&lt;/P&gt;&lt;P&gt;                                         separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*--- include header display record.&lt;/P&gt;&lt;P&gt;  w_node-tlevel = '1'.&lt;/P&gt;&lt;P&gt;  W_NODE-TLENGTH2  = 45.&lt;/P&gt;&lt;P&gt;  w_node-tcolor2    = 1.&lt;/P&gt;&lt;P&gt;  append w_node to i_node.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_DICT.&lt;/P&gt;&lt;P&gt;     MOVE-CORRESPONDING I_DICT TO WA_DICT_STRUCT.&lt;/P&gt;&lt;P&gt;     AT NEW TABNAME.&lt;/P&gt;&lt;P&gt;       W_NODE-TLEVEL = '2'.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT2 = WA_DICT_STRUCT-TABNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       W_NODE-TLENGTH3   = 60.&lt;/P&gt;&lt;P&gt;       W_NODE-TCOLOR3    = 4.&lt;/P&gt;&lt;P&gt;       W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;       W_NODE-TEXT3 = WA_DICT_STRUCT-TABTEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       APPEND W_NODE TO I_NODE.&lt;/P&gt;&lt;P&gt;     ENDAT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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; FILL_TREE_NODE_FUNCTIONS...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM FILL_TREE_NODE_FUNCTIONS TABLES I_FUNC STRUCTURE I_FUNCTIONS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: W_LINES(4) TYPE C VALUE '0'.&lt;/P&gt;&lt;P&gt;DATA: W_NODE LIKE SNODETEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE I_FUNC LINES W_LINES.&lt;/P&gt;&lt;P&gt;  IF W_LINES = 1.&lt;/P&gt;&lt;P&gt;    CONCATENATE W_LINES 'function downloaded' INTO W_NODE-TEXT2&lt;/P&gt;&lt;P&gt;                                            SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    CONCATENATE W_LINES 'functions downloaded' INTO W_NODE-TEXT2&lt;/P&gt;&lt;P&gt;                                             SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  RUN_TIME = SY-UZEIT - START_TIME.&lt;/P&gt;&lt;P&gt;  WRITE RUN_TIME TO RUN_TIME_CHAR.&lt;/P&gt;&lt;P&gt;  CONCATENATE W_NODE-TEXT2 '- runtime' RUN_TIME_CHAR INTO W_NODE-TEXT2&lt;/P&gt;&lt;P&gt;                                         SEPARATED BY SPACE.&lt;/P&gt;&lt;P&gt;*--- include header display record.&lt;/P&gt;&lt;P&gt;  w_node-tlevel = '1'.&lt;/P&gt;&lt;P&gt;  W_NODE-TLENGTH2  = 45.&lt;/P&gt;&lt;P&gt;  w_node-tcolor2    = 1.&lt;/P&gt;&lt;P&gt;  append w_node to i_node.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT I_FUNC ASCENDING BY FUNCNAME.&lt;/P&gt;&lt;P&gt;  LOOP AT I_FUNC.&lt;/P&gt;&lt;P&gt;     W_NODE-TLEVEL = '2'.&lt;/P&gt;&lt;P&gt;     W_NODE-TEXT2 = I_FUNC-FUNCNAME.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     W_NODE-TLENGTH3   = 74.&lt;/P&gt;&lt;P&gt;     W_NODE-TCOLOR3    = 4.&lt;/P&gt;&lt;P&gt;     W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;     W_NODE-TEXT3 = I_FUNC-STEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     APPEND W_NODE TO I_NODE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG_INCLUDES.&lt;/P&gt;&lt;P&gt;     W_NODE-TLEVEL = '2'.&lt;/P&gt;&lt;P&gt;     W_NODE-TEXT2 = I_PROG_INCLUDES-PROG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     w_node-tlength3   = 74.&lt;/P&gt;&lt;P&gt;     w_node-tcolor3    = 4.&lt;/P&gt;&lt;P&gt;     W_NODE-TPOS3      = 60.&lt;/P&gt;&lt;P&gt;     W_NODE-TEXT3 = 'Include'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     append w_node to i_node.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&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;DISPLAY_TREE...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM DISPLAY_TREE TABLES I_NODES STRUCTURE SNODETEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: W_NODE LIKE SNODETEXT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;build up the tree from the internal table node&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TREE_CONSTRUCT'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            NODETAB            = I_NODE&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            TREE_FAILURE       = 1&lt;/P&gt;&lt;P&gt;            ID_NOT_FOUND       = 2&lt;/P&gt;&lt;P&gt;            WRONG_RELATIONSHIP = 3&lt;/P&gt;&lt;P&gt;            OTHERS             = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get the first index and expand the whole tree&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE I_NODE INTO W_NODE INDEX 1.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'RS_TREE_EXPAND'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            NODE_ID   = W_NODE-ID&lt;/P&gt;&lt;P&gt;            ALL       = 'X'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            NOT_FOUND = 1&lt;/P&gt;&lt;P&gt;            OTHERS    = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;now display the tree&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'RS_TREE_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            CALLBACK_PROGRAM      = SY-CPROG&lt;/P&gt;&lt;P&gt;            CALLBACK_USER_COMMAND = 'CB_USER_COMMAND'&lt;/P&gt;&lt;P&gt;            CALLBACK_TEXT_DISPLAY = 'CB_TEXT_DISPLAY'&lt;/P&gt;&lt;P&gt;            CALLBACK_TOP_OF_PAGE  = 'TOP_OF_PAGE'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS                = 1.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " DISPLAY_TREE&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; TOP_OF_PAGE... for tree display routines.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="------------------------------------------------------------------" /&gt;&lt;P&gt;FORM TOP_OF_PAGE.&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;&lt;/P&gt;&lt;P&gt;[/code]&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Suresh Datti&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 09:36:18 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211160#M133508</guid>
      <dc:creator>suresh_datti</dc:creator>
      <dc:date>2006-04-05T09:36:18Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211161#M133509</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Suresh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am getting error message as 'Error when opening the download file'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;default path is coming from program as c:\temp&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;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 10:20:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211161#M133509</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T10:20:04Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211162#M133510</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;check..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://sap.ittoolbox.com/code/archives.asp?d=1623&amp;amp;a=s&amp;amp;i=10" target="test_blank"&gt;http://sap.ittoolbox.com/code/archives.asp?d=1623&amp;amp;a=s&amp;amp;i=10&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also chek this one:&lt;/P&gt;&lt;P&gt;&lt;A href="http://sap.ittoolbox.com/code/archives.asp?d=3333&amp;amp;a=s&amp;amp;i=10" target="test_blank"&gt;http://sap.ittoolbox.com/code/archives.asp?d=3333&amp;amp;a=s&amp;amp;i=10&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/download-and-upload-your-abap-program.htm" target="test_blank"&gt;http://www.sap-img.com/abap/download-and-upload-your-abap-program.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.members.tripod.com/abap4/Upload_and_Download_ABAP_Source_Code.html" target="test_blank"&gt;http://www.members.tripod.com/abap4/Upload_and_Download_ABAP_Source_Code.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.geocities.com/rmtiwari/Resources/Utilities/WebViewer.html" target="test_blank"&gt;http://www.geocities.com/rmtiwari/Resources/Utilities/WebViewer.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 10:30:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211162#M133510</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T10:30:10Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211163#M133511</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vijay,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On the selection screen of the report, give the location where you want to store for the parameter 'File path' ( instead of  c:\temp)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Suresh Datti&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 12:40:28 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211163#M133511</guid>
      <dc:creator>suresh_datti</dc:creator>
      <dc:date>2006-04-05T12:40:28Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211164#M133512</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Vijay,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you mean you want to download every R/3 program on your system?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Apr 2006 12:50:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211164#M133512</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-04-05T12:50:33Z</dc:date>
    </item>
    <item>
      <title>Re: Download all programs</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211165#M133513</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello&lt;/P&gt;&lt;P&gt;i've seen this post only now and i've tried the program for ver 4.7 and it worked fine.My question is how can i upload those files and screens on another PC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 15 Feb 2007 10:41:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-all-programs/m-p/1211165#M133513</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-02-15T10:41:34Z</dc:date>
    </item>
  </channel>
</rss>

