<?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: Save source code to a file in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364484#M180493</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;same thread...&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1371355"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 11 May 2006 07:36:25 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-05-11T07:36:25Z</dc:date>
    <item>
      <title>Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364483#M180492</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is there a possibility to save the complete scoure code of an class, function group, programm etc. to a file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;TomSd&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 07:34:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364483#M180492</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T07:34:26Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364484#M180493</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;same thread...&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1371355"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 07:36:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364484#M180493</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T07:36:25Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364485#M180494</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;yes ...make use of this program..&lt;/P&gt;&lt;P&gt;PROGRAM ZDOWN.&lt;/P&gt;&lt;P&gt;*========================================================================================================&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Direct Download Enterprise version 1.2.&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; 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 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, 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;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IN NO EVENT SHALL PROVIDER BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, SPECIAL OR INCIDENTAL DAMAGES,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; EVEN IF PROVIDER HAS BEEN ADVISED BY CLIENT OF THE POSSIBILITY OF SUCH POTENTIAL LOSS OR DAMAGE.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CLIENT AGREES TO HOLD PROVIDER HARMLESS FROM AND AGAINST ANY AND ALL CLAIMS, LOSSES, LIABILITIES AND&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; EXPENSES.  BY INSTALLING OR RUNNING 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;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PROGRAM DESCRIPTION &amp;amp; USE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Allows a user to download programs, Functions, DD definitions, etc to the presentation server.  This&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; version searches recursively for 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 within a suitable directory structure.&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; You can either search by object name, using wildcards if you wish, or a combination of Author and&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; object name.  If you want all objects returned for a particular author then select the author name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; and choose the most suitable radiobutton.  All objects will be returned if the fields to the right&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; hand side of the radiobutton are left completely blank.&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; Compatible with R/3 Enterprise only, for older versions of SAP you will need Direct Download version 5.xx.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; This version removes the programming limitations imposed by developing across SAP releases 3 to 4.6.&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; This program is intended to allow a person to keep a visual representation of a program for backup&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; purposes only as has not been designed to allow programs to be uploaded to SAP systems.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&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;AUTHOR          : E.G.Mellodew&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;PROGRAM CONTACT : direct@dalestech.com&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  &lt;A href="https://community.sap.com/www.dalestech.com" target="test_blank"&gt;www.dalestech.com&lt;/A&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text element structure&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: tTextTable like textpool.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GUI titles&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: tGUITitle like d347t.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Message classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tMessage,&lt;/P&gt;&lt;P&gt;         arbgb like t100-arbgb,&lt;/P&gt;&lt;P&gt;         stext like t100a-stext,&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 tMessage.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Screen flow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tScreenFlow,&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 tScreenFlow.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Holds a table\structure definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tDictTableStructure,&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 tdictTableStructure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Holds a tables attributes + its definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tDictTable,&lt;/P&gt;&lt;P&gt;         tablename    like dd03l-tabname,&lt;/P&gt;&lt;P&gt;         tableTitle   like dd02t-ddtext,&lt;/P&gt;&lt;P&gt;         iStructure type tDictTableStructure occurs 0,&lt;/P&gt;&lt;P&gt;       end of tDictTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Include program names&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tInclude,&lt;/P&gt;&lt;P&gt;         includeName like trdir-name,&lt;/P&gt;&lt;P&gt;         includeTitle like tftit-stext,&lt;/P&gt;&lt;P&gt;       end of tInclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tMethod,&lt;/P&gt;&lt;P&gt;         cmpName like vseomethod-cmpname,&lt;/P&gt;&lt;P&gt;         descript like vseomethod-descript,&lt;/P&gt;&lt;P&gt;         exposure like vseomethod-exposure,&lt;/P&gt;&lt;P&gt;         methodKey type string,&lt;/P&gt;&lt;P&gt;       end of tMethod.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tClass,&lt;/P&gt;&lt;P&gt;         scanned(1),&lt;/P&gt;&lt;P&gt;         clsname like vseoclass-clsname,&lt;/P&gt;&lt;P&gt;         descript like vseoclass-descript,&lt;/P&gt;&lt;P&gt;         msg_id like vseoclass-msg_id,&lt;/P&gt;&lt;P&gt;         exposure like vseoclass-exposure,&lt;/P&gt;&lt;P&gt;         state like vseoclass-state,&lt;/P&gt;&lt;P&gt;         clsfinal like vseoclass-clsfinal,&lt;/P&gt;&lt;P&gt;         r3release like vseoclass-r3release,&lt;/P&gt;&lt;P&gt;         iMethods type tMethod occurs 0,&lt;/P&gt;&lt;P&gt;         iDictStruct type tDictTable occurs 0,&lt;/P&gt;&lt;P&gt;         iTextElements type tTextTable occurs 0,&lt;/P&gt;&lt;P&gt;         iMessages type tMessage occurs 0,&lt;/P&gt;&lt;P&gt;         textElementKey type string,&lt;/P&gt;&lt;P&gt;         publicClassKey type string,&lt;/P&gt;&lt;P&gt;         privateClassKey type string,&lt;/P&gt;&lt;P&gt;         protectedClassKey type string,&lt;/P&gt;&lt;P&gt;         typesClassKey type string,&lt;/P&gt;&lt;P&gt;         exceptionClass type i,&lt;/P&gt;&lt;P&gt;       end of tClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;types: begin of tFunction,&lt;/P&gt;&lt;P&gt;         functionName like tfdir-funcName,&lt;/P&gt;&lt;P&gt;         functionGroup like enlfdir-area,&lt;/P&gt;&lt;P&gt;         includeNumber like tfdir-include,&lt;/P&gt;&lt;P&gt;         functionMainInclude like tfdir-funcName,&lt;/P&gt;&lt;P&gt;         functionTitle like tftit-stext,&lt;/P&gt;&lt;P&gt;         topIncludeName like tfdir-funcName,&lt;/P&gt;&lt;P&gt;         progname like tfdir-pname,&lt;/P&gt;&lt;P&gt;         programLinkName like tfdir-pname,&lt;/P&gt;&lt;P&gt;         messageClass like t100-arbgb,&lt;/P&gt;&lt;P&gt;         iTextElements type tTextTable occurs 0,&lt;/P&gt;&lt;P&gt;         iSelectiontexts type tTextTable occurs 0,&lt;/P&gt;&lt;P&gt;         iMessages type tMessage occurs 0,&lt;/P&gt;&lt;P&gt;         iIncludes type tInclude occurs 0,&lt;/P&gt;&lt;P&gt;         iDictStruct type tDictTable occurs 0,&lt;/P&gt;&lt;P&gt;         iGUITitle type tGUITitle occurs 0,&lt;/P&gt;&lt;P&gt;         iScreenFlow type tScreenFlow occurs 0,&lt;/P&gt;&lt;P&gt;       end of tFunction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;types: begin of tProgram,&lt;/P&gt;&lt;P&gt;         progname like trdir-name,&lt;/P&gt;&lt;P&gt;         programTitle like tftit-stext,&lt;/P&gt;&lt;P&gt;         subc like trdir-subc,&lt;/P&gt;&lt;P&gt;         messageClass like t100-arbgb,&lt;/P&gt;&lt;P&gt;         iMessages type tMessage occurs 0,&lt;/P&gt;&lt;P&gt;         iTextElements type tTextTable occurs 0,&lt;/P&gt;&lt;P&gt;         iSelectiontexts type tTextTable occurs 0,&lt;/P&gt;&lt;P&gt;         iGUITitle type tGUITitle occurs 0,&lt;/P&gt;&lt;P&gt;         iScreenFlow type tScreenFlow occurs 0,&lt;/P&gt;&lt;P&gt;         iIncludes type tInclude occurs 0,&lt;/P&gt;&lt;P&gt;         iDictStruct type tDictTable occurs 0,&lt;/P&gt;&lt;P&gt;       end of tProgram.&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; Internal tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Dictionary object&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: iDictionary type standard table of tDictTable with header line.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function modules.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: iFunctions type standard table of tFunction with header line.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Tree display structure.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: iTreeDisplay type standard table of snodetext with header line.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Message class data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: iMessages type standard table of tMessage with header line.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Holds a single message class an all of its messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: iSingleMessageClass type standard table of tMessage with header line.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Holds program related data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: iPrograms type standard table of tProgram with header line.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: iClasses type standard table of tClass with header line.&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; Table prototypes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;data: dumiDictStructure type standard table of tDictTableStructure.&lt;/P&gt;&lt;P&gt;data: dumiTextTab type standard table of tTextTable.&lt;/P&gt;&lt;P&gt;data: dumiIncludes type standard table of tInclude.&lt;/P&gt;&lt;P&gt;data: dumiHtml type standard table of string.&lt;/P&gt;&lt;P&gt;data: dumiHeader type standard table of string .&lt;/P&gt;&lt;P&gt;data: dumiScreen type standard table of tScreenFlow .&lt;/P&gt;&lt;P&gt;data: dumIGUITitle type standard table of tGUITitle.&lt;/P&gt;&lt;P&gt;data: dumiMethods type standard table of tMethod.&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;  Global objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;data: objFile type ref to cl_gui_frontend_services.&lt;/P&gt;&lt;P&gt;data: objRuntimeError type ref to cx_root.&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; Constants&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;constants: VERSIONNO type string value '1.2'.&lt;/P&gt;&lt;P&gt;constants: TABLES type string value 'TABLES'.&lt;/P&gt;&lt;P&gt;constants: LIKE type string value 'LIKE'.&lt;/P&gt;&lt;P&gt;constants: TYPE type string value 'TYPE'.&lt;/P&gt;&lt;P&gt;constants: TYPEREFTO type string value 'TYPE REF TO'.&lt;/P&gt;&lt;P&gt;constants: STRUCTURE type string value 'STRUCTURE'.&lt;/P&gt;&lt;P&gt;constants: LOWSTRUCTURE type string value 'structure'.&lt;/P&gt;&lt;P&gt;constants: OCCURS type string value 'OCCURS'.&lt;/P&gt;&lt;P&gt;constants: FUNCTION type string value 'FUNCTION'.&lt;/P&gt;&lt;P&gt;constants: CALLFUNCTION type string value ' CALL FUNCTION'.&lt;/P&gt;&lt;P&gt;constants: MESSAGE type string  value 'MESSAGE'.&lt;/P&gt;&lt;P&gt;constants: INCLUDE type string value 'INCLUDE'.&lt;/P&gt;&lt;P&gt;constants: LOWINCLUDE type string value 'include'.&lt;/P&gt;&lt;P&gt;constants: DESTINATION type string value 'DESTINATION'.&lt;/P&gt;&lt;P&gt;constants: IS_TABLE type string value 'T'.&lt;/P&gt;&lt;P&gt;constants: IS_PROGRAM type string value 'P'.&lt;/P&gt;&lt;P&gt;constants: IS_SCREEN type string value 'S'.&lt;/P&gt;&lt;P&gt;constants: IS_GUITITLE type string value 'G'.&lt;/P&gt;&lt;P&gt;constants: IS_DOCUMENTATION type string value 'D'.&lt;/P&gt;&lt;P&gt;constants: IS_MESSAGECLASS type string value 'MC'.&lt;/P&gt;&lt;P&gt;constants: IS_FUNCTION type string value 'F'.&lt;/P&gt;&lt;P&gt;constants: IS_CLASS type string value 'C'.&lt;/P&gt;&lt;P&gt;constants: IS_METHOD type string value 'M'.&lt;/P&gt;&lt;P&gt;constants: ASTERIX type string value '*'.&lt;/P&gt;&lt;P&gt;constants: COMMA type string value ','.&lt;/P&gt;&lt;P&gt;constants: PERIOD type string value '.'.&lt;/P&gt;&lt;P&gt;constants: DASH type string value '-'.&lt;/P&gt;&lt;P&gt;constants: TRUE type i value 1.&lt;/P&gt;&lt;P&gt;constants: FALSE type i value 0.&lt;/P&gt;&lt;P&gt;constants: LT type string value '&amp;amp;lt;'.&lt;/P&gt;&lt;P&gt;constants: GT type string value '&amp;amp;gt;'.&lt;/P&gt;&lt;P&gt;constants: UNIX type string value 'UNIX'.&lt;/P&gt;&lt;P&gt;constants: NON_UNIX type string value 'not UNIX'.&lt;/P&gt;&lt;P&gt;constants: BACKGROUND_COLOUR type string value '#FFFFE0'.&lt;/P&gt;&lt;P&gt;constants: COLOUR_WHITE type string value '#FFFFFF'.&lt;/P&gt;&lt;P&gt;constants: COLOUR_BLACK type string value '#000000'.&lt;/P&gt;&lt;P&gt;constants: COLOUR_YELLOW type string value '#FFFF00'.&lt;/P&gt;&lt;P&gt;constants: COMMENT_COLOUR type string value '#0000FF'.&lt;/P&gt;&lt;P&gt;constants: HTMLEXTENSION type string value 'html'.&lt;/P&gt;&lt;P&gt;constants: TEXTEXTENSION type string value 'txt'.&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; Global variables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;data: statusBarMessage(100).&lt;/P&gt;&lt;P&gt;data: forcedExit type i value 0.&lt;/P&gt;&lt;P&gt;data: startTime like sy-uzeit.&lt;/P&gt;&lt;P&gt;data: runTime like sy-uzeit.&lt;/P&gt;&lt;P&gt;data: downloadFileExtension type string.&lt;/P&gt;&lt;P&gt;data: downloadFolder type string.&lt;/P&gt;&lt;P&gt;data: slashSeparator type string.&lt;/P&gt;&lt;P&gt;data: frontendOpSystem type string.&lt;/P&gt;&lt;P&gt;data: customerNameSpace type string.&lt;/P&gt;&lt;P&gt;ranges: soProgramName for trdir-name.&lt;/P&gt;&lt;P&gt;ranges: soAuthor for usr02-bname.&lt;/P&gt;&lt;P&gt;ranges: soTable for dd02l-tabname.&lt;/P&gt;&lt;P&gt;ranges: soFunctionName  for tfdir-funcName.&lt;/P&gt;&lt;P&gt;ranges: soClassName for vseoclass-clsname.&lt;/P&gt;&lt;P&gt;ranges: soFunctionGroup for enlfdir-area.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waDictStruct&amp;gt; type tDictTable.&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; Selection screen declaration&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;selection-screen: begin of block b1 with frame title tBlock1.&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 5(23) tAuth.&lt;/P&gt;&lt;P&gt;    parameters: pAuth like usr02-bname memory id MAUTH.&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) tPmod.&lt;/P&gt;&lt;P&gt;    parameters: pMod 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;*--- Local objects&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 5(36) t$tmp.&lt;/P&gt;&lt;P&gt;    parameters: p$tmp as checkbox default ''.&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 tBlock2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    parameters: rTable radiobutton group r1.&lt;/P&gt;&lt;P&gt;    selection-screen comment 5(20) tRtable.&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) tPtable.&lt;/P&gt;&lt;P&gt;    parameters: pTable like dd02l-tabname memory id MTABLE.&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(79) tTnote.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 10(79) tTnote1.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Message classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    parameters: rMess radiobutton group r1.&lt;/P&gt;&lt;P&gt;    selection-screen comment 5(18) tPMes.&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) tMname.&lt;/P&gt;&lt;P&gt;    parameters: pMname like t100-arbgb memory id MMNAME.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    parameters: rFunc radiobutton group r1.&lt;/P&gt;&lt;P&gt;    selection-screen comment 5(30) tRfunc.&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) tPfname.&lt;/P&gt;&lt;P&gt;    parameters: pFname like tfdir-funcName memory id MFNAME.&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) tFgroup.&lt;/P&gt;&lt;P&gt;    parameters: pFgroup like enlfdir-area memory id MFGROUP.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    parameters: rClass radiobutton group r1.&lt;/P&gt;&lt;P&gt;    selection-screen comment 5(30) tRClass.&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) tPcName.&lt;/P&gt;&lt;P&gt;    parameters: pClname like seoclass-clsname memory id MCNAME.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Programs / includes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    parameters: rProg radiobutton group r1 default 'X'.&lt;/P&gt;&lt;P&gt;    selection-screen comment 5(18) tProg.&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) tRpname.&lt;/P&gt;&lt;P&gt;    parameters: pProg like trdir-name memory id MPROG.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Language&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 1(18) tMLang.&lt;/P&gt;&lt;P&gt;    parameters: pMLang like t100-sprsl default 'EN'.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Package&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 1(18) tPack.&lt;/P&gt;&lt;P&gt;    parameters: pPack like tadiv-devclass memory id MPACK.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Customer objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 1(27) tCust.&lt;/P&gt;&lt;P&gt;    parameters: pCust as checkbox default 'X'.&lt;/P&gt;&lt;P&gt;    selection-screen comment 32(25) tNRange.&lt;/P&gt;&lt;P&gt;    parameters: pCName type namespace memory id MNAMESPACE.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;selection-screen: end of block b2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Additional things to download.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;selection-screen: begin of block b3 with frame title tBlock3.&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 1(33) tPtext.&lt;/P&gt;&lt;P&gt;    parameters: pText as checkbox default 'X' memory id MTEXT.&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(33) tMess.&lt;/P&gt;&lt;P&gt;    parameters: pMess as checkbox default 'X' memory id MMESS.&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(33) tPinc.&lt;/P&gt;&lt;P&gt;    parameters: pInc as checkbox default 'X' memory id MINC.&lt;/P&gt;&lt;P&gt;    selection-screen comment 40(20) tRecc.&lt;/P&gt;&lt;P&gt;    parameters: pReci as checkbox default 'X' memory id MRECI.&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(33) tPfunc.&lt;/P&gt;&lt;P&gt;    parameters: pFunc as checkbox default 'X' memory id MFUNC.&lt;/P&gt;&lt;P&gt;    selection-screen comment 40(20) tRecf.&lt;/P&gt;&lt;P&gt;    parameters: pRecf as checkbox default 'X' memory id MRECF.&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(33) tDoc.&lt;/P&gt;&lt;P&gt;    parameters: pDoc as checkbox default 'X' memory id MDOC.&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(33) tPscr.&lt;/P&gt;&lt;P&gt;    parameters: pScr as checkbox default 'X' memory id MSCR.&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(33) tPdict.&lt;/P&gt;&lt;P&gt;    parameters: pDict as checkbox default 'X' memory id MDICT.&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(33) tSortT.&lt;/P&gt;&lt;P&gt;    parameters: pSortT as checkbox default ' ' memory id MSORTT.&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;selection-screen: end of block b3.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;File details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;selection-screen: begin of block b4 with frame title tBlock4.&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;    selection-screen comment 1(20) tPhtml.&lt;/P&gt;&lt;P&gt;    parameters: pHtml radiobutton group g1 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 5(25) tComm.&lt;/P&gt;&lt;P&gt;    parameters: pComm 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 5(25) tBack.&lt;/P&gt;&lt;P&gt;    parameters: pBack 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(20) tPtxt.&lt;/P&gt;&lt;P&gt;    parameters: pTxt radiobutton group g1.&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) tPpath.&lt;/P&gt;&lt;P&gt;    parameters: pFolder like rlgrap-filename obligatory memory id MFOLDER.&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;Display a directory picker window&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;at selection-screen on value-request for pFolder.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: objFile type ref to cl_gui_frontend_services.&lt;/P&gt;&lt;P&gt;data: pickedFolder type string.&lt;/P&gt;&lt;P&gt;data: initialFolder type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  create object objFile.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pFolder is initial.&lt;/P&gt;&lt;P&gt;    initialFolder = pFolder.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    objFile-&amp;gt;get_temp_directory( changing temp_dir = initialFolder&lt;/P&gt;&lt;P&gt;                                 exceptions cntl_error = 1&lt;/P&gt;&lt;P&gt;                                           error_no_gui = 2&lt;/P&gt;&lt;P&gt;                                           not_supported_by_gui = 3 ).&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  objFile-&amp;gt;directory_browse( exporting initial_folder = initialFolder&lt;/P&gt;&lt;P&gt;                             changing selected_folder = pickedFolder&lt;/P&gt;&lt;P&gt;                             exceptions cntl_error = 1&lt;/P&gt;&lt;P&gt;                                        error_no_gui = 2&lt;/P&gt;&lt;P&gt;                                        not_supported_by_gui = 3 ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    pFolder = pickedFolder.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    write: / 'An error has occured picking a folder'.&lt;/P&gt;&lt;P&gt;  endif.&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;initialisation&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Parameter screen texts.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  tBlock1 = 'Author (Optional)'.&lt;/P&gt;&lt;P&gt;  t$tmp   = 'Programs only: include local objects'.&lt;/P&gt;&lt;P&gt;  tBlock2 = 'Objects to download'.&lt;/P&gt;&lt;P&gt;  tBlock3 = 'Additional downloads for programs, function modules and classes'.&lt;/P&gt;&lt;P&gt;  tBlock4 = 'Download parameters'.&lt;/P&gt;&lt;P&gt;  tAuth   = 'Author name'.&lt;/P&gt;&lt;P&gt;  tPmod   = 'Include programs modified by author'.&lt;/P&gt;&lt;P&gt;  tCust   = 'Only customer objects'.&lt;/P&gt;&lt;P&gt;  tNRange = 'Alt customer name range'.&lt;/P&gt;&lt;P&gt;  tRtable = 'Tables / Structures'.&lt;/P&gt;&lt;P&gt;  tPtable = 'Table name'.&lt;/P&gt;&lt;P&gt;  tTnote  = 'Please note: tables are stored under the username of the'.&lt;/P&gt;&lt;P&gt;  tTnote1 = 'last person who modified them.'.&lt;/P&gt;&lt;P&gt;  tRfunc  = 'Function modules'.&lt;/P&gt;&lt;P&gt;  tPfname = 'Function name'.&lt;/P&gt;&lt;P&gt;  tFgroup = 'Function group'.&lt;/P&gt;&lt;P&gt;  tRClass  = 'Classes'.&lt;/P&gt;&lt;P&gt;  tPcname = 'Class name'.&lt;/P&gt;&lt;P&gt;  tMess   = 'Message class'.&lt;/P&gt;&lt;P&gt;  tMName  = 'Class name'.&lt;/P&gt;&lt;P&gt;  tMLang  = 'Language'.&lt;/P&gt;&lt;P&gt;  tProg   = 'Programs'.&lt;/P&gt;&lt;P&gt;  tRpname = 'Program name'.&lt;/P&gt;&lt;P&gt;  tPack   = 'Package'.&lt;/P&gt;&lt;P&gt;  tPtxt   = 'Text document'.&lt;/P&gt;&lt;P&gt;  tPhtml  = 'HTML document'.&lt;/P&gt;&lt;P&gt;  tComm   = 'Highlight comments'.&lt;/P&gt;&lt;P&gt;  tBack   = 'Include background colour'.&lt;/P&gt;&lt;P&gt;  tPtext  = 'Text elements'.&lt;/P&gt;&lt;P&gt;  tPinc   = 'Include programs'.&lt;/P&gt;&lt;P&gt;  tRecc   = 'Recursive search'.&lt;/P&gt;&lt;P&gt;  tPpath  = 'File path'.&lt;/P&gt;&lt;P&gt;  tPmes   = 'Message classes'.&lt;/P&gt;&lt;P&gt;  tPfunc  = 'Function modules'.&lt;/P&gt;&lt;P&gt;  tDoc    = 'Function module documentation'.&lt;/P&gt;&lt;P&gt;  tRecf   = 'Recursive search'.&lt;/P&gt;&lt;P&gt;  tPscr   = 'Screens'.&lt;/P&gt;&lt;P&gt;  tPdict  = 'Dictionary structures'.&lt;/P&gt;&lt;P&gt;  tSortT  = 'Sort table fields alphabetically'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Determine the frontend operating system type.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform determineFrontendOPSystem using slashSeparator.&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 checkComboBoxes.&lt;/P&gt;&lt;P&gt;  perform fillSelectionRanges.&lt;/P&gt;&lt;P&gt;  downloadFolder = pFolder.&lt;/P&gt;&lt;P&gt;  startTime = sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Fool the HTML routines to stop them hyperlinking anything with a space in them&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if pCName is initial.&lt;/P&gt;&lt;P&gt;    customerNameSpace  = '^'.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    customerNameSpace = pCName.&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;Main program flow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  case 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Select tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when rTable.&lt;/P&gt;&lt;P&gt;      perform retrieveTables using iDictionary[]&lt;/P&gt;&lt;P&gt;                                   soTable[]&lt;/P&gt;&lt;P&gt;                                   soAuthor[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Select message classes tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when rMess.&lt;/P&gt;&lt;P&gt;      perform retrieveMessageClass using iMessages[]&lt;/P&gt;&lt;P&gt;                                         soAuthor[]      "Author&lt;/P&gt;&lt;P&gt;                                         pMname          "Message class name&lt;/P&gt;&lt;P&gt;                                         pMLang          "Message class language&lt;/P&gt;&lt;P&gt;                                         pMod.           "Modified by author&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Select function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when rFunc.&lt;/P&gt;&lt;P&gt;      if pFName+0(1) ca ASTERIX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Restrict the search to customer objects only.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        pCust = 'X'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if pFGroup+0(1) ca ASTERIX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Restrict the search to customer objects only.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        pCust = 'X'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      perform retrieveFunctions using soFunctionName[]   "Function name&lt;/P&gt;&lt;P&gt;                                      soFunctionGroup[]  "Function group&lt;/P&gt;&lt;P&gt;                                      iFunctions[]       "Found functions&lt;/P&gt;&lt;P&gt;                                      pAuth              "Author&lt;/P&gt;&lt;P&gt;                                      pText              "Get text elements&lt;/P&gt;&lt;P&gt;                                      pScr               "Get screens&lt;/P&gt;&lt;P&gt;                                      pCust              "Customer data only&lt;/P&gt;&lt;P&gt;                                      customerNameSpace. "Customer name range&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      loop at iFunctions.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Find Dict structures, messages, functions, includes etc.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        perform scanForAdditionalFuncStuff using iFunctions[]&lt;/P&gt;&lt;P&gt;                                                 pRecI                   "Search for includes recursively&lt;/P&gt;&lt;P&gt;                                                 pRecF                   "Search for functions recursively&lt;/P&gt;&lt;P&gt;                                                 pInc                    "Search for includes&lt;/P&gt;&lt;P&gt;                                                 pFunc                   "Search for functions&lt;/P&gt;&lt;P&gt;                                                 pDict                   "search for dictionary objects&lt;/P&gt;&lt;P&gt;                                                 pMess                   "Search for messages&lt;/P&gt;&lt;P&gt;                                                 pCust                   "Customer data only&lt;/P&gt;&lt;P&gt;                                                 customerNameSpace.      "Customer name range&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Select Classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when rClass.&lt;/P&gt;&lt;P&gt;      if pClName+0(1) ca ASTERIX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Restrict the search to customer objects only.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        pCust = 'X'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform retrieveClasses using iClasses[]&lt;/P&gt;&lt;P&gt;                                    iFunctions[]&lt;/P&gt;&lt;P&gt;                                    soClassName[]       "Class name&lt;/P&gt;&lt;P&gt;                                    soAuthor[]          "Author&lt;/P&gt;&lt;P&gt;                                    customerNameSpace   "Customer name range&lt;/P&gt;&lt;P&gt;                                    pMod                "Also modified by author&lt;/P&gt;&lt;P&gt;                                    pCust               "Customer object only&lt;/P&gt;&lt;P&gt;                                    pMess               "Find messages&lt;/P&gt;&lt;P&gt;                                    pText               "Text Elements&lt;/P&gt;&lt;P&gt;                                    pDict               "Dictionary structures&lt;/P&gt;&lt;P&gt;                                    pFunc               "Get functions&lt;/P&gt;&lt;P&gt;                                    pInc                "Get includes&lt;/P&gt;&lt;P&gt;                                    pRecF               "Search recursively for functions&lt;/P&gt;&lt;P&gt;                                    pRecI               "Search recursively for includes&lt;/P&gt;&lt;P&gt;                                    'X'                 "Search recursively for classes&lt;/P&gt;&lt;P&gt;                                    pMLang.             "Language&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      loop at iFunctions.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Find Dict structures, messages, functions, includes etc.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        perform scanForAdditionalFuncStuff using iFunctions[]&lt;/P&gt;&lt;P&gt;                                                 pRecI                   "Search for includes recursively&lt;/P&gt;&lt;P&gt;                                                 pRecF                   "Search for functions recursively&lt;/P&gt;&lt;P&gt;                                                 pInc                    "Search for includes&lt;/P&gt;&lt;P&gt;                                                 pFunc                   "Search for functions&lt;/P&gt;&lt;P&gt;                                                 pDict                   "search for dictionary objects&lt;/P&gt;&lt;P&gt;                                                 pMess                   "Search for messages&lt;/P&gt;&lt;P&gt;                                                 pCust                   "Customer data only&lt;/P&gt;&lt;P&gt;                                                 customerNameSpace.      "Customer name range&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Select programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when rProg.&lt;/P&gt;&lt;P&gt;      if pProg+0(1) ca ASTERIX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Restrict the search to customer objects only.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        pCust = 'X'.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform retrievePrograms using iPrograms[]&lt;/P&gt;&lt;P&gt;                                     iFunctions[]&lt;/P&gt;&lt;P&gt;                                     soProgramName[]    "Program name&lt;/P&gt;&lt;P&gt;                                     soAuthor[]         "Author&lt;/P&gt;&lt;P&gt;                                     customerNamespace  "Customer name range&lt;/P&gt;&lt;P&gt;                                     pMod               "Also modified by author&lt;/P&gt;&lt;P&gt;                                     pCust              "Customer object only&lt;/P&gt;&lt;P&gt;                                     pMess              "Find messages&lt;/P&gt;&lt;P&gt;                                     pText              "Text Elements&lt;/P&gt;&lt;P&gt;                                     pDict              "Dictionay structures&lt;/P&gt;&lt;P&gt;                                     pFunc              "Get functions&lt;/P&gt;&lt;P&gt;                                     pInc               "Get includes&lt;/P&gt;&lt;P&gt;                                     pScr               "Get screens&lt;/P&gt;&lt;P&gt;                                     pRecF              "Search recursively for functions&lt;/P&gt;&lt;P&gt;                                     pRecI              "Search recursively for includes&lt;/P&gt;&lt;P&gt;                                     p$Tmp              "local objects&lt;/P&gt;&lt;P&gt;                                     pPack.             "Package&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;LI level="1" type="ul"&gt;&lt;P&gt;end-of-selection&lt;/P&gt;&lt;/LI&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 forcedExit = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set the file extension and output type of the file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if pTxt is initial.&lt;/P&gt;&lt;P&gt;      downloadFileExtension = HTMLEXTENSION.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      downloadFileExtension = TEXTEXTENSION.&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;  Decide what to download&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    case 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Download tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      when rTable.&lt;/P&gt;&lt;P&gt;        if not ( iDictionary[] is initial ).&lt;/P&gt;&lt;P&gt;          perform downloadDDStructures using iDictionary[]&lt;/P&gt;&lt;P&gt;                                             pFolder&lt;/P&gt;&lt;P&gt;                                             HTMLEXtension&lt;/P&gt;&lt;P&gt;                                             space&lt;/P&gt;&lt;P&gt;                                             pSortT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Free up any memory used for caching HTML versions of tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          loop at iDictionary.&lt;/P&gt;&lt;P&gt;            free memory id iDictionary-tablename.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          get time.&lt;/P&gt;&lt;P&gt;          runTime = sy-uzeit - startTime.&lt;/P&gt;&lt;P&gt;          perform fillTreeNodeTables using iDictionary[]&lt;/P&gt;&lt;P&gt;                                           iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                           runTime.&lt;/P&gt;&lt;P&gt;          clear iDictionary[].&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;    Download message class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      when rMess.&lt;/P&gt;&lt;P&gt;        if not ( iMessages[] is initial ).&lt;/P&gt;&lt;P&gt;          sort iMessages ascending by arbgb msgnr.&lt;/P&gt;&lt;P&gt;          loop at iMessages.&lt;/P&gt;&lt;P&gt;            append iMessages to iSingleMessageClass.&lt;/P&gt;&lt;P&gt;            at end of arbgb.&lt;/P&gt;&lt;P&gt;              perform downloadMessageClass using iSingleMessageClass[]&lt;/P&gt;&lt;P&gt;                                                 iMessages-arbgb&lt;/P&gt;&lt;P&gt;                                                 pFolder&lt;/P&gt;&lt;P&gt;                                                 downloadFileExtension&lt;/P&gt;&lt;P&gt;                                                 pHtml&lt;/P&gt;&lt;P&gt;                                                 space&lt;/P&gt;&lt;P&gt;                                                 pComm&lt;/P&gt;&lt;P&gt;                                                 customerNameSpace&lt;/P&gt;&lt;P&gt;                                                 pInc&lt;/P&gt;&lt;P&gt;                                                 pDict&lt;/P&gt;&lt;P&gt;                                                 pMess.&lt;/P&gt;&lt;P&gt;               clear iSingleMessageClass[].&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;           get time.&lt;/P&gt;&lt;P&gt;           runTime = sy-uzeit - startTime.&lt;/P&gt;&lt;P&gt;           perform fillTreeNodeMessages using iMessages[]&lt;/P&gt;&lt;P&gt;                                              iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                              runTime.&lt;/P&gt;&lt;P&gt;           clear iMessages[].&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;    Download functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      when rFunc.&lt;/P&gt;&lt;P&gt;        if not ( iFunctions[] is initial ).&lt;/P&gt;&lt;P&gt;           perform downloadFunctions using iFunctions[]&lt;/P&gt;&lt;P&gt;                                           pFolder&lt;/P&gt;&lt;P&gt;                                           downloadFileExtension&lt;/P&gt;&lt;P&gt;                                           space&lt;/P&gt;&lt;P&gt;                                           pDoc&lt;/P&gt;&lt;P&gt;                                           pHtml&lt;/P&gt;&lt;P&gt;                                           pComm&lt;/P&gt;&lt;P&gt;                                           customerNameSpace&lt;/P&gt;&lt;P&gt;                                           pInc&lt;/P&gt;&lt;P&gt;                                           pDict&lt;/P&gt;&lt;P&gt;                                           TEXTEXTENSION&lt;/P&gt;&lt;P&gt;                                           HTMLEXTENSION&lt;/P&gt;&lt;P&gt;                                           pSortT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Free up any memory used for caching HTML versions of tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          loop at iFunctions.&lt;/P&gt;&lt;P&gt;            loop at iFunctions-iDictStruct assigning &amp;lt;waDictStruct&amp;gt;.&lt;/P&gt;&lt;P&gt;              free memory id &amp;lt;waDictStruct&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;            endloop.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          get time.&lt;/P&gt;&lt;P&gt;          runTime = sy-uzeit - startTime.&lt;/P&gt;&lt;P&gt;          perform fillTreeNodeFunctions using iFunctions[]&lt;/P&gt;&lt;P&gt;                                              iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                              runTime.&lt;/P&gt;&lt;P&gt;          clear iFunctions[].&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;    Download Classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      when rClass.&lt;/P&gt;&lt;P&gt;        if not ( iClasses[] is initial ).&lt;/P&gt;&lt;P&gt;          perform downloadClasses using iClasses[]&lt;/P&gt;&lt;P&gt;                                        iFunctions[]&lt;/P&gt;&lt;P&gt;                                        pFolder&lt;/P&gt;&lt;P&gt;                                        downloadFileExtension&lt;/P&gt;&lt;P&gt;                                        HTMLEXTENSION&lt;/P&gt;&lt;P&gt;                                        TEXTEXTENSION&lt;/P&gt;&lt;P&gt;                                        pHtml&lt;/P&gt;&lt;P&gt;                                        pComm&lt;/P&gt;&lt;P&gt;                                        customerNameSpace&lt;/P&gt;&lt;P&gt;                                        pInc&lt;/P&gt;&lt;P&gt;                                        pDict&lt;/P&gt;&lt;P&gt;                                        pDoc&lt;/P&gt;&lt;P&gt;                                        pSortT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Free up any memory used for caching HTML versions of tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          loop at iFunctions.&lt;/P&gt;&lt;P&gt;            loop at iFunctions-iDictStruct assigning &amp;lt;waDictStruct&amp;gt;..&lt;/P&gt;&lt;P&gt;              free memory id &amp;lt;waDictStruct&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;            endloop.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Free up any memory used for caching HTML versions of tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          loop at iPrograms.&lt;/P&gt;&lt;P&gt;            loop at iPrograms-iDictStruct assigning &amp;lt;waDictStruct&amp;gt;..&lt;/P&gt;&lt;P&gt;              free memory id &amp;lt;waDictStruct&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;            endloop.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           get time.&lt;/P&gt;&lt;P&gt;           runTime = sy-uzeit - startTime.&lt;/P&gt;&lt;P&gt;           perform fillTreeNodeClasses using iClasses[]&lt;/P&gt;&lt;P&gt;                                             iFunctions[]&lt;/P&gt;&lt;P&gt;                                             iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                             runTime.&lt;/P&gt;&lt;P&gt;           clear iClasses[].&lt;/P&gt;&lt;P&gt;           clear iFunctions[].&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;    Download programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      when rProg.&lt;/P&gt;&lt;P&gt;        if not ( iPrograms[] is initial ).&lt;/P&gt;&lt;P&gt;          perform downloadPrograms using iPrograms[]&lt;/P&gt;&lt;P&gt;                                         iFunctions[]&lt;/P&gt;&lt;P&gt;                                         pFolder&lt;/P&gt;&lt;P&gt;                                         downloadFileExtension&lt;/P&gt;&lt;P&gt;                                         HTMLEXTENSION&lt;/P&gt;&lt;P&gt;                                         TEXTEXTENSION&lt;/P&gt;&lt;P&gt;                                         pHtml&lt;/P&gt;&lt;P&gt;                                         pComm&lt;/P&gt;&lt;P&gt;                                         customerNameSpace&lt;/P&gt;&lt;P&gt;                                         pInc&lt;/P&gt;&lt;P&gt;                                         pDict&lt;/P&gt;&lt;P&gt;                                         pDoc&lt;/P&gt;&lt;P&gt;                                         pSortT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Free up any memory used for caching HTML versions of tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          loop at iFunctions.&lt;/P&gt;&lt;P&gt;            loop at iFunctions-iDictStruct assigning &amp;lt;waDictStruct&amp;gt;..&lt;/P&gt;&lt;P&gt;              free memory id &amp;lt;waDictStruct&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;            endloop.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Free up any memory used for caching HTML versions of tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          loop at iPrograms.&lt;/P&gt;&lt;P&gt;            loop at iPrograms-iDictStruct assigning &amp;lt;waDictStruct&amp;gt;..&lt;/P&gt;&lt;P&gt;              free memory id &amp;lt;waDictStruct&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;            endloop.&lt;/P&gt;&lt;P&gt;          endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           get time.&lt;/P&gt;&lt;P&gt;           runTime = sy-uzeit - startTime.&lt;/P&gt;&lt;P&gt;           perform fillTreeNodePrograms using iPrograms[]&lt;/P&gt;&lt;P&gt;                                              iFunctions[]&lt;/P&gt;&lt;P&gt;                                              iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                              runTime.&lt;/P&gt;&lt;P&gt;           clear iPrograms[].&lt;/P&gt;&lt;P&gt;           clear iFunctions[].&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 ( iTreeDisplay[] is initial ).&lt;/P&gt;&lt;P&gt;      perform displayTree using iTreeDisplay[].&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      statusBarMessage = 'No items found matching selection criteria'.&lt;/P&gt;&lt;P&gt;      perform displayStatus using statusBarMessage 1.&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;*--- Memory IDs&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;User name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MAUTH' field pAuth.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Table name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MTABLE' field pTable.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Message class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MMNAME' field pMname.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MFNAME' field pFName.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function group&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MFGROUP' field pFgroup.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MCNAME' field pClName.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MPROG' field pProg.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Customer namespace&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MNAMESPACE' field pCName.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Folder&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MFOLDER' field pFolder.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Package&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MPACK' field pPack.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Text element checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MTEXT' field pText.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Messages checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MMESS' field pMess.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Includes checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MINC' field pInc.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Recursive includes checkbox.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MRECI' field pReci.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Functions checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MFUNC' field pFunc.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Recursive functions checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MRECF' field pRecf.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Function module documntation checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MDOC' field pDoc.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Screens checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MSCR' field pScr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dictionary checkbox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MDICT' field pDict.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Sort table ascending checkBox&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  set parameter id 'MSORTT' field pSortT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;********************************************************************************************************&lt;/P&gt;&lt;P&gt;****************************************&lt;STRONG&gt;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; checkComboBoxes...  Check input parameters&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form checkComboBoxes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if pAuth is initial.&lt;/P&gt;&lt;P&gt;    case 'X'.&lt;/P&gt;&lt;P&gt;      when rTable.&lt;/P&gt;&lt;P&gt;        if pTable is initial.&lt;/P&gt;&lt;P&gt;          statusBarMessage = 'You must enter either a table name or author.'.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      when rFunc.&lt;/P&gt;&lt;P&gt;        if ( pFName is initial ) and ( pFGroup is initial ).&lt;/P&gt;&lt;P&gt;          if pFName is initial.&lt;/P&gt;&lt;P&gt;            statusBarMessage = 'You must enter either a function name or author.'.&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;P&gt;            if pFGroup is initial.&lt;/P&gt;&lt;P&gt;              statusBarMessage = 'You must enter either a function group, or an author name.'.&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;      when rProg.&lt;/P&gt;&lt;P&gt;        if pProg is initial.&lt;/P&gt;&lt;P&gt;            statusBarMessage = 'You must enter either a program name or author name.'.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check the user name of the person objects are to be downloaded for&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    if pAuth = 'SAP*' or pauth = 'SAP'.&lt;/P&gt;&lt;P&gt;      statusBarMessage = 'Sorry cannot download all objects for SAP standard user'.&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 statusBarMessage is initial.&lt;/P&gt;&lt;P&gt;    perform displayStatus using statusBarMessage 3.&lt;/P&gt;&lt;P&gt;    forcedExit = 1.&lt;/P&gt;&lt;P&gt;    stop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                                "checkComboBoxes&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;fillSelectionRanges...      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 fillSelectionRanges.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: valueToFind type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pAuth is initial.&lt;/P&gt;&lt;P&gt;    soAuthor-sign = 'I'.&lt;/P&gt;&lt;P&gt;    soAuthor-option = 'EQ'.&lt;/P&gt;&lt;P&gt;    soAuthor-low = pAuth.&lt;/P&gt;&lt;P&gt;    append soAuthor.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pTable is initial.&lt;/P&gt;&lt;P&gt;    if not pcName is initial and not pTable+0(1) = '/'.&lt;/P&gt;&lt;P&gt;      concatenate pcName pTable into valueToFind.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      valueTofind = pTable.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    soTable-sign = 'I'.&lt;/P&gt;&lt;P&gt;    soTable-option = 'EQ'.&lt;/P&gt;&lt;P&gt;    soTable-low = valueToFind.&lt;/P&gt;&lt;P&gt;    append soTable.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pFName is initial.&lt;/P&gt;&lt;P&gt;    if not pcName is initial and not pFName+0(1) = '/'.&lt;/P&gt;&lt;P&gt;      concatenate pcName pFName into valueToFind.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      valueTofind = pFName.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    soFunctionName-sign = 'I'.&lt;/P&gt;&lt;P&gt;    perform addOption using valueToFind soFunctionName-option.&lt;/P&gt;&lt;P&gt;    soFunctionName-low = valueToFind.&lt;/P&gt;&lt;P&gt;    append soFunctionName.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pFGroup is initial.&lt;/P&gt;&lt;P&gt;    if not pcName is initial and not pFGroup+0(1) = '/'.&lt;/P&gt;&lt;P&gt;      concatenate pcName pFGroup into valueToFind.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      valueTofind = pFGroup.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    soFunctionGroup-sign = 'I'.&lt;/P&gt;&lt;P&gt;    perform addOption using valueToFind sofunctionGroup-option.&lt;/P&gt;&lt;P&gt;    soFunctionGroup-low = valueToFind.&lt;/P&gt;&lt;P&gt;    append soFunctionGroup.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pClName is initial.&lt;/P&gt;&lt;P&gt;    if not pcName is initial and not pClname+0(1) = '/'.&lt;/P&gt;&lt;P&gt;      concatenate pcName pClname into valueToFind.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      valueTofind = pClname.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    soClassName-sign = 'I'.&lt;/P&gt;&lt;P&gt;    perform addOption using valueToFind soClassName-option.&lt;/P&gt;&lt;P&gt;    soClassName-low = valueToFind.&lt;/P&gt;&lt;P&gt;    append soClassName.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pProg is initial.&lt;/P&gt;&lt;P&gt;    if not pcName is initial and not pProg+0(1) = '/'.&lt;/P&gt;&lt;P&gt;      concatenate pcName pProg into valueToFind.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      valueTofind = pProg.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    soProgramName-sign = 'I'.&lt;/P&gt;&lt;P&gt;    perform addOption using valueToFind soProgramName-option.&lt;/P&gt;&lt;P&gt;    soProgramName-low = valueTofind.&lt;/P&gt;&lt;P&gt;    append soProgramName.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                           " fillSelectionRanges&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; addOption...  fills the option value of ranges&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form addOption using value(valueToFind)&lt;/P&gt;&lt;P&gt;                           option.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if valueToFind ca ASTERIX.&lt;/P&gt;&lt;P&gt;    option = 'CP'.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    option = 'EQ'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                                "addOption&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; retrieveTables...             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 retrieveTables using iLocDictStructure like iDictionary[]&lt;/P&gt;&lt;P&gt;                          soTable like soTable[]&lt;/P&gt;&lt;P&gt;                          soAuthor like soAuthor[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waDictStructure type tDictTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select tabname from dd02l into waDictStructure-tablename&lt;/P&gt;&lt;P&gt;                            where tabname in soTable&lt;/P&gt;&lt;P&gt;                              and tabclass &amp;lt;&amp;gt; 'CLUSTER'&lt;/P&gt;&lt;P&gt;                              and tabclass &amp;lt;&amp;gt; 'POOL'&lt;/P&gt;&lt;P&gt;                              and tabclass &amp;lt;&amp;gt; 'VIEW'&lt;/P&gt;&lt;P&gt;                              and as4user in soAuthor&lt;/P&gt;&lt;P&gt;                              and as4local = 'A'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform findTableDescription using waDictStructure-tablename&lt;/P&gt;&lt;P&gt;                                       waDictStructure-tableTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform findTableDefinition using waDictStructure-tableName&lt;/P&gt;&lt;P&gt;                                      waDictStructure-iStructure[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append waDictStructure to iLocDictStructure.&lt;/P&gt;&lt;P&gt;    clear waDictStructure.&lt;/P&gt;&lt;P&gt;  endselect.&lt;/P&gt;&lt;P&gt;endform.                                                                                "retrieveTables&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; findTableDescription...  Search for table description 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 findTableDescription using value(tableName)&lt;/P&gt;&lt;P&gt;                                      tableDescription.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    select single ddtext from dd02t into tableDescription&lt;/P&gt;&lt;P&gt;                                    where tabname = tableName&lt;/P&gt;&lt;P&gt;                                      and ddlanguage = sy-langu.&lt;/P&gt;&lt;P&gt;endform.                                                                           "findTableDescription&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; findTableDefinition... Find the structure of a table from the 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 findTableDefinition using value(tablename)&lt;/P&gt;&lt;P&gt;                               iDictStruct like dumIDictStructure[].&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 type standard table of DD03P with header line.&lt;/P&gt;&lt;P&gt;data: waDictStruct type tDictTableStructure.&lt;/P&gt;&lt;P&gt;&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          = tablename&lt;/P&gt;&lt;P&gt;            STATE         = 'A'&lt;/P&gt;&lt;P&gt;            LANGU         = sy-langu&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;    loop at definition.&lt;/P&gt;&lt;P&gt;      move-corresponding definition to waDictStruct.&lt;/P&gt;&lt;P&gt;      perform removeLeadingZeros changing waDictStruct-position.&lt;/P&gt;&lt;P&gt;      perform removeLeadingZeros changing waDictStruct-leng.&lt;/P&gt;&lt;P&gt;      append waDictStruct to iDictStruct.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                            "findTableDefinition&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; retrieveMessageClass...   Retrieve a message class from the 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 retrieveMessageClass using iLocMessages like iMessages[]&lt;/P&gt;&lt;P&gt;                                rangeAuthor like soAuthor[]&lt;/P&gt;&lt;P&gt;                                value(messageClassName)&lt;/P&gt;&lt;P&gt;                                value(messageClassLang)&lt;/P&gt;&lt;P&gt;                                value(modifiedBy).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waMessage type tMessage.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not messageClassName is initial.&lt;/P&gt;&lt;P&gt;    select * from t100&lt;/P&gt;&lt;P&gt;             appending corresponding fields of table iLocMessages&lt;/P&gt;&lt;P&gt;             where sprsl = messageClassLang&lt;/P&gt;&lt;P&gt;               and arbgb = messageClassName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at iLocMessages into waMessage.&lt;/P&gt;&lt;P&gt;      select single stext from t100a&lt;/P&gt;&lt;P&gt;                          into waMessage-stext where arbgb = waMessage-arbgb.&lt;/P&gt;&lt;P&gt;      modify iLocMessages from waMessage index sy-tabix.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    if modifiedBy is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select by author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select t100~arbgb&lt;/P&gt;&lt;P&gt;             t100~msgnr&lt;/P&gt;&lt;P&gt;             t100~text&lt;/P&gt;&lt;P&gt;             t100a~stext&lt;/P&gt;&lt;P&gt;             appending corresponding fields of table iLocMessages&lt;/P&gt;&lt;P&gt;               from t100&lt;/P&gt;&lt;P&gt;               inner join t100a on t100a&lt;SUB&gt;arbgb = t100&lt;/SUB&gt;arbgb&lt;/P&gt;&lt;P&gt;               where t100a&lt;SUB&gt;masterLang = messageClassLang and t100a&lt;/SUB&gt;respUser in rangeAuthor[].&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select also by the last person who modified the message class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select t100~arbgb&lt;/P&gt;&lt;P&gt;             t100~msgnr&lt;/P&gt;&lt;P&gt;             t100~text&lt;/P&gt;&lt;P&gt;             t100a~stext&lt;/P&gt;&lt;P&gt;             appending corresponding fields of table iLocMessages&lt;/P&gt;&lt;P&gt;             from t100&lt;/P&gt;&lt;P&gt;             inner join t100a on t100a&lt;SUB&gt;arbgb = t100&lt;/SUB&gt;arbgb&lt;/P&gt;&lt;P&gt;             where t100a~masterLang = messageClassLang&lt;/P&gt;&lt;P&gt;               and t100a~respUser in rangeAuthor[]&lt;/P&gt;&lt;P&gt;               and t100a~lastUser in rangeAuthor[].&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                          "retrieveMessageClass&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; retrieveFunctions...   Retrieve function modules from SAP DB.  May be called in one of two ways&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form retrieveFunctions using soFName like soFunctionName[]&lt;/P&gt;&lt;P&gt;                             soFGroup like soFunctionGroup[]&lt;/P&gt;&lt;P&gt;                             iFunctionNames like iFunctions[]&lt;/P&gt;&lt;P&gt;                             value(author)&lt;/P&gt;&lt;P&gt;                             value(getTextElements)&lt;/P&gt;&lt;P&gt;                             value(getScreens)&lt;/P&gt;&lt;P&gt;                             value(customerOnly)&lt;/P&gt;&lt;P&gt;                             value(customerNameRange).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ranges: rangeFuncName  for tfdir-funcName.&lt;/P&gt;&lt;P&gt;ranges: rangefuncGroup for enlfdir-area.&lt;/P&gt;&lt;P&gt;data: waFunctionName type tFunction.&lt;/P&gt;&lt;P&gt;data: previousFG type v_fdir-area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  rangeFuncName[] = soFName[].&lt;/P&gt;&lt;P&gt;  rangeFuncGroup[] = soFGroup[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pAuth is initial and ( soFname[] is initial and soFGroup is initial ).&lt;/P&gt;&lt;P&gt;*-- Need to select all function groups by author&lt;/P&gt;&lt;P&gt;    select area from tlibv into rangeFuncGroup-low where uname = author.&lt;/P&gt;&lt;P&gt;      rangeFuncGroup-sign = 'I'.&lt;/P&gt;&lt;P&gt;      rangeFuncGroup-option = 'EQ'.&lt;/P&gt;&lt;P&gt;      append rangeFuncGroup.&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 funcName area from v_fdir&lt;/P&gt;&lt;P&gt;                  into (waFunctionName-functionName, waFunctionName-functionGroup)&lt;/P&gt;&lt;P&gt;                  where funcName in rangeFuncName&lt;/P&gt;&lt;P&gt;                    and area in rangeFuncGroup&lt;/P&gt;&lt;P&gt;                    and generated = ''&lt;/P&gt;&lt;P&gt;                    order by area.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform retrieveFunctionDetail using waFunctionName-functionName&lt;/P&gt;&lt;P&gt;                                         waFunctionName-progname&lt;/P&gt;&lt;P&gt;                                         waFunctionName-includeNumber&lt;/P&gt;&lt;P&gt;                                         waFunctionName-functionTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform findMainFunctionInclude using waFunctionName-progname&lt;/P&gt;&lt;P&gt;                                          waFunctionName-includeNumber&lt;/P&gt;&lt;P&gt;                                          waFunctionName-functionMainInclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform findFunctionTopInclude using waFunctionName-progname&lt;/P&gt;&lt;P&gt;                                         waFunctionName-topIncludeName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find all user defined includes within the function group&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform scanForFunctionIncludes using waFunctionName-progname&lt;/P&gt;&lt;P&gt;                                          customerOnly&lt;/P&gt;&lt;P&gt;                                          customerNameRange&lt;/P&gt;&lt;P&gt;                                          waFunctionName-iIncludes[].&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find main message class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform findMainMessageClass using waFunctionName-progname&lt;/P&gt;&lt;P&gt;                                       waFunctionName-messageClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find any screens declared within the main include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not getScreens is initial.&lt;/P&gt;&lt;P&gt;      if previousFG is initial&lt;/P&gt;&lt;P&gt;         or previousFG &amp;lt;&amp;gt; waFunctionName-functionGroup.&lt;/P&gt;&lt;P&gt;        perform findFunctionScreenFlow using waFunctionName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Search for any GUI texts&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        perform retrieveGUITitles using waFunctionName-iGUITitle[]&lt;/P&gt;&lt;P&gt;                                        waFunctionName-progname.&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 getTextElements is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Find the program texts from out of the database.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      perform retrieveProgramTexts using waFunctionName-iSelectionTexts[]&lt;/P&gt;&lt;P&gt;                                         waFunctionName-iTextElements[]&lt;/P&gt;&lt;P&gt;                                         waFunctionName-progname.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append waFunctionName to iFunctionNames.&lt;/P&gt;&lt;P&gt;    previousFG = waFunctionName-functionGroup.&lt;/P&gt;&lt;P&gt;    clear waFunctionName.&lt;/P&gt;&lt;P&gt;  endselect.&lt;/P&gt;&lt;P&gt;endform.                                                                              "retrieveFunctions&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; retrieveFunctionDetail...   Retrieve function module details 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 retrieveFunctionDetail using value(functionName)&lt;/P&gt;&lt;P&gt;                                        progname&lt;/P&gt;&lt;P&gt;                                        includeName&lt;/P&gt;&lt;P&gt;                                        titleText.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single pname include&lt;/P&gt;&lt;P&gt;                from tfdir&lt;/P&gt;&lt;P&gt;                into (progname, includeName)&lt;/P&gt;&lt;P&gt;                where funcName = functionName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    select single stext from tftit&lt;/P&gt;&lt;P&gt;                  into titleText&lt;/P&gt;&lt;P&gt;                  where spras = sy-langu&lt;/P&gt;&lt;P&gt;                    and funcName = functionName.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                         "retrieveFunctionDetail&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; findMainFunctionInclude...  Find the main include that contains the source code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findMainFunctionInclude using value(programName)&lt;/P&gt;&lt;P&gt;                                   value(includeNo)&lt;/P&gt;&lt;P&gt;                                         internalIncludeName.&lt;/P&gt;&lt;P&gt;data: newIncludeNumber type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate '%U' includeNo into newIncludeNumber.&lt;/P&gt;&lt;P&gt;  select single include from d010inc&lt;/P&gt;&lt;P&gt;                        into internalIncludeName&lt;/P&gt;&lt;P&gt;                        where master = programName&lt;/P&gt;&lt;P&gt;                        and include like newIncludeNumber.&lt;/P&gt;&lt;P&gt;endform.                                                                        "findMainFunctionInclude&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; findFunctionTopInclude...  Find the top include for the function group&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findFunctionTopInclude using value(programName)&lt;/P&gt;&lt;P&gt;                                        topIncludeName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single include from d010inc&lt;/P&gt;&lt;P&gt;                        into topIncludeName&lt;/P&gt;&lt;P&gt;                        where master = programName&lt;/P&gt;&lt;P&gt;                        and include like '%TOP'.&lt;/P&gt;&lt;P&gt;endform.                                                                        "findFunctionTopInclude&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;scanForAdditionalFuncStuff... Search for additional things relating to functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForAdditionalFuncStuff using iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                                      value(recursiveIncludes)&lt;/P&gt;&lt;P&gt;                                      value(recursiveFunctions)&lt;/P&gt;&lt;P&gt;                                      value(searchForIncludes)&lt;/P&gt;&lt;P&gt;                                      value(searchForFunctions)&lt;/P&gt;&lt;P&gt;                                      value(searchForDictionary)&lt;/P&gt;&lt;P&gt;                                      value(searchForMessages)&lt;/P&gt;&lt;P&gt;                                      value(customerOnly)&lt;/P&gt;&lt;P&gt;                                      value(customerNameRange).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waFunction type tFunction.&lt;/P&gt;&lt;P&gt;data: waInclude type tInclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocFunctions into waFunction.&lt;/P&gt;&lt;P&gt;    if not searchForIncludes is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Search in the main include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      perform scanForIncludePrograms using waFunction-functionMainInclude&lt;/P&gt;&lt;P&gt;                                           recursiveIncludes&lt;/P&gt;&lt;P&gt;                                           customerOnly&lt;/P&gt;&lt;P&gt;                                           customerNameRange&lt;/P&gt;&lt;P&gt;                                           waFunction-iIncludes[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Search in the top include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      perform scanForIncludePrograms using waFunction-topIncludeName&lt;/P&gt;&lt;P&gt;                                           recursiveIncludes&lt;/P&gt;&lt;P&gt;                                           customerOnly&lt;/P&gt;&lt;P&gt;                                           customerNameRange&lt;/P&gt;&lt;P&gt;                                           waFunction-iIncludes[].&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not searchForFunctions is initial.&lt;/P&gt;&lt;P&gt;      perform scanForFunctions using waFunction-functionMainInclude&lt;/P&gt;&lt;P&gt;                                     waFunction-programLinkName&lt;/P&gt;&lt;P&gt;                                     recursiveIncludes&lt;/P&gt;&lt;P&gt;                                     recursiveFunctions&lt;/P&gt;&lt;P&gt;                                     customerOnly&lt;/P&gt;&lt;P&gt;                                     customerNameRange&lt;/P&gt;&lt;P&gt;                                     iLocFunctions[].&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    modify iLocFunctions from waFunction.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Now we have everthing perhaps we had better find all the dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not searchForDictionary is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocFunctions into waFunction.&lt;/P&gt;&lt;P&gt;      perform scanForTables using waFunction-progname&lt;/P&gt;&lt;P&gt;                                  customerOnly&lt;/P&gt;&lt;P&gt;                                  customerNameRange&lt;/P&gt;&lt;P&gt;                                  waFunction-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForLikeOrType using waFunction-progname&lt;/P&gt;&lt;P&gt;                                      customerOnly&lt;/P&gt;&lt;P&gt;                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                      waFunction-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      loop at waFunction-iIncludes into waInclude.&lt;/P&gt;&lt;P&gt;        perform scanForTables using waInclude-includeName&lt;/P&gt;&lt;P&gt;                                    customerOnly&lt;/P&gt;&lt;P&gt;                                    customerNameRange&lt;/P&gt;&lt;P&gt;                                    waFunction-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform scanForLikeOrType using waInclude-includeName&lt;/P&gt;&lt;P&gt;                                        customerOnly&lt;/P&gt;&lt;P&gt;                                        customerNameRange&lt;/P&gt;&lt;P&gt;                                        waFunction-iDictStruct[].&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    modify iLocFunctions from waFunction.&lt;/P&gt;&lt;P&gt;    endloop.&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;Now search for all messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not searchForMessages is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocFunctions into waFunction.&lt;/P&gt;&lt;P&gt;      perform scanForMessages using waFunction-progName&lt;/P&gt;&lt;P&gt;                                    waFunction-messageClass&lt;/P&gt;&lt;P&gt;                                    waFunction-iMessages[].&lt;/P&gt;&lt;P&gt;    modify iLocFunctions from waFunction.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                     "scanForAdditionalFuncStuff&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;scanForClasses... Search each class or method for other classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForClasses using value(className)&lt;/P&gt;&lt;P&gt;                          value(classLinkName)&lt;/P&gt;&lt;P&gt;                          value(customerOnly)&lt;/P&gt;&lt;P&gt;                          value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                iLocClasses like iClasses[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: head type string.&lt;/P&gt;&lt;P&gt;data: tail type string.&lt;/P&gt;&lt;P&gt;data: lineLength type i value 0.&lt;/P&gt;&lt;P&gt;data: waLine type string.&lt;/P&gt;&lt;P&gt;data: waClass type tClass.&lt;/P&gt;&lt;P&gt;data: castClassName type program.&lt;/P&gt;&lt;P&gt;data: exceptionCustomerNameRange type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build the name of the possible cusotmer exception classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  concatenate customerNameRange 'CX_' into  exceptionCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the program code from the textpool.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  castClassName = className.&lt;/P&gt;&lt;P&gt;  read report castClassName into iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLines into waLine.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find custom tables.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    lineLength = strLen( waLine ).&lt;/P&gt;&lt;P&gt;    if lineLength &amp;gt; 0.&lt;/P&gt;&lt;P&gt;      if waLine(1) = ASTERIX.&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 waLine to upper case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      find TYPEREFTO in waLine ignoring case.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Have found a reference to another class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        split waLine at TYPE into head tail.&lt;/P&gt;&lt;P&gt;        shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;        split tail at 'REF' into head tail.&lt;/P&gt;&lt;P&gt;        shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;        split tail at 'TO' into head tail.&lt;/P&gt;&lt;P&gt;        shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;        if tail cs PERIOD.&lt;/P&gt;&lt;P&gt;          split tail at PERIOD into head tail.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          if tail cs COMMA.&lt;/P&gt;&lt;P&gt;            split tail at COMMA into head tail.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Try and find classes which are only referenced through static mehods&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        find '=&amp;gt;' in waLine match offset sy-fdpos.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          head = waline+0(sy-fdpos).&lt;/P&gt;&lt;P&gt;          shift head left deleting leading space.&lt;/P&gt;&lt;P&gt;          condense head.&lt;/P&gt;&lt;P&gt;          find 'call method' in head ignoring case.&lt;/P&gt;&lt;P&gt;          if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;            shift head left deleting leading space.&lt;/P&gt;&lt;P&gt;            split head at space into head tail.&lt;/P&gt;&lt;P&gt;            split tail at space into head tail.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Should have the class name here&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            head = tail.&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Still have a class name even though it does not have the words call method in front&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if waLine cs '='.&lt;/P&gt;&lt;P&gt;              split waLine at '=' into tail head.&lt;/P&gt;&lt;P&gt;              shift head left deleting leading space.&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;            sy-subrc = 0.&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 sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        try.&lt;/P&gt;&lt;P&gt;          if head&lt;EM&gt;0(1) = 'Y' or head&lt;/EM&gt;0(1) = 'Z' or head cs customerNameRange.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          We have found a class best append it to our class table if we do not already have it.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            read table iLocClasses into waClass with key clsName = head.&lt;/P&gt;&lt;P&gt;            if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;              if head+0(3) = 'CX_'&lt;/P&gt;&lt;P&gt;                 or head+0(4) = 'ZCX_'&lt;/P&gt;&lt;P&gt;                 or head+0(4) = 'YCX_'&lt;/P&gt;&lt;P&gt;                 or head cs exceptionCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                waClass-exceptionClass = TRUE.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              waClass-clsname = head.&lt;/P&gt;&lt;P&gt;              append waClass to iLocClasses.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;          catch cx_sy_range_out_of_bounds.&lt;/P&gt;&lt;P&gt;        endtry.&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.                                                                                "scanForClasses&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;scanForIncludePrograms... 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 scanForIncludePrograms using value(programName)&lt;/P&gt;&lt;P&gt;                                  value(recursiveIncludes)&lt;/P&gt;&lt;P&gt;                                  value(customerOnly)&lt;/P&gt;&lt;P&gt;                                  value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                        iLocIncludes like dumiIncludes[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iIncludeLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iTokens type standard table of stokes with header line.&lt;/P&gt;&lt;P&gt;data: iKeywords type standard table of text20 with header line.&lt;/P&gt;&lt;P&gt;data: iStatements type standard table of sstmnt with header line.&lt;/P&gt;&lt;P&gt;data: waTokens type stokes.&lt;/P&gt;&lt;P&gt;data: waInclude type tInclude.&lt;/P&gt;&lt;P&gt;data: waIncludeExists type tInclude.&lt;/P&gt;&lt;P&gt;data: maxLines type i.&lt;/P&gt;&lt;P&gt;data: nextLine type i.&lt;/P&gt;&lt;P&gt;data: castProgramName type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the program code from the textpool.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  castProgramName = programName.&lt;/P&gt;&lt;P&gt;  read report castProgramName into iIncludeLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append INCLUDE to iKeywords.&lt;/P&gt;&lt;P&gt;  scan abap-source iIncludeLines tokens into iTokens with includes statements into iStatements keywords from iKeywords.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear iIncludeLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  maxLines = lines( iTokens ).&lt;/P&gt;&lt;P&gt;  loop at iTokens where str = INCLUDE and type = 'I'.&lt;/P&gt;&lt;P&gt;     nextLine = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;     if nextLine &amp;lt;= maxLines.&lt;/P&gt;&lt;P&gt;       read table iTokens index nextLine into waTokens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Are we only to find customer includes?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       if not customerOnly is initial.&lt;/P&gt;&lt;P&gt;         try.&lt;/P&gt;&lt;P&gt;           if waTokens-str&lt;EM&gt;0(1) = 'Y' or waTokens-str&lt;/EM&gt;0(1) = 'Z' or waTokens-str cs customerNameRange&lt;/P&gt;&lt;P&gt;              or waTokens-str&lt;EM&gt;0(2) = 'MZ' or waTokens-str&lt;/EM&gt;0(2) = 'MY'.&lt;/P&gt;&lt;P&gt;&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;           catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;         endtry.&lt;/P&gt;&lt;P&gt;       endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       waInclude-includeName = waTokens-str.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Best find the program title text as well.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       perform findProgramOrIncludeTitle using waInclude-includeName&lt;/P&gt;&lt;P&gt;                                               waInclude-includeTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Don't append the include if we already have it listed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       read table iLocIncludes into waIncludeExists with key includeName = waInclude-includeName.&lt;/P&gt;&lt;P&gt;       if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;         append waInclude to iLocIncludes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         if not recursiveIncludes is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         Do a recursive search for other includes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           perform scanForIncludePrograms using waInclude-includeName&lt;/P&gt;&lt;P&gt;                                                recursiveIncludes&lt;/P&gt;&lt;P&gt;                                                customerOnly&lt;/P&gt;&lt;P&gt;                                                customerNameRange&lt;/P&gt;&lt;P&gt;                                                iLocIncludes[].&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.                                                                         "scanForIncludePrograms&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;scanForFunctions... Search each program for function modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForFunctions using value(programName)&lt;/P&gt;&lt;P&gt;                            value(programLinkName)&lt;/P&gt;&lt;P&gt;                            value(recursiveIncludes)&lt;/P&gt;&lt;P&gt;                            value(recursiveFunctions)&lt;/P&gt;&lt;P&gt;                            value(customerOnly)&lt;/P&gt;&lt;P&gt;                            value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                  iLocFunctions like iFunctions[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iIncludeLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iTokens type standard table of stokes with header line.&lt;/P&gt;&lt;P&gt;data: iStatements type standard table of sstmnt with header line.&lt;/P&gt;&lt;P&gt;data: waTokens type stokes.&lt;/P&gt;&lt;P&gt;data: waFunction type tFunction.&lt;/P&gt;&lt;P&gt;data: waFunctionComparison type tFunction.&lt;/P&gt;&lt;P&gt;data: maxLines type i.&lt;/P&gt;&lt;P&gt;data: nextLine type i.&lt;/P&gt;&lt;P&gt;data: castProgramName type program.&lt;/P&gt;&lt;P&gt;data: skipThisloop type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the program code from the textpool.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  castProgramName = programName.&lt;/P&gt;&lt;P&gt;  read report castProgramName into iIncludeLines.&lt;/P&gt;&lt;P&gt;  scan abap-source iIncludeLines tokens into iTokens with includes statements into iStatements.&lt;/P&gt;&lt;P&gt;  clear iIncludeLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  maxLines = lines( iTokens ).&lt;/P&gt;&lt;P&gt;  loop at iTokens where str = FUNCTION and type = 'I'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     nextLine = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;     if nextLine &amp;lt;= maxLines.&lt;/P&gt;&lt;P&gt;       read table iTokens index nextLine into waTokens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Are we only to find customer functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       skipThisLoop = FALSE.&lt;/P&gt;&lt;P&gt;       if not customerOnly is initial.&lt;/P&gt;&lt;P&gt;         try.&lt;/P&gt;&lt;P&gt;           if waTokens-str&lt;EM&gt;1(1) = 'Y' or waTokens-str&lt;/EM&gt;1(1) = 'Z' or waTokens-str cs customerNameRange.&lt;/P&gt;&lt;P&gt;           else.&lt;/P&gt;&lt;P&gt;             skipThisLoop = TRUE.&lt;/P&gt;&lt;P&gt;           endif.&lt;/P&gt;&lt;P&gt;         catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;         cleanup.&lt;/P&gt;&lt;P&gt;           skipThisLoop = TRUE.&lt;/P&gt;&lt;P&gt;         endtry.&lt;/P&gt;&lt;P&gt;       endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       if skipThisLoop = FALSE.&lt;/P&gt;&lt;P&gt;         waFunction-functionName = waTokens-str.&lt;/P&gt;&lt;P&gt;         replace all occurrences of '''' in waFunction-functionName with ' '.&lt;/P&gt;&lt;P&gt;         condense waFunction-functionName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Don't add a function if we alread have it listed.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         read table iLocFunctions with key functionName = waFunction-functionName into waFunctionComparison.&lt;/P&gt;&lt;P&gt;         if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         Add in the link name if the function is linked to a program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           waFunction-programLinkName = programLinkName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         Don't download functions which are called through an RFC destination&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           nextline = sy-tabix + 2.&lt;/P&gt;&lt;P&gt;           read table iTokens index nextLine into waTokens.&lt;/P&gt;&lt;P&gt;           if waTokens-str &amp;lt;&amp;gt; DESTINATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           Find the function group&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;             select single area from v_fdir into wafunction-functionGroup where funcName = waFunction-functionName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;             if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             Best find the function number as well.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               perform retrieveFunctionDetail using waFunction-functionName&lt;/P&gt;&lt;P&gt;                                                    waFunction-progname&lt;/P&gt;&lt;P&gt;                                                    waFunction-includeNumber&lt;/P&gt;&lt;P&gt;                                                    waFunction-functionTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;               perform findMainFunctionInclude using waFunction-progname&lt;/P&gt;&lt;P&gt;                                                     waFunction-includeNumber&lt;/P&gt;&lt;P&gt;                                                     waFunction-functionMainInclude.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;               perform findFunctionTopInclude using waFunction-progname&lt;/P&gt;&lt;P&gt;                                                    waFunction-topIncludeName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             Find main message class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               perform findMainMessageClass using waFunction-progname&lt;/P&gt;&lt;P&gt;                                                  waFunction-messageClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;               append waFunction to iLocFunctions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             Now lets search a little bit deeper and do a recursive search for other includes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               if not recursiveIncludes is initial.&lt;/P&gt;&lt;P&gt;                 perform scanForIncludePrograms using waFunction-functionMainInclude&lt;/P&gt;&lt;P&gt;                                                      recursiveIncludes&lt;/P&gt;&lt;P&gt;                                                      customerOnly&lt;/P&gt;&lt;P&gt;                                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                                      waFunction-iIncludes[].&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;             Now lets search a little bit deeper and do a recursive search for other functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               if not recursiveFunctions is initial.&lt;/P&gt;&lt;P&gt;                 perform scanForFunctions using waFunction-functionMainInclude&lt;/P&gt;&lt;P&gt;                                                space&lt;/P&gt;&lt;P&gt;                                                recursiveIncludes&lt;/P&gt;&lt;P&gt;                                                recursiveFunctions&lt;/P&gt;&lt;P&gt;                                                customerOnly&lt;/P&gt;&lt;P&gt;                                                customerNameRange&lt;/P&gt;&lt;P&gt;                                                iLocFunctions[].&lt;/P&gt;&lt;P&gt;               endif.&lt;/P&gt;&lt;P&gt;               clear waFunction.&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;         clear waFunction.&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.                                                                               "scanForFunctions&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; scanForFunctionIncludes... Find all user defined includes within the function group&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForFunctionIncludes using poolName&lt;/P&gt;&lt;P&gt;                                   value(customerOnly)&lt;/P&gt;&lt;P&gt;                                   value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                   iLocIncludes like dumiIncludes[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iIncludeLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iTokens type standard table of stokes with header line.&lt;/P&gt;&lt;P&gt;data: iKeywords type standard table of text20 with header line.&lt;/P&gt;&lt;P&gt;data: iStatements type standard table of sstmnt with header line.&lt;/P&gt;&lt;P&gt;data: waTokens type stokes.&lt;/P&gt;&lt;P&gt;data: waInclude type tInclude.&lt;/P&gt;&lt;P&gt;data: waIncludeExists type tInclude.&lt;/P&gt;&lt;P&gt;data: maxLines type i.&lt;/P&gt;&lt;P&gt;data: nextLine type i.&lt;/P&gt;&lt;P&gt;data: castProgramName type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the program code from the textpool.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  castProgramName = poolName.&lt;/P&gt;&lt;P&gt;  read report castProgramName into iIncludeLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append INCLUDE to iKeywords.&lt;/P&gt;&lt;P&gt;  scan abap-source iIncludeLines tokens into iTokens with includes statements into iStatements keywords from iKeywords.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear iIncludeLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  maxLines = lines( iTokens ).&lt;/P&gt;&lt;P&gt;  loop at iTokens where str = INCLUDE and type = 'I'.&lt;/P&gt;&lt;P&gt;     nextLine = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;     if nextLine &amp;lt;= maxLines.&lt;/P&gt;&lt;P&gt;       read table iTokens index nextLine into waTokens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       if waTokens-str cp '*F++'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Are we only to find customer includes?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         if not customerOnly is initial.&lt;/P&gt;&lt;P&gt;           try.&lt;/P&gt;&lt;P&gt;             if waTokens-str&lt;EM&gt;0(2) = 'LY' or waTokens-str&lt;/EM&gt;0(2) = 'LZ' or waTokens-str cs customerNameRange.&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;             catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;           endtry.&lt;/P&gt;&lt;P&gt;         endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         waInclude-includeName = waTokens-str.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Best find the program title text as well.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         perform findProgramOrIncludeTitle using waInclude-includeName&lt;/P&gt;&lt;P&gt;                                                 waInclude-includeTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Don't append the include if we already have it listed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         read table iLocIncludes into waIncludeExists with key includeName = waInclude-includeName.&lt;/P&gt;&lt;P&gt;         if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;           append waInclude to iLocIncludes.&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; findProgramOrIncludeTitle...   Finds the title text of a program.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findProgramOrIncludeTitle using value(programName)&lt;/P&gt;&lt;P&gt;                                           titleText.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single text from trdirt&lt;/P&gt;&lt;P&gt;                     into titleText&lt;/P&gt;&lt;P&gt;                     where name = programName&lt;/P&gt;&lt;P&gt;                       and sprsl = sy-langu.&lt;/P&gt;&lt;P&gt;endform.                                                                      "findProgramOrIncludeTitle&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;retrievePrograms...    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 retrievePrograms using iLocProgram like iPrograms[]&lt;/P&gt;&lt;P&gt;                            iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                            rangeProgram like soProgramName[]&lt;/P&gt;&lt;P&gt;                            rangeAuthor like soAuthor[]&lt;/P&gt;&lt;P&gt;                            value(custNameRange)&lt;/P&gt;&lt;P&gt;                            value(alsoModifiedByauthor)&lt;/P&gt;&lt;P&gt;                            value(customerProgsOnly)&lt;/P&gt;&lt;P&gt;                            value(getMessages)&lt;/P&gt;&lt;P&gt;                            value(getTextElements)&lt;/P&gt;&lt;P&gt;                            value(getCustDictStructures)&lt;/P&gt;&lt;P&gt;                            value(getFunctions)&lt;/P&gt;&lt;P&gt;                            value(getIncludes)&lt;/P&gt;&lt;P&gt;                            value(getScreens)&lt;/P&gt;&lt;P&gt;                            value(recursiveFuncSearch)&lt;/P&gt;&lt;P&gt;                            value(recursiveIncludeSearch)&lt;/P&gt;&lt;P&gt;                            value(getLocalObjects)&lt;/P&gt;&lt;P&gt;                            value(package).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waRangeProgram like line of rangeProgram.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if rangeProgram[] is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  We are finding all programs by an author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform findAllProgramsForAuthor using iLocProgram[]&lt;/P&gt;&lt;P&gt;                                           rangeProgram[]&lt;/P&gt;&lt;P&gt;                                           rangeAuthor[]&lt;/P&gt;&lt;P&gt;                                           custNameRange&lt;/P&gt;&lt;P&gt;                                           alsoModifiedByAuthor&lt;/P&gt;&lt;P&gt;                                           customerProgsOnly&lt;/P&gt;&lt;P&gt;                                           getLocalObjects&lt;/P&gt;&lt;P&gt;                                           package.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    read table rangeProgram index 1 into waRangeProgram.&lt;/P&gt;&lt;P&gt;    if waRangeProgram-low cs ASTERIX.&lt;/P&gt;&lt;P&gt;      perform findProgramsByWildcard using iLocProgram[]&lt;/P&gt;&lt;P&gt;                                           rangeProgram[]&lt;/P&gt;&lt;P&gt;                                           rangeAuthor[]&lt;/P&gt;&lt;P&gt;                                           custNameRange&lt;/P&gt;&lt;P&gt;                                           customerProgsOnly&lt;/P&gt;&lt;P&gt;                                           getLocalObjects&lt;/P&gt;&lt;P&gt;                                           package.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      perform checkProgramDoesExist using iLocProgram[]&lt;/P&gt;&lt;P&gt;                                          rangeProgram[].&lt;/P&gt;&lt;P&gt;    endif.&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;Find extra items&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform scanForAdditionalProgStuff using iLocProgram[]&lt;/P&gt;&lt;P&gt;                                           iLocFunctions[]&lt;/P&gt;&lt;P&gt;                                           getTextElements&lt;/P&gt;&lt;P&gt;                                           getMessages&lt;/P&gt;&lt;P&gt;                                           getScreens&lt;/P&gt;&lt;P&gt;                                           getCustDictStructures&lt;/P&gt;&lt;P&gt;                                           getFunctions&lt;/P&gt;&lt;P&gt;                                           getIncludes&lt;/P&gt;&lt;P&gt;                                           customerProgsOnly&lt;/P&gt;&lt;P&gt;                                           custNameRange&lt;/P&gt;&lt;P&gt;                                           recursiveIncludeSearch&lt;/P&gt;&lt;P&gt;                                           recursiveFuncSearch.&lt;/P&gt;&lt;P&gt;endform.                                                                               "retrievePrograms&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; scanForAdditionalProgStuff...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForAdditionalProgStuff using iLocProgram like iPrograms[]&lt;/P&gt;&lt;P&gt;                                      iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                                      value(getTextElements)&lt;/P&gt;&lt;P&gt;                                      value(getMessages)&lt;/P&gt;&lt;P&gt;                                      value(getScreens)&lt;/P&gt;&lt;P&gt;                                      value(getCustDictStructures)&lt;/P&gt;&lt;P&gt;                                      value(getFunctions)&lt;/P&gt;&lt;P&gt;                                      value(getIncludes)&lt;/P&gt;&lt;P&gt;                                      value(customerOnly)&lt;/P&gt;&lt;P&gt;                                      value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                      value(recursiveIncludeSearch)&lt;/P&gt;&lt;P&gt;                                      value(recursiveFuncSearch).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waProgram type tProgram.&lt;/P&gt;&lt;P&gt;data: waInclude type tInclude.&lt;/P&gt;&lt;P&gt;data: myTabix type syTabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Best to find all the includes used in a program first&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not getIncludes is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocProgram into waProgram.&lt;/P&gt;&lt;P&gt;      myTabix = sy-tabix.&lt;/P&gt;&lt;P&gt;      perform scanForIncludePrograms using waProgram-progName&lt;/P&gt;&lt;P&gt;                                           recursiveIncludeSearch&lt;/P&gt;&lt;P&gt;                                           customerOnly&lt;/P&gt;&lt;P&gt;                                           customerNameRange&lt;/P&gt;&lt;P&gt;                                           waProgram-iIncludes[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      modify iLocProgram from waProgram index myTabix.&lt;/P&gt;&lt;P&gt;    endloop.&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;Once we have a list of all the includes we need to loop round them an select all the other objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at iLocProgram into waProgram.&lt;/P&gt;&lt;P&gt;    myTabix = sy-tabix.&lt;/P&gt;&lt;P&gt;    perform findProgramDetails using waProgram-progName&lt;/P&gt;&lt;P&gt;                                     waProgram-subc&lt;/P&gt;&lt;P&gt;                                     waProgram-programTitle&lt;/P&gt;&lt;P&gt;                                     waProgram&lt;/P&gt;&lt;P&gt;                                     getTextElements&lt;/P&gt;&lt;P&gt;                                     getMessages&lt;/P&gt;&lt;P&gt;                                     getScreens&lt;/P&gt;&lt;P&gt;                                     getCustDictStructures&lt;/P&gt;&lt;P&gt;                                     customerOnly&lt;/P&gt;&lt;P&gt;                                     customerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find any screens&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not getScreens is initial.&lt;/P&gt;&lt;P&gt;      perform findProgramScreenFlow using waProgram.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at waProgram-iIncludes into waInclude.&lt;/P&gt;&lt;P&gt;      perform findProgramDetails using waInclude-includeName&lt;/P&gt;&lt;P&gt;                                       'I'&lt;/P&gt;&lt;P&gt;                                       waInclude-includeTitle&lt;/P&gt;&lt;P&gt;                                       waProgram&lt;/P&gt;&lt;P&gt;                                       getTextElements&lt;/P&gt;&lt;P&gt;                                       getMessages&lt;/P&gt;&lt;P&gt;                                       getScreens&lt;/P&gt;&lt;P&gt;                                       getCustDictStructures&lt;/P&gt;&lt;P&gt;                                       customerOnly&lt;/P&gt;&lt;P&gt;                                       customerNameRange.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    modify iLocProgram from waProgram index myTabix.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Now we have all the program includes and details we need to find extra functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not getFunctions is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocProgram into waProgram.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Find any functions defined in the code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      perform scanForFunctions using waProgram-progname&lt;/P&gt;&lt;P&gt;                                     waProgram-progname&lt;/P&gt;&lt;P&gt;                                     space&lt;/P&gt;&lt;P&gt;                                     space&lt;/P&gt;&lt;P&gt;                                     customerOnly&lt;/P&gt;&lt;P&gt;                                     customerNameRange&lt;/P&gt;&lt;P&gt;                                     iLocFunctions[].&lt;/P&gt;&lt;P&gt;    endloop.&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;We have a list of all the functions so lets go and find details and other function calls&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform scanForAdditionalFuncStuff using iLocFunctions[]&lt;/P&gt;&lt;P&gt;                                           recursiveIncludeSearch&lt;/P&gt;&lt;P&gt;                                           recursiveFuncSearch&lt;/P&gt;&lt;P&gt;                                           getIncludes&lt;/P&gt;&lt;P&gt;                                           getFunctions&lt;/P&gt;&lt;P&gt;                                           getCustDictStructures&lt;/P&gt;&lt;P&gt;                                           getMessages&lt;/P&gt;&lt;P&gt;                                           customerOnly&lt;/P&gt;&lt;P&gt;                                           customerNameRange.&lt;/P&gt;&lt;P&gt;endform.                                                                     "scanForAdditionalProgStuff&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; findProgramDetails...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findProgramDetails using value(programName)&lt;/P&gt;&lt;P&gt;                              value(programType)&lt;/P&gt;&lt;P&gt;                                    programTitle&lt;/P&gt;&lt;P&gt;                                    waProgram type tProgram&lt;/P&gt;&lt;P&gt;                              value(getTextElements)&lt;/P&gt;&lt;P&gt;                              value(getMessages)&lt;/P&gt;&lt;P&gt;                              value(getScreens)&lt;/P&gt;&lt;P&gt;                              value(getCustDictStructures)&lt;/P&gt;&lt;P&gt;                              value(customerOnly)&lt;/P&gt;&lt;P&gt;                              value(customerNameRange).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform findProgramOrIncludeTitle using programName&lt;/P&gt;&lt;P&gt;                                          programTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not getTextElements is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find the program texts from out of the database.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform retrieveProgramTexts using waProgram-iSelectionTexts[]&lt;/P&gt;&lt;P&gt;                                       waProgram-iTextElements[]&lt;/P&gt;&lt;P&gt;                                       programName.&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;Search for any GUI texts&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not getScreens is initial and ( programType = 'M' or programType = '1' ).&lt;/P&gt;&lt;P&gt;    perform retrieveGUITitles using waProgram-iGUITitle[]&lt;/P&gt;&lt;P&gt;                                    programName.&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;Find individual messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not getMessages is initial.&lt;/P&gt;&lt;P&gt;    if programType = 'M' or programType = '1'.&lt;/P&gt;&lt;P&gt;      perform findMainMessageClass using programName&lt;/P&gt;&lt;P&gt;                                         waProgram-messageClass.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform scanForMessages using programName&lt;/P&gt;&lt;P&gt;                                  waProgram-messageClass&lt;/P&gt;&lt;P&gt;                                  waProgram-iMessages[].&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not getCustDictStructures is initial.&lt;/P&gt;&lt;P&gt;    perform scanForTables using programName&lt;/P&gt;&lt;P&gt;                                customerOnly&lt;/P&gt;&lt;P&gt;                                customerNameRange&lt;/P&gt;&lt;P&gt;                                waProgram-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform scanForLikeOrType using programName&lt;/P&gt;&lt;P&gt;                                    customerOnly&lt;/P&gt;&lt;P&gt;                                    customerNameRange&lt;/P&gt;&lt;P&gt;                                    waProgram-iDictStruct[].&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                             "findProgramDetails&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; findAllProgramsForAuthor...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findAllProgramsForAuthor using iLocProgram like iPrograms[]&lt;/P&gt;&lt;P&gt;                                    rangeProgram like soProgramName[]&lt;/P&gt;&lt;P&gt;                                    rangeAuthor like soAuthor[]&lt;/P&gt;&lt;P&gt;                                    value(custNameRange)&lt;/P&gt;&lt;P&gt;                                    value(alsoModifiedByauthor)&lt;/P&gt;&lt;P&gt;                                    value(customerProgsOnly)&lt;/P&gt;&lt;P&gt;                                    value(getLocalObjects)&lt;/P&gt;&lt;P&gt;                                    value(package).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: altCustomerNameRange type string.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waProgram&amp;gt; type tProgram.&lt;/P&gt;&lt;P&gt;data: genFlag type genFlag.&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 customer name range used for select statements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  concatenate custNameRange '%' into altCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;select by name and author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not alsoModifiedByAuthor is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Programs modified by author&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Program to search for is an executable program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if customerProgsOnly is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select all programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table ilocProgram&lt;/P&gt;&lt;P&gt;                      where progname in rangeProgram&lt;/P&gt;&lt;P&gt;                        and cnam in rangeAuthor&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select only customer specific programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table iLocProgram&lt;/P&gt;&lt;P&gt;                      where progname  in rangeProgram&lt;/P&gt;&lt;P&gt;                        and ( progname like altCustomerNameRange&lt;/P&gt;&lt;P&gt;                              or progname like 'Z%' or progname like 'Y%'&lt;/P&gt;&lt;P&gt;                              or progname like 'SAPMZ%' or progname like 'SAPMY%')&lt;/P&gt;&lt;P&gt;                        and cnam in rangeAuthor&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' ).&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Programs created by author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if customerProgsOnly is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select all programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table iLocProgram&lt;/P&gt;&lt;P&gt;                      where progname in rangeProgram&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' )&lt;/P&gt;&lt;P&gt;                        and ( cnam in rangeAuthor or unam in rangeAuthor ).&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select only customer specific programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table iLocProgram&lt;/P&gt;&lt;P&gt;                      where progname in rangeProgram&lt;/P&gt;&lt;P&gt;                        and ( progname like altCustomerNameRange&lt;/P&gt;&lt;P&gt;                              or progname like 'Z%' or progname like 'Y%'&lt;/P&gt;&lt;P&gt;                              or progname like 'SAPMZ%' or progname like 'SAPMY%')&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' )&lt;/P&gt;&lt;P&gt;                        and ( cnam in rangeAuthor or unam in rangeAuthor ).&lt;/P&gt;&lt;P&gt;    endif.&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;Delete any programs which are local objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if getLocalObjects is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocProgram assigning &amp;lt;waProgram&amp;gt;.&lt;/P&gt;&lt;P&gt;      select single genflag from tadiv&lt;/P&gt;&lt;P&gt;                    into genflag&lt;/P&gt;&lt;P&gt;                    where pgmid = 'R3TR'&lt;/P&gt;&lt;P&gt;                      and object = 'PROG'&lt;/P&gt;&lt;P&gt;                      and obj_name = &amp;lt;waProgram&amp;gt;-progName&lt;/P&gt;&lt;P&gt;                      and devclass = '$TMP'.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        delete iLocProgram.&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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete any programs which are not in the specified package&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not package is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocProgram assigning &amp;lt;waProgram&amp;gt;.&lt;/P&gt;&lt;P&gt;      select single genflag from tadiv&lt;/P&gt;&lt;P&gt;                    into genflag&lt;/P&gt;&lt;P&gt;                    where pgmid = 'R3TR'&lt;/P&gt;&lt;P&gt;                      and object = 'PROG'&lt;/P&gt;&lt;P&gt;                      and obj_name = &amp;lt;waProgram&amp;gt;-progName&lt;/P&gt;&lt;P&gt;                      and devclass &amp;lt;&amp;gt; package.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        delete iLocProgram.&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;endform.                                                                       "findAllProgramsForAuthor&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; checkProgramDoesExist...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form checkProgramDoesExist using iLocProgram like iPrograms[]&lt;/P&gt;&lt;P&gt;                                 rangeProgram like soProgramName[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waProgram type tProgram.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Check to see if the program is an executable program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   select single progname subc&lt;/P&gt;&lt;P&gt;                 into (waProgram-progname, waProgram-subc)&lt;/P&gt;&lt;P&gt;                 from reposrc&lt;/P&gt;&lt;P&gt;                 where progname in rangeProgram&lt;/P&gt;&lt;P&gt;                   and subc = '1'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   Check to see if it is an include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     select single progname subc from reposrc&lt;/P&gt;&lt;P&gt;                   into (waProgram-progname, waProgram-subc)&lt;/P&gt;&lt;P&gt;                   where progname in rangeProgram&lt;/P&gt;&lt;P&gt;                    and subc = 'I'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Check to see if it is a module pool&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       select single progname subc from reposrc&lt;/P&gt;&lt;P&gt;                     into (waProgram-progname, waProgram-subc)&lt;/P&gt;&lt;P&gt;                     where progname in rangeProgram&lt;/P&gt;&lt;P&gt;                      and subc = 'M'.&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 waProgram-progname is initial.&lt;/P&gt;&lt;P&gt;     append waProgram to iLocProgram.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;endform.                                                                          "checkProgramDoesExist&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; findProgramsByWildcard.. Search in the system for programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findProgramsByWildcard using iLocProgram like iPrograms[]&lt;/P&gt;&lt;P&gt;                                  value(rangeProgram) like soProgramName[]&lt;/P&gt;&lt;P&gt;                                  value(rangeAuthor) like soAuthor[]&lt;/P&gt;&lt;P&gt;                                  value(custNameRange)&lt;/P&gt;&lt;P&gt;                                  value(customerProgsOnly)&lt;/P&gt;&lt;P&gt;                                  value(getLocalObjects)&lt;/P&gt;&lt;P&gt;                                  value(package).                                   .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: altCustomerNameRange type string.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waProgram&amp;gt; type tProgram.&lt;/P&gt;&lt;P&gt;data: genFlag type genFlag.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if customerProgsOnly is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  build up the customer name range used for select statements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if custNameRange &amp;lt;&amp;gt; '^'.&lt;/P&gt;&lt;P&gt;      concatenate custNameRange '%' into altCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table iLocProgram&lt;/P&gt;&lt;P&gt;                      where progname  in rangeProgram&lt;/P&gt;&lt;P&gt;                        and progname like altCustomerNameRange&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' )&lt;/P&gt;&lt;P&gt;                        and ( cnam in rangeAuthor or unam in rangeAuthor )..&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table iLocProgram&lt;/P&gt;&lt;P&gt;                      where progname  in rangeProgram&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' )&lt;/P&gt;&lt;P&gt;                        and ( cnam in rangeAuthor or unam in rangeAuthor )..&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Only customer programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if custNameRange &amp;lt;&amp;gt; '^'.&lt;/P&gt;&lt;P&gt;      concatenate custNameRange '%' into altCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table iLocProgram&lt;/P&gt;&lt;P&gt;                      where progname  in rangeProgram&lt;/P&gt;&lt;P&gt;                        and ( progname like altCustomerNameRange&lt;/P&gt;&lt;P&gt;                              or progname like 'Z%' or progname like 'Y%'&lt;/P&gt;&lt;P&gt;                              or progname like 'SAPMZ%' or progname like 'SAPMY%')&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' )&lt;/P&gt;&lt;P&gt;                        and ( cnam in rangeAuthor or unam in rangeAuthor ).                        .&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      select progname subc from reposrc appending corresponding fields of table iLocProgram&lt;/P&gt;&lt;P&gt;                      where progname  in rangeProgram&lt;/P&gt;&lt;P&gt;                        and ( progname like 'Z%' or progname like 'Y%' or progname like 'SAPMZ%' or progname like 'SAPMY%')&lt;/P&gt;&lt;P&gt;                        and ( subc = '1' or subc = 'M' )&lt;/P&gt;&lt;P&gt;                        and ( cnam in rangeAuthor or unam in rangeAuthor ).                       .&lt;/P&gt;&lt;P&gt;    endif.&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;Delete any programs which are local objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if getLocalObjects is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocProgram assigning &amp;lt;waProgram&amp;gt;.&lt;/P&gt;&lt;P&gt;      select single genflag from tadiv&lt;/P&gt;&lt;P&gt;                    into genflag&lt;/P&gt;&lt;P&gt;                    where pgmid = 'R3TR'&lt;/P&gt;&lt;P&gt;                      and object = 'PROG'&lt;/P&gt;&lt;P&gt;                      and obj_name = &amp;lt;waProgram&amp;gt;-progName&lt;/P&gt;&lt;P&gt;                      and devclass = '$TMP'.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        delete iLocProgram.&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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete any programs which are not in the specified package&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not package is initial.&lt;/P&gt;&lt;P&gt;    loop at iLocProgram assigning &amp;lt;waProgram&amp;gt;.&lt;/P&gt;&lt;P&gt;      select single genflag from tadiv&lt;/P&gt;&lt;P&gt;                    into genflag&lt;/P&gt;&lt;P&gt;                    where pgmid = 'R3TR'&lt;/P&gt;&lt;P&gt;                      and object = 'PROG'&lt;/P&gt;&lt;P&gt;                      and obj_name = &amp;lt;waProgram&amp;gt;-progName&lt;/P&gt;&lt;P&gt;                      and devclass &amp;lt;&amp;gt; package.&lt;/P&gt;&lt;P&gt;      if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        delete iLocProgram.&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;&lt;/P&gt;&lt;P&gt;endform.                                                                         "findProgramsByWildcard&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; retrieveProgramTexts... Find the text elements and selection texts for a program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form retrieveProgramTexts using iLocSelectionTexts like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                                iLocTextElements like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                                value(programName).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iTextTable type standard table of tTextTable with header line.&lt;/P&gt;&lt;P&gt;data: waTexts type tTextTable.&lt;/P&gt;&lt;P&gt;data: castProgramName(50).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  move programName to castProgramName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  read textpool castProgramName into iTextTable language sy-langu.&lt;/P&gt;&lt;P&gt;  delete iTextTable where key = 'R'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection texts.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at iTextTable where id = 'S'.&lt;/P&gt;&lt;P&gt;    move iTextTable-key to waTexts-key.&lt;/P&gt;&lt;P&gt;    move iTextTable-entry to waTexts-entry.&lt;/P&gt;&lt;P&gt;    append waTexts to iLocSelectiontexts.&lt;/P&gt;&lt;P&gt;    clear waTexts.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Text elements.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  delete iTextTable where key = 'S'.&lt;/P&gt;&lt;P&gt;  loop at iTextTable where id = 'I'.&lt;/P&gt;&lt;P&gt;    move iTextTable-key to waTexts-key.&lt;/P&gt;&lt;P&gt;    move iTextTable-entry to waTexts-entry.&lt;/P&gt;&lt;P&gt;    append waTexts to iLocTextElements.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                           "retrieveProgramTexts&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; retrieveGUITitles...  Search for any GUI texts&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form retrieveGUITitles using iLocGUITitle like dumIGUITitle[]&lt;/P&gt;&lt;P&gt;                             value(programName).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select obj_code text from d347t&lt;/P&gt;&lt;P&gt;                       appending corresponding fields of table iLocGUItitle&lt;/P&gt;&lt;P&gt;                       where progname = programName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                                                                              "retrieveGUITitles&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;  findMainMessageClass... find the message class stated at the top of  program.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findMainMessageClass using value(programName)&lt;/P&gt;&lt;P&gt;                                      messageClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single msgid from trdire into messageClass&lt;/P&gt;&lt;P&gt;                  where report = programName.&lt;/P&gt;&lt;P&gt;endform.                                                                           "findMainMessageClass&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;retrieveClasses...    find classes 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 retrieveClasses using iLocClasses like iClasses[]&lt;/P&gt;&lt;P&gt;                           iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                           rangeClass like soClassName[]&lt;/P&gt;&lt;P&gt;                           rangeAuthor like soAuthor[]&lt;/P&gt;&lt;P&gt;                           value(custNameRange)&lt;/P&gt;&lt;P&gt;                           value(alsoModifiedByauthor)&lt;/P&gt;&lt;P&gt;                           value(customerProgsOnly)&lt;/P&gt;&lt;P&gt;                           value(getMessages)&lt;/P&gt;&lt;P&gt;                           value(getTextElements)&lt;/P&gt;&lt;P&gt;                           value(getCustDictStructures)&lt;/P&gt;&lt;P&gt;                           value(getFunctions)&lt;/P&gt;&lt;P&gt;                           value(getIncludes)&lt;/P&gt;&lt;P&gt;                           value(recursiveFuncSearch)&lt;/P&gt;&lt;P&gt;                           value(recursiveIncludeSearch)&lt;/P&gt;&lt;P&gt;                           value(recursiveClassSearch)&lt;/P&gt;&lt;P&gt;                           value(language).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waRangeClass like line of rangeClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if rangeClass[] is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  We are finding all programs by an author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform findAllClassesForAuthor using iLocClasses[]&lt;/P&gt;&lt;P&gt;                                           rangeClass[]&lt;/P&gt;&lt;P&gt;                                           rangeAuthor[]&lt;/P&gt;&lt;P&gt;                                           custNameRange&lt;/P&gt;&lt;P&gt;                                           alsoModifiedByAuthor&lt;/P&gt;&lt;P&gt;                                           customerProgsOnly&lt;/P&gt;&lt;P&gt;                                           language.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    read table rangeClass index 1 into waRangeClass.&lt;/P&gt;&lt;P&gt;    if waRangeClass-low cs ASTERIX.&lt;/P&gt;&lt;P&gt;      perform findClassesByWildcard using iLocClasses[]&lt;/P&gt;&lt;P&gt;                                          rangeClass[]&lt;/P&gt;&lt;P&gt;                                          rangeAuthor[]&lt;/P&gt;&lt;P&gt;                                          custNameRange&lt;/P&gt;&lt;P&gt;                                          customerProgsOnly&lt;/P&gt;&lt;P&gt;                                          language.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      perform checkClassDoesExist using iLocClasses[]&lt;/P&gt;&lt;P&gt;                                        rangeClass[].&lt;/P&gt;&lt;P&gt;    endif.&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;Find extra items&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not iLocClasses[] is initial.&lt;/P&gt;&lt;P&gt;    perform scanForAdditionalClassStuff using iLocClasses[]&lt;/P&gt;&lt;P&gt;                                              iLocFunctions[]&lt;/P&gt;&lt;P&gt;                                              getTextElements&lt;/P&gt;&lt;P&gt;                                              getMessages&lt;/P&gt;&lt;P&gt;                                              getCustDictStructures&lt;/P&gt;&lt;P&gt;                                              getFunctions&lt;/P&gt;&lt;P&gt;                                              getIncludes&lt;/P&gt;&lt;P&gt;                                              customerProgsOnly&lt;/P&gt;&lt;P&gt;                                              custNameRange&lt;/P&gt;&lt;P&gt;                                              recursiveIncludeSearch&lt;/P&gt;&lt;P&gt;                                              recursiveFuncSearch&lt;/P&gt;&lt;P&gt;                                              recursiveClassSearch.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                                "retrieveClasses&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; findAllClassesForAuthor...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findAllClassesForAuthor using iLocClass like iClasses[]&lt;/P&gt;&lt;P&gt;                                   rangeClass like soClassName[]&lt;/P&gt;&lt;P&gt;                                   rangeAuthor like soAuthor[]&lt;/P&gt;&lt;P&gt;                                   value(custNameRange)&lt;/P&gt;&lt;P&gt;                                   value(alsoModifiedByauthor)&lt;/P&gt;&lt;P&gt;                                   value(customerClassesOnly)&lt;/P&gt;&lt;P&gt;                                   value(language).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: altCustomerNameRange(2).&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 customer name range used for select statements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  concatenate custNameRange '%' into altCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;select by name and author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not alsoModifiedByAuthor is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Classes modified by author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if customerClassesOnly is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select all classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;               and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;                 and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select only customer specific classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and ( clsname like altCustomerNameRange or clsname like 'Z%' or clsname like 'Y%')&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;               and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).            .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;                 and ( clsname like altCustomerNameRange or clsname like 'Z%' or clsname like 'Y%')&lt;/P&gt;&lt;P&gt;                 and langu = language&lt;/P&gt;&lt;P&gt;                 and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Programs created by author&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if customerClassesOnly is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select all classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;               and author in rangeAuthor&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;                 and langu = language&lt;/P&gt;&lt;P&gt;                 and author in rangeAuthor&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Select only customer specific classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and ( clsname like altCustomerNameRange or clsname like 'Z%' or clsname like 'Y%')&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;               and author in rangeAuthor&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;                 and ( clsname like altCustomerNameRange or clsname like 'Z%' or clsname like 'Y%')&lt;/P&gt;&lt;P&gt;                 and langu = language&lt;/P&gt;&lt;P&gt;                 and author in rangeAuthor&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '1' ).               .&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;endform.                                                                        "findAllClassesForAuthor&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; findClassesByWildcard...  Find classes using a wildcard search&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findClassesByWildcard using iLocClass like iClasses[]&lt;/P&gt;&lt;P&gt;                                 rangeClass like soClassName[]&lt;/P&gt;&lt;P&gt;                                 value(rangeAuthor) like soAuthor[]&lt;/P&gt;&lt;P&gt;                                 value(custNameRange)&lt;/P&gt;&lt;P&gt;                                 value(customerClassesOnly)&lt;/P&gt;&lt;P&gt;                                 value(language).                                 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: altCustomerNameRange(2).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if customerClassesOnly is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Searching for customer and SAP classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if custNameRange &amp;lt;&amp;gt; '^'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    build up the customer name range used for select statements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      concatenate custNameRange '%' into altCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and clsname like custNameRange&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;               and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;                 and clsname like custNameRange&lt;/P&gt;&lt;P&gt;                 and langu = language&lt;/P&gt;&lt;P&gt;                 and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Searching using normal name ranges&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;               and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;                 and langu = language&lt;/P&gt;&lt;P&gt;                 and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  searching for only customer classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if custNameRange &amp;lt;&amp;gt; '^'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    build up the customer name range used for select statements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      concatenate custNameRange '%' into altCustomerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and clsname like custNameRange&lt;/P&gt;&lt;P&gt;               and langu = language&lt;/P&gt;&lt;P&gt;               and ( clsname like 'ZC%' or clsname like 'YC%' )&lt;/P&gt;&lt;P&gt;               and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;                 and langu = language&lt;/P&gt;&lt;P&gt;                 and ( clsname like 'ZC%' or clsname like 'YC%' )&lt;/P&gt;&lt;P&gt;                 and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Searching using normal name ranges&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      select clsname descript msg_id&lt;/P&gt;&lt;P&gt;             from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;             where clsname in rangeClass&lt;/P&gt;&lt;P&gt;               and ( clsname like 'ZC%' or clsname like 'YC%' )&lt;/P&gt;&lt;P&gt;               and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;               and version = '1'&lt;/P&gt;&lt;P&gt;               and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;      if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;        select clsname descript msg_id&lt;/P&gt;&lt;P&gt;               from vseoclass appending corresponding fields of table ilocClass&lt;/P&gt;&lt;P&gt;               where clsname in rangeClass&lt;/P&gt;&lt;P&gt;                 and ( clsname like 'ZC%' or clsname like 'YC%' )&lt;/P&gt;&lt;P&gt;                 and ( author in rangeAuthor or changedby in rangeAuthor )&lt;/P&gt;&lt;P&gt;                 and version = '0'&lt;/P&gt;&lt;P&gt;                 and ( state = '0' or state = '1' ).&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;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; checkClassDoesExist...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form checkClassDoesExist using iLocClass like iClasses[]&lt;/P&gt;&lt;P&gt;                               rangeClass like soClassName[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waClass type tClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single clsname descript msg_id&lt;/P&gt;&lt;P&gt;         from vseoclass into corresponding fields of waClass&lt;/P&gt;&lt;P&gt;         where clsname in rangeClass&lt;/P&gt;&lt;P&gt;           and version = '1'&lt;/P&gt;&lt;P&gt;           and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    select single clsname descript msg_id&lt;/P&gt;&lt;P&gt;         from vseoclass into corresponding fields of waClass&lt;/P&gt;&lt;P&gt;           where clsname in rangeClass&lt;/P&gt;&lt;P&gt;             and version = '0'&lt;/P&gt;&lt;P&gt;             and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   if not waClass-clsname is initial.&lt;/P&gt;&lt;P&gt;     append waClass to iLocClass.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;endform.                                                                            "checkClassDoesExist&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; scanForAdditionalClassStuff...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForAdditionalClassStuff using iLocClasses like iClasses[]&lt;/P&gt;&lt;P&gt;                                       iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                                       value(getTextElements)&lt;/P&gt;&lt;P&gt;                                       value(getMessages)&lt;/P&gt;&lt;P&gt;                                       value(getCustDictStructures)&lt;/P&gt;&lt;P&gt;                                       value(getFunctions)&lt;/P&gt;&lt;P&gt;                                       value(getIncludes)&lt;/P&gt;&lt;P&gt;                                       value(customerOnly)&lt;/P&gt;&lt;P&gt;                                       value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                       value(recursiveIncludeSearch)&lt;/P&gt;&lt;P&gt;                                       value(recursiveFuncSearch)&lt;/P&gt;&lt;P&gt;                                       value(recursiveClassSearch).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waClass type tClass.&lt;/P&gt;&lt;P&gt;data: waMethod type tMethod.&lt;/P&gt;&lt;P&gt;data: myTabix type syTabix.&lt;/P&gt;&lt;P&gt;data: scanningForClasses type i value FALSE.&lt;/P&gt;&lt;P&gt;data: classNewLines type i value 0.&lt;/P&gt;&lt;P&gt;data: classCurrentLines type i value 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocClasses into waClass where scanned is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Once we have a list of all the classes we need to loop round them an select all the other objects&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    myTabix = sy-tabix.&lt;/P&gt;&lt;P&gt;    perform findClassDetails using waClass-clsName&lt;/P&gt;&lt;P&gt;                                   waClass&lt;/P&gt;&lt;P&gt;                                   iLocFunctions[]&lt;/P&gt;&lt;P&gt;                                   getTextElements&lt;/P&gt;&lt;P&gt;                                   getMessages&lt;/P&gt;&lt;P&gt;                                   getFunctions&lt;/P&gt;&lt;P&gt;                                   getCustDictStructures&lt;/P&gt;&lt;P&gt;                                   customerOnly&lt;/P&gt;&lt;P&gt;                                   customerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Set the scanned class so we do not check them again when running recursively.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    waClass-scanned = 'X'.&lt;/P&gt;&lt;P&gt;    modify iLocClasses from waClass index myTabix.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Now we have all the classes and details we need to find extra classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not recursiveClassSearch is initial.&lt;/P&gt;&lt;P&gt;    classCurrentLines = lines( iLocClasses ).&lt;/P&gt;&lt;P&gt;    loop at iLocClasses into waClass.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Don't try and find any other details for an exception class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if ( waClass-clsName ns 'ZCX_' or waClass-clsName ns 'CX_'  ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Find any classes defined in the main class definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        perform scanForClasses using waClass-privateClassKey&lt;/P&gt;&lt;P&gt;                                     waClass-clsname&lt;/P&gt;&lt;P&gt;                                     customerOnly&lt;/P&gt;&lt;P&gt;                                     customerNameRange&lt;/P&gt;&lt;P&gt;                                     iLocClasses[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform scanForClasses using waClass-publicClassKey&lt;/P&gt;&lt;P&gt;                                     waClass-clsname&lt;/P&gt;&lt;P&gt;                                     customerOnly&lt;/P&gt;&lt;P&gt;                                     customerNameRange&lt;/P&gt;&lt;P&gt;                                     iLocClasses[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform scanForClasses using waClass-protectedClassKey&lt;/P&gt;&lt;P&gt;                                     waClass-clsname&lt;/P&gt;&lt;P&gt;                                     customerOnly&lt;/P&gt;&lt;P&gt;                                     customerNameRange&lt;/P&gt;&lt;P&gt;                                     iLocClasses[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        loop at waClass-iMethods into waMethod.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Find any classes defined in any of the methods&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          perform scanForClasses using waMethod-methodKey&lt;/P&gt;&lt;P&gt;                                       waClass-clsname&lt;/P&gt;&lt;P&gt;                                       customerOnly&lt;/P&gt;&lt;P&gt;                                       customerNameRange&lt;/P&gt;&lt;P&gt;                                       iLocClasses[].&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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  We have a list of all the classes so lets go and find their details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    classNewLines = lines( iLocClasses ).&lt;/P&gt;&lt;P&gt;    if classNewLines &amp;gt; classCurrentLines.&lt;/P&gt;&lt;P&gt;      perform scanForAdditionalClassStuff using iLocClasses[]&lt;/P&gt;&lt;P&gt;                                                iLocFunctions[]&lt;/P&gt;&lt;P&gt;                                                getTextElements&lt;/P&gt;&lt;P&gt;                                                getMessages&lt;/P&gt;&lt;P&gt;                                                getCustDictStructures&lt;/P&gt;&lt;P&gt;                                                getFunctions&lt;/P&gt;&lt;P&gt;                                                getIncludes&lt;/P&gt;&lt;P&gt;                                                customerOnly&lt;/P&gt;&lt;P&gt;                                                customerNameRange&lt;/P&gt;&lt;P&gt;                                                recursiveIncludeSearch&lt;/P&gt;&lt;P&gt;                                                recursiveFuncSearch&lt;/P&gt;&lt;P&gt;                                                recursiveClassSearch.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                   "scanForAdditionalClassStuff&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; findClassDetails...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findClassDetails using value(className)&lt;/P&gt;&lt;P&gt;                                  waClass type tClass&lt;/P&gt;&lt;P&gt;                              iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                              value(getTextElements)&lt;/P&gt;&lt;P&gt;                              value(getMessages)&lt;/P&gt;&lt;P&gt;                              value(getFunctions)&lt;/P&gt;&lt;P&gt;                              value(getCustDictStructures)&lt;/P&gt;&lt;P&gt;                              value(customerOnly)&lt;/P&gt;&lt;P&gt;                              value(customerNameRange).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iEmptySelectionTexts type standard table of tTextTable.&lt;/P&gt;&lt;P&gt;data: myTabix type syTabix.&lt;/P&gt;&lt;P&gt;data: waMethod type tMethod.&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 keys we will use for finding data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform buildClassKeys using waClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if waClass-descript is initial.&lt;/P&gt;&lt;P&gt;    perform findClassDescription using className&lt;/P&gt;&lt;P&gt;                                       waClass-descript.&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;Find the class attributes.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  select single exposure msg_id state clsfinal r3release&lt;/P&gt;&lt;P&gt;                from vseoclass&lt;/P&gt;&lt;P&gt;                into (waClass-exposure, waClass-msg_id, waClass-state, waClass-clsfinal, waClass-r3release)&lt;/P&gt;&lt;P&gt;                       where clsName = waClass-clsName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Don't try and find any other details for an exception class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if ( waClass-clsName cs 'ZCX_' or waClass-clsName cs 'CX_'  ).&lt;/P&gt;&lt;P&gt;    waClass-scanned = 'X'.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    if not getTextElements is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Find the class texts from out of the database.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      perform retrieveProgramTexts using iEmptySelectionTexts[]&lt;/P&gt;&lt;P&gt;                                         waClass-iTextElements[]&lt;/P&gt;&lt;P&gt;                                         waClass-textElementKey.&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;  Find any declared dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not getCustDictStructures is initial.&lt;/P&gt;&lt;P&gt;      perform scanForTables using waClass-privateClassKey&lt;/P&gt;&lt;P&gt;                                  customerOnly&lt;/P&gt;&lt;P&gt;                                  customerNameRange&lt;/P&gt;&lt;P&gt;                                  waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForTables using waClass-publicClassKey&lt;/P&gt;&lt;P&gt;                                  customerOnly&lt;/P&gt;&lt;P&gt;                                  customerNameRange&lt;/P&gt;&lt;P&gt;                                  waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForTables using waClass-protectedClassKey&lt;/P&gt;&lt;P&gt;                                  customerOnly&lt;/P&gt;&lt;P&gt;                                  customerNameRange&lt;/P&gt;&lt;P&gt;                                  waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForTables using waClass-typesClassKey&lt;/P&gt;&lt;P&gt;                                  customerOnly&lt;/P&gt;&lt;P&gt;                                  customerNameRange&lt;/P&gt;&lt;P&gt;                                  waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForLikeOrType using waClass-privateClassKey&lt;/P&gt;&lt;P&gt;                                      customerOnly&lt;/P&gt;&lt;P&gt;                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                      waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForLikeOrType using waClass-publicClassKey&lt;/P&gt;&lt;P&gt;                                      customerOnly&lt;/P&gt;&lt;P&gt;                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                      waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForLikeOrType using waClass-protectedClassKey&lt;/P&gt;&lt;P&gt;                                      customerOnly&lt;/P&gt;&lt;P&gt;                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                      waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform scanForLikeOrType using waClass-typesClassKey&lt;/P&gt;&lt;P&gt;                                      customerOnly&lt;/P&gt;&lt;P&gt;                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                      waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Methods&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find all the methods for this class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform findClassMethods using className&lt;/P&gt;&lt;P&gt;                                   waClass-iMethods[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at waClass-iMethods[] into waMethod.&lt;/P&gt;&lt;P&gt;      myTabix = sy-tabix.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Find individual messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if not getMessages is initial.&lt;/P&gt;&lt;P&gt;        perform scanForMessages using waMethod-methodKey&lt;/P&gt;&lt;P&gt;                                      waClass-msg_id&lt;/P&gt;&lt;P&gt;                                      waClass-iMessages[].&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if not getCustDictStructures is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Find any declared dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        perform scanForTables using waMethod-methodKey&lt;/P&gt;&lt;P&gt;                                    customerOnly&lt;/P&gt;&lt;P&gt;                                    customerNameRange&lt;/P&gt;&lt;P&gt;                                    waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        perform scanForLikeOrType using waMethod-methodKey&lt;/P&gt;&lt;P&gt;                                        customerOnly&lt;/P&gt;&lt;P&gt;                                        customerNameRange&lt;/P&gt;&lt;P&gt;                                        waClass-iDictStruct[].&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if not getfunctions is initial.&lt;/P&gt;&lt;P&gt;        perform scanForFunctions using waMethod-methodKey&lt;/P&gt;&lt;P&gt;                                       waClass-clsName&lt;/P&gt;&lt;P&gt;                                       space&lt;/P&gt;&lt;P&gt;                                       space&lt;/P&gt;&lt;P&gt;                                       customerOnly&lt;/P&gt;&lt;P&gt;                                       customerNameRange&lt;/P&gt;&lt;P&gt;                                       iLocFunctions[].&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      modify waClass-iMethods from waMethod index myTabix.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                               "findClassDetails&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; buildClassKeys...   Finds the title text of a class.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form buildClassKeys using waClass type tClass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: classNameLength type i.&lt;/P&gt;&lt;P&gt;data: loops type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  classNameLength = strlen( waClass-clsName ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  cl_oo_classname_service=&amp;gt;get_pubsec_name( exporting clsname = waClass-clsName&lt;/P&gt;&lt;P&gt;                                            receiving result = waClass-publicClassKey ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  cl_oo_classname_service=&amp;gt;get_prisec_name( exporting clsname = waClass-clsName&lt;/P&gt;&lt;P&gt;                                            receiving result = waClass-privateClassKey ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  cl_oo_classname_service=&amp;gt;get_prosec_name( exporting clsname = waClass-clsName&lt;/P&gt;&lt;P&gt;                                            receiving result = waClass-protectedClassKey ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Text element key - length of text element key has to be 32 characters.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loops = 30 - classNameLength.&lt;/P&gt;&lt;P&gt;  waClass-textElementKey = waClass-clsName.&lt;/P&gt;&lt;P&gt;  do loops times.&lt;/P&gt;&lt;P&gt;    concatenate waClass-textElementKey '=' into waClass-textElementKey.&lt;/P&gt;&lt;P&gt;  enddo.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save this for later.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  concatenate waClass-textElementKey 'CP' into waClass-textElementKey.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Types Class key - length of class name has to be 32 characters.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loops = 30 - classNameLength.&lt;/P&gt;&lt;P&gt;  waClass-typesClassKey = waClass-clsName.&lt;/P&gt;&lt;P&gt;  do loops times.&lt;/P&gt;&lt;P&gt;    concatenate waClass-typesClassKey '=' into waClass-typesClassKey.&lt;/P&gt;&lt;P&gt;  enddo.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save this for later&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  concatenate waClass-typesClassKey 'CT' into waClass-typesClassKey.&lt;/P&gt;&lt;P&gt;endform.                                                                                "buildClassKeys&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; findClassDescription...   Finds the title text of a class.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findClassDescription using value(className)&lt;/P&gt;&lt;P&gt;                                      titleText.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single descript from vseoclass&lt;/P&gt;&lt;P&gt;                     into titleText&lt;/P&gt;&lt;P&gt;                     where clsname = className&lt;/P&gt;&lt;P&gt;                       and langu = sy-langu.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    select single descript from vseoclass&lt;/P&gt;&lt;P&gt;                       into titleText&lt;/P&gt;&lt;P&gt;                       where clsname = className.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                           "findClassDescription&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; findClassMethods...   Finds the methods of a class.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findClassMethods using value(className)&lt;/P&gt;&lt;P&gt;                            iLocMethods like dumiMethods[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iMethods type standard table of tMethod with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select cmpName descript exposure&lt;/P&gt;&lt;P&gt;         from vseomethod&lt;/P&gt;&lt;P&gt;         into corresponding fields of table iMethods&lt;/P&gt;&lt;P&gt;           where clsname = className&lt;/P&gt;&lt;P&gt;             and version = '1'&lt;/P&gt;&lt;P&gt;             and langu = sy-langu&lt;/P&gt;&lt;P&gt;             and ( state = '0' or state = '1' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    select cmpName descript exposure&lt;/P&gt;&lt;P&gt;           from vseomethod&lt;/P&gt;&lt;P&gt;           into corresponding fields of table iMethods&lt;/P&gt;&lt;P&gt;           where clsname = className&lt;/P&gt;&lt;P&gt;             and version = '0'&lt;/P&gt;&lt;P&gt;             and langu = sy-langu&lt;/P&gt;&lt;P&gt;             and ( state = '0' or state = '1' ).&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;Find the method key so that we can acces the source code later&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at iMethods.&lt;/P&gt;&lt;P&gt;    perform findMethodKey using className&lt;/P&gt;&lt;P&gt;                                iMethods-cmpName&lt;/P&gt;&lt;P&gt;                                iMethods-methodKey.&lt;/P&gt;&lt;P&gt;    modify iMethods.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  iLocMethods[] = iMethods[].&lt;/P&gt;&lt;P&gt;endform.                                                                               "findClassMethods&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;findMethodKey... find the unique key which identifes this method&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findMethodKey using value(className)&lt;/P&gt;&lt;P&gt;                         value(methodName)&lt;/P&gt;&lt;P&gt;                               methodKey.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: methodID type seocpdkey.&lt;/P&gt;&lt;P&gt;data: locMethodKey type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  methodID-clsname = className.&lt;/P&gt;&lt;P&gt;  methodID-cpdName = methodName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  cl_oo_classname_service=&amp;gt;get_method_include( exporting mtdkey = methodID&lt;/P&gt;&lt;P&gt;                                               receiving result = locMethodKey&lt;/P&gt;&lt;P&gt;                                               exceptions class_not_existing = 1&lt;/P&gt;&lt;P&gt;                                                          method_not_existing = 2 ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  methodKey = locMethodKey.&lt;/P&gt;&lt;P&gt;endform.                                                                                "findMethodKey&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;scanForMessages... Search each program for messages&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForMessages using value(programName)&lt;/P&gt;&lt;P&gt;                           value(mainMessageClass)&lt;/P&gt;&lt;P&gt;                                 iLocMessages like iMessages[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iIncludeLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iTokens type standard table of stokes with header line.&lt;/P&gt;&lt;P&gt;data: iStatements type standard table of sstmnt with header line.&lt;/P&gt;&lt;P&gt;data: iKeywords type standard table of text20 with header line.&lt;/P&gt;&lt;P&gt;data: waMessage type tMessage.&lt;/P&gt;&lt;P&gt;data: waMessageComparison type tMessage.&lt;/P&gt;&lt;P&gt;data: watokens type stokes.&lt;/P&gt;&lt;P&gt;data: nextLine type i.&lt;/P&gt;&lt;P&gt;data: stringLength type i value 0.&lt;/P&gt;&lt;P&gt;data: workingOnMessage type i value FALSE.&lt;/P&gt;&lt;P&gt;data: castProgramName type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the program code from the textpool.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  castProgramName = programName.&lt;/P&gt;&lt;P&gt;  read report castProgramName into iIncludeLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append MESSAGE to iKeywords.&lt;/P&gt;&lt;P&gt;  scan abap-source iIncludeLines tokens into iTokens with includes statements into iStatements keywords from iKeywords.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  clear iIncludeLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iTokens.&lt;/P&gt;&lt;P&gt;    if iTokens-str = MESSAGE.&lt;/P&gt;&lt;P&gt;      workingOnMessage = TRUE.&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;    if workingOnMessage = TRUE.&lt;/P&gt;&lt;P&gt;      stringLength = strlen( iTokens-str ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Message declaration 1&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if stringLength = 4 and iTokens-str+0(1) ca sy-abcde.&lt;/P&gt;&lt;P&gt;        waMessage-msgnr = iTokens-str+1(3).&lt;/P&gt;&lt;P&gt;        waMessage-arbgb = mainMessageClass.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        if iTokens-str cs '''' or iTokens-str cs '`'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Message declaration 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          translate iTokens-str using ''' '.&lt;/P&gt;&lt;P&gt;          translate iTokens-str using '` '.&lt;/P&gt;&lt;P&gt;          condense iTokens-str.&lt;/P&gt;&lt;P&gt;          shift iTokens-str left deleting leading space.&lt;/P&gt;&lt;P&gt;          waMessage-text = iTokens-str.&lt;/P&gt;&lt;P&gt;          waMessage-arbgb = 'Hard coded'.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          if iTokens-str = 'ID'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Message declaration 3&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            nextLine = sy-tabix + 1.&lt;/P&gt;&lt;P&gt;            read table iTokens index nextLine into waTokens.&lt;/P&gt;&lt;P&gt;            translate waTokens-str using ''' '.&lt;/P&gt;&lt;P&gt;            condense iTokens-str.&lt;/P&gt;&lt;P&gt;            shift waTokens-str left deleting leading space.&lt;/P&gt;&lt;P&gt;            if not waTokens-str = 'SY-MSGID'.&lt;/P&gt;&lt;P&gt;              waMessage-arbgb = waTokens-str.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              nextLine = nextLine + 4.&lt;/P&gt;&lt;P&gt;              read table iTokens index nextLine into waTokens.&lt;/P&gt;&lt;P&gt;              translate waTokens-str using ''' '.&lt;/P&gt;&lt;P&gt;              condense waTokens-str.&lt;/P&gt;&lt;P&gt;              shift waTokens-str left deleting leading space.&lt;/P&gt;&lt;P&gt;              waMessage-msgnr = waTokens-str.&lt;/P&gt;&lt;P&gt;            else.&lt;/P&gt;&lt;P&gt;              workingOnMessage = FALSE.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;P&gt;            if stringLength &amp;gt;= 5 and iTokens-str+4(1) = '('.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             Message declaration 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               waMessage-msgnr = iTokens-str+1(3).&lt;/P&gt;&lt;P&gt;               shift iTokens-str left up to '('.&lt;/P&gt;&lt;P&gt;               replace '(' into iTokens-str with space.&lt;/P&gt;&lt;P&gt;               replace ')' into iTokens-str with space.&lt;/P&gt;&lt;P&gt;               condense iTokens-str.&lt;/P&gt;&lt;P&gt;               waMessage-arbgb = iTokens-str.&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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     find the message text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       if not waMessage-arbgb is initial and not waMessage-msgnr is initial and waMessage-text is initial.&lt;/P&gt;&lt;P&gt;         select single text from t100 into waMessage-text&lt;/P&gt;&lt;P&gt;                            where sprsl = sy-langu&lt;/P&gt;&lt;P&gt;                              and arbgb = waMessage-arbgb&lt;/P&gt;&lt;P&gt;                              and msgnr = waMessage-msgnr.&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;     Append the message&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       if not waMessage is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Don't append the message if we already have it listed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         read table iLocMessages with key arbgb = waMessage-arbgb&lt;/P&gt;&lt;P&gt;                                          msgnr = waMessage-msgnr&lt;/P&gt;&lt;P&gt;                                          into waMessageComparison.&lt;/P&gt;&lt;P&gt;         if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;           append waMessage to iLocMessages.&lt;/P&gt;&lt;P&gt;         endif.&lt;/P&gt;&lt;P&gt;         clear waMessage.&lt;/P&gt;&lt;P&gt;         workingOnMessage = FALSE.&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.                                                                                "scanForMessages&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;scanForTables... Search each program for dictionary tables&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForTables using value(programName)&lt;/P&gt;&lt;P&gt;                         value(customerOnly)&lt;/P&gt;&lt;P&gt;                         value(customerNameRange)&lt;/P&gt;&lt;P&gt;                               iLocDictionary like iDictionary[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iIncludeLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iTokens type standard table of stokes with header line.&lt;/P&gt;&lt;P&gt;data: iStatements type standard table of sstmnt with header line.&lt;/P&gt;&lt;P&gt;data: iKeywords type standard table of text20 with header line.&lt;/P&gt;&lt;P&gt;data: waDictionary type tDictTable.&lt;/P&gt;&lt;P&gt;data: waDictionaryComparison type tDictTable.&lt;/P&gt;&lt;P&gt;data: castProgramName type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the program code from the textpool.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  castProgramName = programName.&lt;/P&gt;&lt;P&gt;  read report castProgramName into iIncludeLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append TABLES to iKeywords.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  scan abap-source iIncludeLines tokens into iTokens with includes statements into iStatements keywords from iKeywords.&lt;/P&gt;&lt;P&gt;  clear iIncludeLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iTokens ascending by str.&lt;/P&gt;&lt;P&gt;  delete iTokens where str = TABLES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iTokens.&lt;/P&gt;&lt;P&gt;    try.&lt;/P&gt;&lt;P&gt;      if iTokens-str&lt;EM&gt;0(1) = 'Y' or iTokens-str&lt;/EM&gt;0(1) = 'Z' or iTokens-str cs customerNameRange.&lt;/P&gt;&lt;P&gt;        waDictionary-tablename = iTokens-str.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Don't append the object if we already have it listed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        read table iLocDictionary into waDictionaryComparison with key tablename = waDictionary-tableName.&lt;/P&gt;&lt;P&gt;        if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;          perform findTableDescription using waDictionary-tablename&lt;/P&gt;&lt;P&gt;                                             waDictionary-tableTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          perform findTableDefinition using waDictionary-tableName&lt;/P&gt;&lt;P&gt;                                            waDictionary-iStructure[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          append waDictionary to iLocDictionary.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;      catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;    endtry.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                                "scanForTables&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; findProgramScreenFlow...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findProgramScreenFlow using waProgram type tProgram.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iFlow type standard table of tScreenFlow 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  = waProgram-progname&lt;/P&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            SCR_LOGIC = iFlow.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iFlow ascending by screen.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from iFlow comparing screen.&lt;/P&gt;&lt;P&gt;  if waProgram-subc &amp;lt;&amp;gt; 'M'.&lt;/P&gt;&lt;P&gt;    delete iFlow where screen &amp;gt;= '1000' and screen &amp;lt;= '1099'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iFlow.&lt;/P&gt;&lt;P&gt;    append iFlow to waProgram-iScreenFlow.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                          "findProgramScreenFlow&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; findFunctionScreenFlow...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form findFunctionScreenFlow using waFunction type tFunction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iFlow type standard table of tScreenFlow 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  = waFunction-progName&lt;/P&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            SCR_LOGIC = iFlow.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iFlow ascending by screen.&lt;/P&gt;&lt;P&gt;  delete adjacent duplicates from iFlow comparing screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iFlow.&lt;/P&gt;&lt;P&gt;    append iFlow to waFunction-iScreenFlow.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                          "findFunctionScreenFlow&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;scanForLikeOrType... Look for any dictionary objects referenced by a like or type statement&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form scanForLikeOrType using value(programName)&lt;/P&gt;&lt;P&gt;                             value(customerOnly)&lt;/P&gt;&lt;P&gt;                             value(customerNameRange)&lt;/P&gt;&lt;P&gt;                             iLocDictionary like iDictionary[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: head type string.&lt;/P&gt;&lt;P&gt;data: tail type string.&lt;/P&gt;&lt;P&gt;data: junk type string.&lt;/P&gt;&lt;P&gt;data: lineType type string.&lt;/P&gt;&lt;P&gt;data: lineLength type i value 0.&lt;/P&gt;&lt;P&gt;data: endOfLine type i value TRUE.&lt;/P&gt;&lt;P&gt;data: waDictionary type tDictTable.&lt;/P&gt;&lt;P&gt;data: waDictionaryComparison type tDictTable.&lt;/P&gt;&lt;P&gt;data: waLine type string.&lt;/P&gt;&lt;P&gt;data: castProgramName type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read the program code from the textpool.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  castProgramName = programName.&lt;/P&gt;&lt;P&gt;  read report castProgramName into iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLines into waLine.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Find custom tables.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    lineLength = strLen( waLine ).&lt;/P&gt;&lt;P&gt;    if lineLength &amp;gt; 0.&lt;/P&gt;&lt;P&gt;      if waLine(1) = ASTERIX.&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 waLine 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 endOfLine = TRUE.&lt;/P&gt;&lt;P&gt;        shift waLine up to LIKE.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          lineType = LIKE.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          shift waLine up to TYPE.&lt;/P&gt;&lt;P&gt;          if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;            find 'BEGIN OF' in waLine.&lt;/P&gt;&lt;P&gt;            if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;              find 'END OF' in waLine.&lt;/P&gt;&lt;P&gt;              if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;                find 'VALUE' in waLine.&lt;/P&gt;&lt;P&gt;                if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;                  lineType = TYPE.&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;            shift waLine up to INCLUDE.&lt;/P&gt;&lt;P&gt;            if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;              split waLine at space into junk iLines.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            shift waLine up to STRUCTURE.&lt;/P&gt;&lt;P&gt;            if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;              lineType = 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;      else.&lt;/P&gt;&lt;P&gt;        lineType = COMMA.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      case linetype.&lt;/P&gt;&lt;P&gt;        when LIKE or TYPE or STRUCTURE.&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;          shift waLine up to space.&lt;/P&gt;&lt;P&gt;          shift waLine left deleting leading space.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Are we only to download SAP dictionary structures.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          if not CustomerOnly is initial.&lt;/P&gt;&lt;P&gt;            try.&lt;/P&gt;&lt;P&gt;              if waLine&lt;EM&gt;0(1) = 'Y' or waLine&lt;/EM&gt;0(1) = 'Z' or waLine cs customerNameRange.&lt;/P&gt;&lt;P&gt;              else.&lt;/P&gt;&lt;P&gt;                lineType = ''.&lt;/P&gt;&lt;P&gt;                continue.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;              catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;            endtry.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          if waLine cs COMMA.&lt;/P&gt;&lt;P&gt;            split waLine at COMMA into head tail.&lt;/P&gt;&lt;P&gt;            if waLine cs DASH.&lt;/P&gt;&lt;P&gt;              split head at DASH into head tail.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;            if waLine cs OCCURS.&lt;/P&gt;&lt;P&gt;              split waLine 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 waLine cs PERIOD.&lt;/P&gt;&lt;P&gt;              split waLine at PERIOD into head tail.&lt;/P&gt;&lt;P&gt;              if waLine cs DASH.&lt;/P&gt;&lt;P&gt;                split head at DASH into head tail.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;              if waLine cs OCCURS.&lt;/P&gt;&lt;P&gt;                split waLine 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 waLine at SPACE into head tail.&lt;/P&gt;&lt;P&gt;              if waLine cs DASH.&lt;/P&gt;&lt;P&gt;                split head at DASH into head tail.&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 head is initial.&lt;/P&gt;&lt;P&gt;            waDictionary-tableName = head.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Don't append the object if we already have it listed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            read table iLocDictionary into waDictionaryComparison&lt;/P&gt;&lt;P&gt;                                      with key tablename = waDictionary-tableName.&lt;/P&gt;&lt;P&gt;            if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;              perform findTableDescription using waDictionary-tablename&lt;/P&gt;&lt;P&gt;                                                 waDictionary-tableTitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              perform findTableDefinition using waDictionary-tableName&lt;/P&gt;&lt;P&gt;                                                waDictionary-iStructure[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            Only append if the item is a table and not a structure or data element&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              if not waDictionary-iStructure[] is initial.&lt;/P&gt;&lt;P&gt;                append waDictionary to iLocDictionary.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;            clear waDictionary.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          lineType = ''.&lt;/P&gt;&lt;P&gt;      endcase.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                              "scanForLikeOrType&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; displayStatus...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form displayStatus using value(message)&lt;/P&gt;&lt;P&gt;                         value(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;    wait up to delay seconds.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                                "displayStatus&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; removeLeadingZeros...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form removeLeadingZeros changing myValue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'CONVERSION_EXIT_ALPHA_OUTPUT'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            INPUT   = myValue&lt;/P&gt;&lt;P&gt;      importing&lt;/P&gt;&lt;P&gt;           OUTPUT  = myValue&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            others  = 1.&lt;/P&gt;&lt;P&gt;endform.                                                                             "removeLeadingZeros&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;determineFrontendOPSystem.... Determine the frontend operating system type.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form determineFrontendOPSystem using separator.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: platformID type i value 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  create object objFile.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call method objFile-&amp;gt;get_platform receiving platform = platformID&lt;/P&gt;&lt;P&gt;                                    exceptions cntl_error = 1&lt;/P&gt;&lt;P&gt;                                    error_no_gui = 2&lt;/P&gt;&lt;P&gt;                                    not_supported_by_gui = 3.&lt;/P&gt;&lt;P&gt;  case platformID.&lt;/P&gt;&lt;P&gt;    when objFile-&amp;gt;PLATFORM_WINDOWS95&lt;/P&gt;&lt;P&gt;         or objFile-&amp;gt;PLATFORM_WINDOWS98&lt;/P&gt;&lt;P&gt;         or objFile-&amp;gt;PLATFORM_NT351&lt;/P&gt;&lt;P&gt;         or objFile-&amp;gt;PLATFORM_NT40&lt;/P&gt;&lt;P&gt;         or objFile-&amp;gt;PLATFORM_NT50&lt;/P&gt;&lt;P&gt;         or objFile-&amp;gt;PLATFORM_MAC&lt;/P&gt;&lt;P&gt;         or objFile-&amp;gt;PLATFORM_OS2.&lt;/P&gt;&lt;P&gt;      separator = '\'.&lt;/P&gt;&lt;P&gt;      frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;    when others.&lt;/P&gt;&lt;P&gt;      separator = '/'.&lt;/P&gt;&lt;P&gt;      frontendOpSystem = UNIX.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;endform.                                                                      "determineFrontendOPSystem&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;downloadDDStructures... 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 downloadDDStructures using iLocDictionary like iDictionary[]&lt;/P&gt;&lt;P&gt;                                value(pathname)&lt;/P&gt;&lt;P&gt;                                value(HtmlFileExtension)&lt;/P&gt;&lt;P&gt;                                value(subDir)&lt;/P&gt;&lt;P&gt;                                value(sortTablesAsc).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waDictionary&amp;gt; type tDictTable.&lt;/P&gt;&lt;P&gt;data: tableFilename type string.&lt;/P&gt;&lt;P&gt;data: tableFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: iHtmlTable type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: newSubDirectory type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocDictionary assigning &amp;lt;waDictionary&amp;gt;.&lt;/P&gt;&lt;P&gt;    perform buildFilename using pathName&lt;/P&gt;&lt;P&gt;                                subDir&lt;/P&gt;&lt;P&gt;                                &amp;lt;waDictionary&amp;gt;-tablename&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                HtmlFileExtension&lt;/P&gt;&lt;P&gt;                                IS_TABLE&lt;/P&gt;&lt;P&gt;                                tableFilenameWithPath&lt;/P&gt;&lt;P&gt;                                tablefilename&lt;/P&gt;&lt;P&gt;                                newSubDirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Try and import a converted table to memory as it will be much quicker than converting it again&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    import iHtmlTable from memory id &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      concatenate 'Converting table' &amp;lt;waDictionary&amp;gt;-tablename 'to html' into statusBarMessage separated by space.&lt;/P&gt;&lt;P&gt;      perform displayStatus using statusBarMessage 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      perform convertDDtoHTML using &amp;lt;waDictionary&amp;gt;-iStructure[]&lt;/P&gt;&lt;P&gt;                                    iHtmlTable[]&lt;/P&gt;&lt;P&gt;                                    &amp;lt;waDictionary&amp;gt;-tableName&lt;/P&gt;&lt;P&gt;                                    &amp;lt;waDictionary&amp;gt;-tableTitle&lt;/P&gt;&lt;P&gt;                                    sortTablesAsc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      export iHtmlTable to memory id &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform saveFileToPc using iHtmlTable[]&lt;/P&gt;&lt;P&gt;                               tableFilenameWithPath&lt;/P&gt;&lt;P&gt;                               tableFilename&lt;/P&gt;&lt;P&gt;                               space&lt;/P&gt;&lt;P&gt;                               space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear iHtmlTable[].&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                           "downloadDDStructures&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;downloadMessageClass...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form downloadMessageClass using iLocMessages like iMessages[]&lt;/P&gt;&lt;P&gt;                                value(messageClassName)&lt;/P&gt;&lt;P&gt;                                value(userFilePath)&lt;/P&gt;&lt;P&gt;                                value(fileExtension)&lt;/P&gt;&lt;P&gt;                                value(HTMLfileFlag)&lt;/P&gt;&lt;P&gt;                                      subDir&lt;/P&gt;&lt;P&gt;                                value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                                value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                value(getIncludes)&lt;/P&gt;&lt;P&gt;                                value(getDictStructures)&lt;/P&gt;&lt;P&gt;                                value(userHasSelectedMessageClasses).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: htmlPageName type string.&lt;/P&gt;&lt;P&gt;data: newFilenameOnly type string.&lt;/P&gt;&lt;P&gt;data: newFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: iHtmlTable type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: newSubDirectory type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform appendMessagesToFile using iLocMessages[]&lt;/P&gt;&lt;P&gt;                                     iHtmlTable[]&lt;/P&gt;&lt;P&gt;                                     userHasSelectedMessageClasses.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate `message class ` messageClassName into htmlPageName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if htmlFileFlag is initial.&lt;/P&gt;&lt;P&gt;    append '' to iHtmlTable.&lt;/P&gt;&lt;P&gt;    append  '----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------------------" /&gt;&lt;P&gt;' to iHtmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform buildFooterMessage using 'TEXT'&lt;/P&gt;&lt;P&gt;                                     iHtmlTable.&lt;/P&gt;&lt;P&gt;    append iHtmlTable.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    perform convertCodeToHtml using iHtmlTable[]&lt;/P&gt;&lt;P&gt;                                    htmlPageName&lt;/P&gt;&lt;P&gt;                                    space&lt;/P&gt;&lt;P&gt;                                    IS_MESSAGECLASS&lt;/P&gt;&lt;P&gt;                                    ''&lt;/P&gt;&lt;P&gt;                                    FALSE&lt;/P&gt;&lt;P&gt;                                    syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                    fileExtension&lt;/P&gt;&lt;P&gt;                                    customerNameRange&lt;/P&gt;&lt;P&gt;                                    getIncludes&lt;/P&gt;&lt;P&gt;                                    getDictStructures.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                              subDir&lt;/P&gt;&lt;P&gt;                              messageClassName&lt;/P&gt;&lt;P&gt;                              space&lt;/P&gt;&lt;P&gt;                              space&lt;/P&gt;&lt;P&gt;                              fileExtension&lt;/P&gt;&lt;P&gt;                              IS_MESSAGECLASS&lt;/P&gt;&lt;P&gt;                              newFilenameWithPath&lt;/P&gt;&lt;P&gt;                              newFilenameOnly&lt;/P&gt;&lt;P&gt;                              newSubDirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform saveFileToPc using iHtmlTable[]&lt;/P&gt;&lt;P&gt;                               newFilenameWithPath&lt;/P&gt;&lt;P&gt;                               newFilenameOnly&lt;/P&gt;&lt;P&gt;                               space&lt;/P&gt;&lt;P&gt;                               space.&lt;/P&gt;&lt;P&gt;endform.                                                                          "downloadMessageClass&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; appendMessagesToFile&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form appendMessagesToFile using iLocMessages like iMessages[]&lt;/P&gt;&lt;P&gt;                                iLocHtml like dumiHtml[]&lt;/P&gt;&lt;P&gt;                                value(userHasSelectedMessageClasses).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: previousMessageID like iMessages-arbgb.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waMessage&amp;gt; type tMessage.&lt;/P&gt;&lt;P&gt;data: waHtml type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iLocMessages ascending by arbgb msgnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not iLocMessages[] is initial.&lt;/P&gt;&lt;P&gt;    if userHasSelectedMessageClasses is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Only add these extra lines if we are actually appending them to the end of some program code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;      append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      append '*Messages' to iLocHtml.&lt;/P&gt;&lt;P&gt;      append '*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------" /&gt;&lt;P&gt;' to iLocHtml.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loop at iLocMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;      if ( &amp;lt;waMessage&amp;gt;-arbgb &amp;lt;&amp;gt; previousMessageID ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        if userHasSelectedMessageClasses is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Only add this extra lines if we are actually appending them to the end of some program code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          append '*' to iLocHtml.&lt;/P&gt;&lt;P&gt;          concatenate `* Message class: ` &amp;lt;waMessage&amp;gt;-arbgb into waHtml.&lt;/P&gt;&lt;P&gt;          append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        previousMessageID = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;        clear waHtml.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if userHasSelectedMessageClasses is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Only add this extra lines if we are actually appending them to the end of some program code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        concatenate '*' &amp;lt;waMessage&amp;gt;-msgnr `   ` &amp;lt;waMessage&amp;gt;-text into waHtml.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate &amp;lt;waMessage&amp;gt;-msgnr `   ` &amp;lt;waMessage&amp;gt;-text into waHtml.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                           "appendMessagesToFile&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; downloadFunctions...       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 downloadFunctions using iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                             value(userFilePath)&lt;/P&gt;&lt;P&gt;                             value(fileExtension)&lt;/P&gt;&lt;P&gt;                             value(subDir)&lt;/P&gt;&lt;P&gt;                             value(downloadDocumentation)&lt;/P&gt;&lt;P&gt;                             value(convertToHtml)&lt;/P&gt;&lt;P&gt;                             value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                             value(customerNameRange)&lt;/P&gt;&lt;P&gt;                             value(getIncludes)&lt;/P&gt;&lt;P&gt;                             value(getDictStruct)&lt;/P&gt;&lt;P&gt;                             value(textFileExtension)&lt;/P&gt;&lt;P&gt;                             value(htmlFileExtension)&lt;/P&gt;&lt;P&gt;                             value(sortTablesAsc).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: mainSubdir type string.&lt;/P&gt;&lt;P&gt;data: incSubdir type string.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waFunction&amp;gt; type tFunction.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waInclude&amp;gt; type tInclude.&lt;/P&gt;&lt;P&gt;data: iEmptyTextelements type standard table of tTextTable.&lt;/P&gt;&lt;P&gt;data: iEmptySelectionTexts type standard table of tTextTable.&lt;/P&gt;&lt;P&gt;data: iEmptyMessages type standard table of tMessage.&lt;/P&gt;&lt;P&gt;data: iEmptyGuiTitles type standard table of tGuiTitle.&lt;/P&gt;&lt;P&gt;data: functionDocumentationExists type i value FALSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocFunctions assigning &amp;lt;waFunction&amp;gt;.&lt;/P&gt;&lt;P&gt;    if subDir is initial.&lt;/P&gt;&lt;P&gt;      incSubDir = &amp;lt;waFunction&amp;gt;-functionName.&lt;/P&gt;&lt;P&gt;      mainSubDir = ''.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      concatenate subdir &amp;lt;waFunction&amp;gt;-functionName into incSubDir separated by SLASHSEPARATOR.&lt;/P&gt;&lt;P&gt;      mainSubDir = subDir.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not downloadDocumentation is initial.&lt;/P&gt;&lt;P&gt;      perform downloadFunctionDocs using &amp;lt;waFunction&amp;gt;-functionName&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waFunction&amp;gt;-functionTitle&lt;/P&gt;&lt;P&gt;                                         userFilePath&lt;/P&gt;&lt;P&gt;                                         fileExtension&lt;/P&gt;&lt;P&gt;                                         convertToHtml&lt;/P&gt;&lt;P&gt;                                         mainSubDir&lt;/P&gt;&lt;P&gt;                                         functionDocumentationExists.&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;  Download main source code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform readFunctionAndDownload using &amp;lt;waFunction&amp;gt;-iTextelements[]&lt;/P&gt;&lt;P&gt;                                          &amp;lt;waFunction&amp;gt;-iSelectionTexts[]&lt;/P&gt;&lt;P&gt;                                          &amp;lt;wafunction&amp;gt;-iMessages[]&lt;/P&gt;&lt;P&gt;                                          &amp;lt;wafunction&amp;gt;-functionName&lt;/P&gt;&lt;P&gt;                                          &amp;lt;wafunction&amp;gt;-functionMainInclude&lt;/P&gt;&lt;P&gt;                                          &amp;lt;waFunction&amp;gt;-functionTitle&lt;/P&gt;&lt;P&gt;                                          userFilePath&lt;/P&gt;&lt;P&gt;                                          fileExtension&lt;/P&gt;&lt;P&gt;                                          mainSubDir&lt;/P&gt;&lt;P&gt;                                          convertToHtml&lt;/P&gt;&lt;P&gt;                                          functionDocumentationExists&lt;/P&gt;&lt;P&gt;                                          syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                          customerNameRange&lt;/P&gt;&lt;P&gt;                                          getIncludes&lt;/P&gt;&lt;P&gt;                                          getDictStruct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Download top include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform readIncludeAndDownload using iEmptyTextelements[]&lt;/P&gt;&lt;P&gt;                                         iEmptySelectionTexts[]&lt;/P&gt;&lt;P&gt;                                         iEmptyMessages[]&lt;/P&gt;&lt;P&gt;                                         iEmptyGuiTitles[]&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waFunction&amp;gt;-topIncludeName&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waFunction&amp;gt;-functionName&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waFunction&amp;gt;-functionTitle&lt;/P&gt;&lt;P&gt;                                         IS_FUNCTION&lt;/P&gt;&lt;P&gt;                                         userFilePath&lt;/P&gt;&lt;P&gt;                                         fileExtension&lt;/P&gt;&lt;P&gt;                                         mainSubDir&lt;/P&gt;&lt;P&gt;                                         convertToHtml&lt;/P&gt;&lt;P&gt;                                         syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                         customerNameRange&lt;/P&gt;&lt;P&gt;                                         getIncludes&lt;/P&gt;&lt;P&gt;                                         getDictStruct.&lt;/P&gt;&lt;P&gt;&lt;/P&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;    if not &amp;lt;waFunction&amp;gt;-iScreenFlow[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadScreens using &amp;lt;wafunction&amp;gt;-iScreenFlow[]&lt;/P&gt;&lt;P&gt;                                    &amp;lt;wafunction&amp;gt;-progname&lt;/P&gt;&lt;P&gt;                                    userFilePath&lt;/P&gt;&lt;P&gt;                                    textFileExtension&lt;/P&gt;&lt;P&gt;                                    mainSubDir.&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;  Download GUI titles&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not &amp;lt;waFunction&amp;gt;-iGUITitle[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadGUITitles using &amp;lt;wafunction&amp;gt;-iGUITitle&lt;/P&gt;&lt;P&gt;                                      userFilePath&lt;/P&gt;&lt;P&gt;                                      textFileExtension&lt;/P&gt;&lt;P&gt;                                      mainsubDir.&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;  Download all other includes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;wafunction&amp;gt;-iIncludes assigning &amp;lt;waInclude&amp;gt;.&lt;/P&gt;&lt;P&gt;      perform readIncludeAndDownload using iEmptyTextelements[]&lt;/P&gt;&lt;P&gt;                                           iEmptySelectionTexts[]&lt;/P&gt;&lt;P&gt;                                           iEmptyMessages[]&lt;/P&gt;&lt;P&gt;                                           iEmptyGuiTitles[]&lt;/P&gt;&lt;P&gt;                                           &amp;lt;waInclude&amp;gt;-IncludeName&lt;/P&gt;&lt;P&gt;                                           space&lt;/P&gt;&lt;P&gt;                                           &amp;lt;waInclude&amp;gt;-IncludeTitle&lt;/P&gt;&lt;P&gt;                                           IS_PROGRAM&lt;/P&gt;&lt;P&gt;                                           userFilePath&lt;/P&gt;&lt;P&gt;                                           fileExtension&lt;/P&gt;&lt;P&gt;                                           incSubDir&lt;/P&gt;&lt;P&gt;                                           convertToHtml&lt;/P&gt;&lt;P&gt;                                           syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                           customerNameRange&lt;/P&gt;&lt;P&gt;                                           getIncludes&lt;/P&gt;&lt;P&gt;                                           getDictStruct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Download all dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not &amp;lt;wafunction&amp;gt;-iDictStruct[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadDDStructures using &amp;lt;wafunction&amp;gt;-iDictStruct[]&lt;/P&gt;&lt;P&gt;                                         userFilePath&lt;/P&gt;&lt;P&gt;                                         htmlFileExtension&lt;/P&gt;&lt;P&gt;                                         incSubDir&lt;/P&gt;&lt;P&gt;                                         sortTablesAsc .&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                              "downloadFunctions&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;  readIcludeAndDownload...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form readIncludeAndDownload using iLocTextElements like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                                  iLocSelectionTexts like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                                  iLocMessages like iMessages[]&lt;/P&gt;&lt;P&gt;                                  iLocGUITitles like dumIGUITitle[]&lt;/P&gt;&lt;P&gt;                                  value(programName)&lt;/P&gt;&lt;P&gt;                                  value(functionName)&lt;/P&gt;&lt;P&gt;                                  value(shortText)&lt;/P&gt;&lt;P&gt;                                  value(overideProgType)&lt;/P&gt;&lt;P&gt;                                  value(userFilePath)&lt;/P&gt;&lt;P&gt;                                  value(fileExtension)&lt;/P&gt;&lt;P&gt;                                  value(additionalSubDir)&lt;/P&gt;&lt;P&gt;                                  value(convertToHtml)&lt;/P&gt;&lt;P&gt;                                  value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                                  value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                  value(getIncludes)&lt;/P&gt;&lt;P&gt;                                  value(getDictStructures).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: localFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: localFilenameOnly type string.&lt;/P&gt;&lt;P&gt;data: newSubdirectory type string.&lt;/P&gt;&lt;P&gt;data: objectName type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  read report programName into iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Download GUI titles for main program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not iLocGUITitles[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendGUITitles using iLocGUITitles[]&lt;/P&gt;&lt;P&gt;                                  iLines[].&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;Download text elements for main program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not iLocTextElements[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendTextElements using iLocTextElements[]&lt;/P&gt;&lt;P&gt;                                     iLines[].&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;Download selection texts for main program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not iLocSelectiontexts[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendSelectionTexts using iLocSelectiontexts[]&lt;/P&gt;&lt;P&gt;                                       iLines[].&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;Download messages classes for main program.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not iLocMessages[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendMessagesToFile using iLocMessages[]&lt;/P&gt;&lt;P&gt;                                       iLines[]&lt;/P&gt;&lt;P&gt;                                       space.&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;  if convertToHtml is initial.&lt;/P&gt;&lt;P&gt;    append '' to iLines.&lt;/P&gt;&lt;P&gt;    append '----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------------------" /&gt;&lt;P&gt;' to iLines.&lt;/P&gt;&lt;P&gt;    perform buildFooterMessage using 'TEXT'&lt;/P&gt;&lt;P&gt;                                     iLines.&lt;/P&gt;&lt;P&gt;    append iLines.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    perform convertCodeToHtml using iLines[]&lt;/P&gt;&lt;P&gt;                                    programName&lt;/P&gt;&lt;P&gt;                                    shortText&lt;/P&gt;&lt;P&gt;                                    overideProgType&lt;/P&gt;&lt;P&gt;                                    space&lt;/P&gt;&lt;P&gt;                                    space&lt;/P&gt;&lt;P&gt;                                    syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                    fileExtension&lt;/P&gt;&lt;P&gt;                                    customerNameRange&lt;/P&gt;&lt;P&gt;                                    getIncludes&lt;/P&gt;&lt;P&gt;                                    getDictStructures.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if functionName is initial.&lt;/P&gt;&lt;P&gt;    objectName = programName.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    objectName = functionName.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                              additionalSubDir&lt;/P&gt;&lt;P&gt;                              objectName&lt;/P&gt;&lt;P&gt;                              space&lt;/P&gt;&lt;P&gt;                              programName&lt;/P&gt;&lt;P&gt;                              fileExtension&lt;/P&gt;&lt;P&gt;                              overideProgType&lt;/P&gt;&lt;P&gt;                              localFilenameWithPath&lt;/P&gt;&lt;P&gt;                              localfilenameOnly&lt;/P&gt;&lt;P&gt;                              newSubdirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform saveFileToPc using iLines[]&lt;/P&gt;&lt;P&gt;                             localFilenameWithPath&lt;/P&gt;&lt;P&gt;                             localFilenameOnly&lt;/P&gt;&lt;P&gt;                             space&lt;/P&gt;&lt;P&gt;                             space.&lt;/P&gt;&lt;P&gt;endform.                                                                         "readIncludeAndDownload&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;  readClassAndDownload...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form readClassAndDownload using waLocClass type tClass&lt;/P&gt;&lt;P&gt;                                value(className)&lt;/P&gt;&lt;P&gt;                                value(functionName)&lt;/P&gt;&lt;P&gt;                                value(overideProgType)&lt;/P&gt;&lt;P&gt;                                value(userFilePath)&lt;/P&gt;&lt;P&gt;                                value(fileExtension)&lt;/P&gt;&lt;P&gt;                                value(additionalSubDir)&lt;/P&gt;&lt;P&gt;                                value(convertToHtml)&lt;/P&gt;&lt;P&gt;                                value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                                value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                value(getIncludes)&lt;/P&gt;&lt;P&gt;                                value(getDictStructures).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iTempLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: localFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: localFilenameOnly type string.&lt;/P&gt;&lt;P&gt;data: newSubdirectory type string.&lt;/P&gt;&lt;P&gt;data: objectName type string.&lt;/P&gt;&lt;P&gt;data: castClassName type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build up attribute comments&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;  append '*   Class attributes.                                                    *' to iLines.&lt;/P&gt;&lt;P&gt;  append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;  case waLocClass-exposure.&lt;/P&gt;&lt;P&gt;    when 0.&lt;/P&gt;&lt;P&gt;      append `Instantiation: Private` to iLines.&lt;/P&gt;&lt;P&gt;    when 1.&lt;/P&gt;&lt;P&gt;      append `Instantiation: Protected` to iLines.&lt;/P&gt;&lt;P&gt;    when 2.&lt;/P&gt;&lt;P&gt;      append `Instantiation: Public` to iLines.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;  concatenate `Message class: ` waLocClass-msg_id into iLines.&lt;/P&gt;&lt;P&gt;  append iLines.&lt;/P&gt;&lt;P&gt;  case waLocClass-state.&lt;/P&gt;&lt;P&gt;    when 0.&lt;/P&gt;&lt;P&gt;      append `State: Only Modelled` to iLines.&lt;/P&gt;&lt;P&gt;    when 1.&lt;/P&gt;&lt;P&gt;      append `State: Implemented` to iLines.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;  concatenate `Final Indicator: ` waLocClass-clsfinal into iLines.&lt;/P&gt;&lt;P&gt;  append iLines.&lt;/P&gt;&lt;P&gt;  concatenate `R/3 Release: ` waLocClass-r3Release into iLines.&lt;/P&gt;&lt;P&gt;  append iLines.&lt;/P&gt;&lt;P&gt;  clear iLines.&lt;/P&gt;&lt;P&gt;  append iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  castClassName = waLocClass-publicClassKey.&lt;/P&gt;&lt;P&gt;  read report castClassName into iTempLines.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    perform reFormatClassCode using iTempLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    append '*   Public section of class.                                             *' to iLines.&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    loop at iTempLines.&lt;/P&gt;&lt;P&gt;      append iTempLines to iLines.&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;  castClassName = waLocClass-privateClassKey.&lt;/P&gt;&lt;P&gt;  read report castClassName into iTempLines.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    perform reFormatClassCode using iTempLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append iLines.&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    append '*   Private section of class.                                            *' to iLines.&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    loop at iTempLines.&lt;/P&gt;&lt;P&gt;      append iTempLines to iLines.&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;  castClassName = waLocClass-ProtectedClassKey.&lt;/P&gt;&lt;P&gt;  read report castClassName into iTempLines.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    perform reFormatClassCode using iTempLines[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append iLines.&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    append '*   Protected section of class.                                          *' to iLines.&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    loop at iTempLines.&lt;/P&gt;&lt;P&gt;      append iTempLines to iLines.&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;  castClassName = waLocClass-typesClassKey.&lt;/P&gt;&lt;P&gt;  read report castClassName into iTempLines.&lt;/P&gt;&lt;P&gt;  if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    append iLines.&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    append '*   Types section of class.                                              *' to iLines.&lt;/P&gt;&lt;P&gt;    append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;    loop at iTempLines.&lt;/P&gt;&lt;P&gt;      append iTempLines to iLines.&lt;/P&gt;&lt;P&gt;    endloop.&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;Download text elements for this class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not waLocClass-iTextElements[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendTextElements using waLocClass-iTextElements[]&lt;/P&gt;&lt;P&gt;                                     iLines[].&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;Download messages classes for this class.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not waLocClass-iMessages[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendMessagesToFile using waLocClass-iMessages[]&lt;/P&gt;&lt;P&gt;                                       iLines[]&lt;/P&gt;&lt;P&gt;                                       space.&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;  if convertToHtml is initial.&lt;/P&gt;&lt;P&gt;    append '' to iLines.&lt;/P&gt;&lt;P&gt;    append '----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------------------" /&gt;&lt;P&gt;' to iLines.&lt;/P&gt;&lt;P&gt;    perform buildFooterMessage using 'TEXT'&lt;/P&gt;&lt;P&gt;                                     iLines.&lt;/P&gt;&lt;P&gt;    append iLines.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    perform convertClassToHtml using iLines[]&lt;/P&gt;&lt;P&gt;                                    className&lt;/P&gt;&lt;P&gt;                                    waLocClass-descript&lt;/P&gt;&lt;P&gt;                                    overideProgType&lt;/P&gt;&lt;P&gt;                                    syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                    fileExtension&lt;/P&gt;&lt;P&gt;                                    customerNameRange&lt;/P&gt;&lt;P&gt;                                    getDictStructures.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if functionName is initial.&lt;/P&gt;&lt;P&gt;    objectName = className.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    objectName = functionName.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                              additionalSubDir&lt;/P&gt;&lt;P&gt;                              objectName&lt;/P&gt;&lt;P&gt;                              space&lt;/P&gt;&lt;P&gt;                              className&lt;/P&gt;&lt;P&gt;                              fileExtension&lt;/P&gt;&lt;P&gt;                              overideProgType&lt;/P&gt;&lt;P&gt;                              localFilenameWithPath&lt;/P&gt;&lt;P&gt;                              localfilenameOnly&lt;/P&gt;&lt;P&gt;                              newSubdirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform saveFileToPc using iLines[]&lt;/P&gt;&lt;P&gt;                             localFilenameWithPath&lt;/P&gt;&lt;P&gt;                             localFilenameOnly&lt;/P&gt;&lt;P&gt;                             space&lt;/P&gt;&lt;P&gt;                             space.&lt;/P&gt;&lt;P&gt;endform.                                                                           "readClassAndDownload&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;  readMethodAndDownload...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form readMethodAndDownload using waLocMethod type tMethod&lt;/P&gt;&lt;P&gt;                                value(methodName)&lt;/P&gt;&lt;P&gt;                                value(methodKey)&lt;/P&gt;&lt;P&gt;                                value(functionName)&lt;/P&gt;&lt;P&gt;                                value(overideProgType)&lt;/P&gt;&lt;P&gt;                                value(userFilePath)&lt;/P&gt;&lt;P&gt;                                value(fileExtension)&lt;/P&gt;&lt;P&gt;                                value(additionalSubDir)&lt;/P&gt;&lt;P&gt;                                value(convertToHtml)&lt;/P&gt;&lt;P&gt;                                value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                                value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                value(getIncludes)&lt;/P&gt;&lt;P&gt;                                value(getDictStructures).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iTempLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: localFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: localFilenameOnly type string.&lt;/P&gt;&lt;P&gt;data: newSubdirectory type string.&lt;/P&gt;&lt;P&gt;data: objectName type string.&lt;/P&gt;&lt;P&gt;data: castMethodKey type program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add the method scope to the downloaded file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;  append '*   Method attributes.                                                   *' to iLines.&lt;/P&gt;&lt;P&gt;  append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;  case waLocMethod-exposure.&lt;/P&gt;&lt;P&gt;    when 0.&lt;/P&gt;&lt;P&gt;      append `Instantiation: Private` to iLines.&lt;/P&gt;&lt;P&gt;    when 1.&lt;/P&gt;&lt;P&gt;      append `Instantiation: Protected` to iLines.&lt;/P&gt;&lt;P&gt;    when 2.&lt;/P&gt;&lt;P&gt;      append `Instantiation: Public` to iLines.&lt;/P&gt;&lt;P&gt;  endcase.&lt;/P&gt;&lt;P&gt;  append '**************************************************************************' to iLines.&lt;/P&gt;&lt;P&gt;  append '' to iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  castMethodKey = waLocMethod-methodKey.&lt;/P&gt;&lt;P&gt;  read report castMethodKey into iTempLines.&lt;/P&gt;&lt;P&gt;  loop at iTempLines.&lt;/P&gt;&lt;P&gt;    append iTempLines to iLines.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if convertToHtml is initial.&lt;/P&gt;&lt;P&gt;    append '' to iLines.&lt;/P&gt;&lt;P&gt;    append '----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------------------" /&gt;&lt;P&gt;' to iLines.&lt;/P&gt;&lt;P&gt;    perform buildFooterMessage using 'TEXT'&lt;/P&gt;&lt;P&gt;                                     iLines.&lt;/P&gt;&lt;P&gt;    append iLines.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    perform convertCodeToHtml using iLines[]&lt;/P&gt;&lt;P&gt;                                    methodName&lt;/P&gt;&lt;P&gt;                                    waLocMethod-descript&lt;/P&gt;&lt;P&gt;                                    overideProgType&lt;/P&gt;&lt;P&gt;                                    space&lt;/P&gt;&lt;P&gt;                                    space&lt;/P&gt;&lt;P&gt;                                    syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                    fileExtension&lt;/P&gt;&lt;P&gt;                                    customerNameRange&lt;/P&gt;&lt;P&gt;                                    getIncludes&lt;/P&gt;&lt;P&gt;                                    getDictStructures.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if functionName is initial.&lt;/P&gt;&lt;P&gt;    objectName = methodName.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    objectName = functionName.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                              additionalSubDir&lt;/P&gt;&lt;P&gt;                              objectName&lt;/P&gt;&lt;P&gt;                              space&lt;/P&gt;&lt;P&gt;                              methodName&lt;/P&gt;&lt;P&gt;                              fileExtension&lt;/P&gt;&lt;P&gt;                              overideProgType&lt;/P&gt;&lt;P&gt;                              localFilenameWithPath&lt;/P&gt;&lt;P&gt;                              localfilenameOnly&lt;/P&gt;&lt;P&gt;                              newSubdirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform saveFileToPc using iLines[]&lt;/P&gt;&lt;P&gt;                             localFilenameWithPath&lt;/P&gt;&lt;P&gt;                             localFilenameOnly&lt;/P&gt;&lt;P&gt;                             space&lt;/P&gt;&lt;P&gt;                             space.&lt;/P&gt;&lt;P&gt;endform.                                                                          "readMethodAndDownload&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;  readFunctionAndDownload...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form readFunctionAndDownload using iLocTextElements like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                                   iLocSelectionTexts like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                                   iLocMessages like iMessages[]&lt;/P&gt;&lt;P&gt;                                   value(functionName)&lt;/P&gt;&lt;P&gt;                                   value(functionInternalName)&lt;/P&gt;&lt;P&gt;                                   value(shortText)&lt;/P&gt;&lt;P&gt;                                   value(userFilePath)&lt;/P&gt;&lt;P&gt;                                   value(fileExtension)&lt;/P&gt;&lt;P&gt;                                   value(subDir)&lt;/P&gt;&lt;P&gt;                                   value(convertToHtml)&lt;/P&gt;&lt;P&gt;                                   value(functionDocumentationExists)&lt;/P&gt;&lt;P&gt;                                   value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                                   value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                   value(getIncludes)&lt;/P&gt;&lt;P&gt;                                   value(getDictStructures).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: localFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: localFilenameOnly type string.&lt;/P&gt;&lt;P&gt;data: newSubDirectory type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  read report functionInternalName into iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If we found any text elements for this function then we ought to append them to the main include.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not iLocTextElements[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendTextElements using iLocTextElements[]&lt;/P&gt;&lt;P&gt;                                     iLines[].&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 we found any message classes for this function then we ought to append them to the main include.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not iLocMessages[] is initial.&lt;/P&gt;&lt;P&gt;    perform appendMessagesToFile using iLocMessages[]&lt;/P&gt;&lt;P&gt;                                       iLines[]&lt;/P&gt;&lt;P&gt;                                       space.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if convertToHtml is initial.&lt;/P&gt;&lt;P&gt;    append '' to iLines.&lt;/P&gt;&lt;P&gt;    append '----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------------------" /&gt;&lt;P&gt;' to iLines.&lt;/P&gt;&lt;P&gt;    perform buildFooterMessage using 'TEXT'&lt;/P&gt;&lt;P&gt;                                     iLines.&lt;/P&gt;&lt;P&gt;    append iLines.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    perform convertFunctionToHtml using iLines[]&lt;/P&gt;&lt;P&gt;                                        functionName&lt;/P&gt;&lt;P&gt;                                        shortText&lt;/P&gt;&lt;P&gt;                                        IS_FUNCTION&lt;/P&gt;&lt;P&gt;                                        functionDocumentationExists&lt;/P&gt;&lt;P&gt;                                        TRUE&lt;/P&gt;&lt;P&gt;                                        syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                        fileExtension&lt;/P&gt;&lt;P&gt;                                        customerNameRange&lt;/P&gt;&lt;P&gt;                                        getIncludes&lt;/P&gt;&lt;P&gt;                                        getDictStructures.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                              subDir&lt;/P&gt;&lt;P&gt;                              functionName&lt;/P&gt;&lt;P&gt;                              space&lt;/P&gt;&lt;P&gt;                              space&lt;/P&gt;&lt;P&gt;                              fileExtension&lt;/P&gt;&lt;P&gt;                              IS_FUNCTION&lt;/P&gt;&lt;P&gt;                              localFilenameWithPath&lt;/P&gt;&lt;P&gt;                              localfilenameOnly&lt;/P&gt;&lt;P&gt;                              newSubDirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform saveFileToPc using iLines[]&lt;/P&gt;&lt;P&gt;                             localFilenameWithPath&lt;/P&gt;&lt;P&gt;                             localFilenameOnly&lt;/P&gt;&lt;P&gt;                             space&lt;/P&gt;&lt;P&gt;                             space.&lt;/P&gt;&lt;P&gt;endform.                                                                        "readFunctionAndDownload&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; buildFilename...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form buildFilename using value(userPath)&lt;/P&gt;&lt;P&gt;                         value(additionalSubDirectory)&lt;/P&gt;&lt;P&gt;                         value(objectName)&lt;/P&gt;&lt;P&gt;                         value(mainFunctionNo)&lt;/P&gt;&lt;P&gt;                         value(includeName)&lt;/P&gt;&lt;P&gt;                         value(fileExtension)&lt;/P&gt;&lt;P&gt;                         value(downloadType)&lt;/P&gt;&lt;P&gt;                               newFilenameWithPath&lt;/P&gt;&lt;P&gt;                               newFilenameOnly&lt;/P&gt;&lt;P&gt;                               newSubDirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If we are running on a non UNIX environment we will need to remove forward slashes from the additional path.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;    if not additionalSubdirectory is initial.&lt;/P&gt;&lt;P&gt;      translate additionalSubdirectory using '/_'.&lt;/P&gt;&lt;P&gt;      if additionalSubdirectory+0(1) = '_'.&lt;/P&gt;&lt;P&gt;        shift additionalSubdirectory left by 1 places.&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;  case downloadType.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_PROGRAM.&lt;/P&gt;&lt;P&gt;      if additionalSubDirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName PERIOD fileExtension into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubdirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName PERIOD fileExtension into newFilenameWithPath.&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;  Function Modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_FUNCTION.&lt;/P&gt;&lt;P&gt;      if additionalSubdirectory is initial.&lt;/P&gt;&lt;P&gt;        find 'top' in includeName ignoring case.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          concatenate userPath SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                               SLASHSEPARATOR 'Global-' objectName&lt;/P&gt;&lt;P&gt;                               PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                               into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          if includeName cs mainFunctionNo and not mainFunctionNo is initial.&lt;/P&gt;&lt;P&gt;            concatenate userPath SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                                 into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;P&gt;            concatenate userPath SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                                 into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        newSubDirectory = objectName.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        find 'top' in includeName ignoring case.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          concatenate userPath SLASHSEPARATOR additionalSubdirectory&lt;/P&gt;&lt;P&gt;                               SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                               SLASHSEPARATOR 'Global-' objectName&lt;/P&gt;&lt;P&gt;                               PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                               into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          if includeName cs mainFunctionNo and not mainFunctionNo is initial.&lt;/P&gt;&lt;P&gt;            concatenate userPath SLASHSEPARATOR additionalSubdirectory&lt;/P&gt;&lt;P&gt;                                 SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                                 into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;P&gt;            concatenate userPath SLASHSEPARATOR additionalSubdirectory&lt;/P&gt;&lt;P&gt;                                 SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                 PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                                 into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;        concatenate additionalSubDirectory SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                                           into newSubDirectory.&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;  Table definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_TABLE.&lt;/P&gt;&lt;P&gt;      if additionalSubdirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Dictionary-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName into NewSubDirectory.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Dictionary-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName into newSubDirectory.&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;  Program &amp;amp; Function documentation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_DOCUMENTATION.&lt;/P&gt;&lt;P&gt;      if additionalSubDirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Docs-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD&lt;/P&gt;&lt;P&gt;                             fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName into NewSubDirectory.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Docs-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR additionalSubDirectory SLASHSEPARATOR objectName into NewSubDirectory.&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;  Screens&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_SCREEN.&lt;/P&gt;&lt;P&gt;      if additionalSubDirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR 'Screens'&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'screen_'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD&lt;/P&gt;&lt;P&gt;                             fileExtension into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR 'Screens' into NewSubDirectory.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR additionalSubdirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Screens'&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'screen_'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD&lt;/P&gt;&lt;P&gt;                             fileExtension into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Screens' into NewSubDirectory.&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;  GUI title&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_GUITITLE.&lt;/P&gt;&lt;P&gt;      if additionalSubDirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR 'Screens'&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'gui_title_'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD&lt;/P&gt;&lt;P&gt;                             fileExtension into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR 'Screens'&lt;/P&gt;&lt;P&gt;        into NewSubDirectory.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR additionalSubdirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Screens'&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'gui_title_'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD&lt;/P&gt;&lt;P&gt;                             fileExtension into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Screens'&lt;/P&gt;&lt;P&gt;                             into NewSubDirectory.&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;  Message Class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_MESSAGECLASS.&lt;/P&gt;&lt;P&gt;      if additionalSubDirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Message class-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD&lt;/P&gt;&lt;P&gt;                             fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName into NewSubDirectory.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Message class-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR additionalSubDirectory SLASHSEPARATOR objectName into NewSubDirectory.&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;  Class definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_CLASS.&lt;/P&gt;&lt;P&gt;      if additionalSubdirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Class-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName into NewSubDirectory.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Class-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName into newSubDirectory.&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;  Class definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    when IS_METHOD.&lt;/P&gt;&lt;P&gt;      if additionalSubdirectory is initial.&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR 'Method-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR objectName into NewSubDirectory.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate userpath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR 'Method-'&lt;/P&gt;&lt;P&gt;                             objectName PERIOD fileExtension&lt;/P&gt;&lt;P&gt;                             into newFilenameWithPath.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate userPath SLASHSEPARATOR additionalSubDirectory&lt;/P&gt;&lt;P&gt;                             SLASHSEPARATOR objectName into newSubDirectory.&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;  concatenate objectName PERIOD fileExtension into newFilenameOnly.&lt;/P&gt;&lt;P&gt;  translate newfilenameOnly to lower case.&lt;/P&gt;&lt;P&gt;  translate newFilenameWithPath to lower case.&lt;/P&gt;&lt;P&gt;  translate newsubDirectory to lower case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If we are running on a non UNIX environment we will need to remove forward slashes from the filename.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;    translate newFilenameOnly using '/_'.&lt;/P&gt;&lt;P&gt;    translate newFilenameWithPath using '/_'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                                "buildFilename&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; saveFileToPc...    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 saveFileToPc using iDownload type standard table&lt;/P&gt;&lt;P&gt;                        value(filenameWithPath)&lt;/P&gt;&lt;P&gt;                        value(filename)&lt;/P&gt;&lt;P&gt;                        value(writeFieldSeparator)&lt;/P&gt;&lt;P&gt;                        value(truncateTrailingBlanks).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: statusMessage type string.&lt;/P&gt;&lt;P&gt;data: objFile type ref to cl_gui_frontend_services.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate `Downloading: ` filename into statusMessage.&lt;/P&gt;&lt;P&gt;  perform displayStatus using statusMessage 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  create object objFile.&lt;/P&gt;&lt;P&gt;  call method objFile-&amp;gt;gui_download exporting filename = filenameWithPath&lt;/P&gt;&lt;P&gt;                                              filetype = 'ASC'&lt;/P&gt;&lt;P&gt;                                              write_field_separator = writeFieldSeparator&lt;/P&gt;&lt;P&gt;                                              trunc_trailing_blanks = truncateTrailingBlanks&lt;/P&gt;&lt;P&gt;                                     changing data_tab = iDownload[]&lt;/P&gt;&lt;P&gt;                                   exceptions file_write_error        = 1&lt;/P&gt;&lt;P&gt;                                              no_batch                = 2&lt;/P&gt;&lt;P&gt;                                              gui_refuse_filetransfer = 3&lt;/P&gt;&lt;P&gt;                                              invalid_type            = 4&lt;/P&gt;&lt;P&gt;                                              no_authority            = 5&lt;/P&gt;&lt;P&gt;                                              unknown_error           = 6&lt;/P&gt;&lt;P&gt;                                              header_not_allowed      = 7&lt;/P&gt;&lt;P&gt;                                              separator_not_allowed   = 8&lt;/P&gt;&lt;P&gt;                                              filesize_not_allowed    = 9&lt;/P&gt;&lt;P&gt;                                              header_too_long         = 10&lt;/P&gt;&lt;P&gt;                                              dp_error_create         = 11&lt;/P&gt;&lt;P&gt;                                              dp_error_send           = 12&lt;/P&gt;&lt;P&gt;                                              dp_error_write          = 13&lt;/P&gt;&lt;P&gt;                                              unknown_dp_error        = 14&lt;/P&gt;&lt;P&gt;                                              access_denied           = 15&lt;/P&gt;&lt;P&gt;                                              dp_out_of_memory        = 16&lt;/P&gt;&lt;P&gt;                                              disk_full               = 17&lt;/P&gt;&lt;P&gt;                                              dp_timeout              = 18&lt;/P&gt;&lt;P&gt;                                              file_not_found          = 19&lt;/P&gt;&lt;P&gt;                                              dataprovider_exception  = 20&lt;/P&gt;&lt;P&gt;                                              control_flush_error     = 21&lt;/P&gt;&lt;P&gt;                                              not_supported_by_gui    = 22&lt;/P&gt;&lt;P&gt;                                              error_no_gui            = 23.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;     concatenate `File save error: ` filename into statusMessage.&lt;/P&gt;&lt;P&gt;     perform displayStatus using statusMessage 3.&lt;/P&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;P&gt;endform.                                                                                "saveFileToPc&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;appendTextElements...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form appendTextElements using iLocTextElements like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                              iLocLines like dumiHtml[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type I value 0.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waTextElement&amp;gt; type tTextTable.&lt;/P&gt;&lt;P&gt;data: waLine type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tableLines = lines( iLocTextElements ).&lt;/P&gt;&lt;P&gt;  if tableLines &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    append '' to iLocLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append '*Text elements' to iLocLines.&lt;/P&gt;&lt;P&gt;    append '*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------" /&gt;&lt;P&gt;' to  iLocLines.&lt;/P&gt;&lt;P&gt;    loop at iLocTextElements assigning &amp;lt;waTextElement&amp;gt;.&lt;/P&gt;&lt;P&gt;      concatenate '*  ' &amp;lt;waTextElement&amp;gt;-key &amp;lt;waTextElement&amp;gt;-entry into waLine separated by space.&lt;/P&gt;&lt;P&gt;      append waLine to iLocLines.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                            "appendTextElements&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;appendGUITitles...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form appendGUITitles using iLocGUItitles like dumiGUITitle[]&lt;/P&gt;&lt;P&gt;                           iLocLines like dumiHtml[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type I value 0.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waGUITitle&amp;gt; type tGUITitle.&lt;/P&gt;&lt;P&gt;data: waLine type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tableLines = lines( iLocGUItitles ).&lt;/P&gt;&lt;P&gt;  if tableLines &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    append '' to iLocLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append '*GUI Texts' to iLocLines.&lt;/P&gt;&lt;P&gt;    append '*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------" /&gt;&lt;P&gt;' to  iLocLines.&lt;/P&gt;&lt;P&gt;    loop at iLocGUItitles assigning &amp;lt;waGUItitle&amp;gt;.&lt;/P&gt;&lt;P&gt;      concatenate '*  ' &amp;lt;waGUItitle&amp;gt;-obj_code '--&amp;gt;' &amp;lt;waGUItitle&amp;gt;-text into waLine separated by space.&lt;/P&gt;&lt;P&gt;      append waLine to iLocLines.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                                "appendGUITitles&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;appendSelectionTexts...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form appendSelectionTexts using iLocSelectionTexts like dumiTextTab[]&lt;/P&gt;&lt;P&gt;                                iLocLines like dumiHtml[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type I value 0.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waSelectionText&amp;gt; type tTextTable.&lt;/P&gt;&lt;P&gt;data: waLine type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tableLines = lines( iLocSelectionTexts ).&lt;/P&gt;&lt;P&gt;  if tableLines &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    append '' to iLocLines.&lt;/P&gt;&lt;P&gt;    append '' to iLocLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append '*Selection texts' to iLocLines.&lt;/P&gt;&lt;P&gt;    append '*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------" /&gt;&lt;P&gt;' to  iLocLines.&lt;/P&gt;&lt;P&gt;    loop at iLocSelectiontexts assigning &amp;lt;waSelectionText&amp;gt;.&lt;/P&gt;&lt;P&gt;      concatenate '*  ' &amp;lt;waSelectionText&amp;gt;-key &amp;lt;waSelectionText&amp;gt;-entry into waLine separated by space.&lt;/P&gt;&lt;P&gt;      append waLine to iLocLines.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                          "appendSelectionTexts&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;downloadFunctionDocs...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form downloadFunctionDocs using value(functionName)&lt;/P&gt;&lt;P&gt;                                value(functionDescription)&lt;/P&gt;&lt;P&gt;                                value(userFilePath)&lt;/P&gt;&lt;P&gt;                                value(fileExtension)&lt;/P&gt;&lt;P&gt;                                value(convertToHtml)&lt;/P&gt;&lt;P&gt;                                      subDir&lt;/P&gt;&lt;P&gt;                                      documentationDownloaded.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: iDocumentation type standard table of funct with header line.&lt;/P&gt;&lt;P&gt;data: iExceptions type standard table of rsexc with header line.&lt;/P&gt;&lt;P&gt;data: iExport type standard table of rsexp with header line.&lt;/P&gt;&lt;P&gt;data: iParameter type standard table of rsimp with header line.&lt;/P&gt;&lt;P&gt;data: iTables type standard table of rstbl with header line.&lt;/P&gt;&lt;P&gt;data: iScriptLines type standard table of tline with header line.&lt;/P&gt;&lt;P&gt;data: htmlPageName type string.&lt;/P&gt;&lt;P&gt;data: newFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: newFilenameOnly type string.&lt;/P&gt;&lt;P&gt;data: object like dokhl-object.&lt;/P&gt;&lt;P&gt;data: stringLength type i value 0.&lt;/P&gt;&lt;P&gt;data: newSubDirectory type string.&lt;/P&gt;&lt;P&gt;data: waLine(255).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  documentationDownloaded = FALSE.&lt;/P&gt;&lt;P&gt;  object = functionName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  call function 'FUNCTION_IMPORT_DOKU'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            funcName           = functionName&lt;/P&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            DOKUMENTATION      = iDocumentation&lt;/P&gt;&lt;P&gt;            EXCEPTION_LIST     = iExceptions&lt;/P&gt;&lt;P&gt;            EXPORT_PARAMETER   = iExport&lt;/P&gt;&lt;P&gt;            IMPORT_PARAMETER   = iParameter&lt;/P&gt;&lt;P&gt;            TABLES_PARAMETER   = iTables&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            ERROR_MESSAGE      = 1&lt;/P&gt;&lt;P&gt;            FUNCTION_NOT_FOUND = 2&lt;/P&gt;&lt;P&gt;            INVALID_NAME       = 3&lt;/P&gt;&lt;P&gt;            others             = 4.&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                   = iScriptLines&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 ( iScriptLines[] is initial ).&lt;/P&gt;&lt;P&gt;    append 'SHORT TEXT' to iLines.&lt;/P&gt;&lt;P&gt;    concatenate space functionDescription into functionDescription separated by space.&lt;/P&gt;&lt;P&gt;    append functionDescription to iLines.&lt;/P&gt;&lt;P&gt;    append space to iLines.&lt;/P&gt;&lt;P&gt;    loop at iScriptLines.&lt;/P&gt;&lt;P&gt;      move iScriptLines-tdline to iLines.&lt;/P&gt;&lt;P&gt;      concatenate space iLines into iLines separated by space.&lt;/P&gt;&lt;P&gt;      while iLines CP '&amp;amp;&lt;STRONG&gt;' or iLines CP '&lt;/STRONG&gt;&amp;amp;'.&lt;/P&gt;&lt;P&gt;        replace '&amp;amp;' into iLines with space.&lt;/P&gt;&lt;P&gt;        shift iLines left deleting leading space.&lt;/P&gt;&lt;P&gt;      endwhile.&lt;/P&gt;&lt;P&gt;      append iLines.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear iLines.&lt;/P&gt;&lt;P&gt;    if not ( iDocumentation[] is initial ).&lt;/P&gt;&lt;P&gt;      append iLines.&lt;/P&gt;&lt;P&gt;      append 'PARAMETER DOCUMENTATION' to iLines.&lt;/P&gt;&lt;P&gt;      append '----&lt;/P&gt;&lt;HR originaltext="------------------" /&gt;&lt;P&gt;' to iLines.&lt;/P&gt;&lt;P&gt;      append iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      describe field iDocumentation-parameter length stringLength in character mode.&lt;/P&gt;&lt;P&gt;      stringLength = stringLength + 3.&lt;/P&gt;&lt;P&gt;      loop at iDocumentation.&lt;/P&gt;&lt;P&gt;        move iDocumentation-parameter to waLine.&lt;/P&gt;&lt;P&gt;        move iDocumentation-stext to waLine+stringLength.&lt;/P&gt;&lt;P&gt;        append waLine to iLines.&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;    concatenate `Documentation - ` functionName into htmlPageName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if convertToHtml is initial.&lt;/P&gt;&lt;P&gt;      append iLines.&lt;/P&gt;&lt;P&gt;      append  '----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------------------" /&gt;&lt;P&gt;' to iLines.&lt;/P&gt;&lt;P&gt;      append iLines.&lt;/P&gt;&lt;P&gt;      perform buildFooterMessage using 'TEXT'&lt;/P&gt;&lt;P&gt;                                       iLines.&lt;/P&gt;&lt;P&gt;      append iLines.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      perform convertCodeToHtml using iLines[]&lt;/P&gt;&lt;P&gt;                                      htmlPageName&lt;/P&gt;&lt;P&gt;                                      space&lt;/P&gt;&lt;P&gt;                                      IS_DOCUMENTATION&lt;/P&gt;&lt;P&gt;                                      TRUE&lt;/P&gt;&lt;P&gt;                                      space&lt;/P&gt;&lt;P&gt;                                      space&lt;/P&gt;&lt;P&gt;                                      space&lt;/P&gt;&lt;P&gt;                                      space&lt;/P&gt;&lt;P&gt;                                      space&lt;/P&gt;&lt;P&gt;                                      space.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                                subDir&lt;/P&gt;&lt;P&gt;                                functionName&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                fileExtension&lt;/P&gt;&lt;P&gt;                                IS_DOCUMENTATION&lt;/P&gt;&lt;P&gt;                                newFilenameWithPath&lt;/P&gt;&lt;P&gt;                                newFilenameOnly&lt;/P&gt;&lt;P&gt;                                newSubDirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform saveFileToPC using iLines[]&lt;/P&gt;&lt;P&gt;                               newFilenameWithPath&lt;/P&gt;&lt;P&gt;                               newfilenameOnly&lt;/P&gt;&lt;P&gt;                               space&lt;/P&gt;&lt;P&gt;                               space.&lt;/P&gt;&lt;P&gt;    documentationDownloaded = TRUE.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                           "downloadFunctionDocs&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; downloadScreens...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form downloadScreens using iLocScreenFlow like dumiScreen[]&lt;/P&gt;&lt;P&gt;                           value(programName)&lt;/P&gt;&lt;P&gt;                           value(userFilePath)&lt;/P&gt;&lt;P&gt;                           value(textFileExtension)&lt;/P&gt;&lt;P&gt;                           value(subdir).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tables: d020t.&lt;/P&gt;&lt;P&gt;data: header like d020s.&lt;/P&gt;&lt;P&gt;data: iFields type standard table of d021s with header line.&lt;/P&gt;&lt;P&gt;data: iFlowLogic type standard table of d022s with header line.&lt;/P&gt;&lt;P&gt;field-symbols &amp;lt;waScreen&amp;gt; type tScreenFlow.&lt;/P&gt;&lt;P&gt;data: waCharHeader type scr_chhead.&lt;/P&gt;&lt;P&gt;data: iScreenChar type standard table of scr_chfld with header line.&lt;/P&gt;&lt;P&gt;data: iFieldsChar type standard table of scr_chfld with header line.&lt;/P&gt;&lt;P&gt;data: stars type string value '****************************************************************'.&lt;/P&gt;&lt;P&gt;data: comment1 type string value '*   This file was generated by Direct Download Enterprise.     *'.&lt;/P&gt;&lt;P&gt;data: comment2 type string value '*   Please do not change it manually.                          *'.&lt;/P&gt;&lt;P&gt;data: dynproText type string value '%_DYNPRO'.&lt;/P&gt;&lt;P&gt;data: headerText type string value '%_HEADER'.&lt;/P&gt;&lt;P&gt;data: paramsText type string value '%_PARAMS'.&lt;/P&gt;&lt;P&gt;data: descriptionText type string value '%_DESCRIPTION'.&lt;/P&gt;&lt;P&gt;data: fieldsText type string value '%_FIELDS'.&lt;/P&gt;&lt;P&gt;data: flowlogicText type string value '%_FLOWLOGIC'.&lt;/P&gt;&lt;P&gt;data: programLength type string.&lt;/P&gt;&lt;P&gt;data: newSubDirectory type string.&lt;/P&gt;&lt;P&gt;data: newFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: newFilenameOnly type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocScreenFlow assigning &amp;lt;waScreen&amp;gt;.&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 = programName&lt;/P&gt;&lt;P&gt;              dynumb = &amp;lt;waScreen&amp;gt;-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   = iFields&lt;/P&gt;&lt;P&gt;              pltab  = iFlowLogic.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_SCRP_HEADER_RAW_TO_CHAR'&lt;/P&gt;&lt;P&gt;         exporting&lt;/P&gt;&lt;P&gt;              header_int  = header&lt;/P&gt;&lt;P&gt;         importing&lt;/P&gt;&lt;P&gt;              header_char = waCharHeader&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Add in the top comments for the file&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    append stars to iScreenChar .&lt;/P&gt;&lt;P&gt;    append comment1 to iScreenChar.&lt;/P&gt;&lt;P&gt;    append comment2 to iScreenChar.&lt;/P&gt;&lt;P&gt;    append stars to iScreenChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Screen identification&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    append dynproText to iScreenChar.&lt;/P&gt;&lt;P&gt;    append waCharHeader-prog to iScreenChar.&lt;/P&gt;&lt;P&gt;    append waCharHeader-dnum to iScreenChar.&lt;/P&gt;&lt;P&gt;    append sy-saprl to iScreenChar.&lt;/P&gt;&lt;P&gt;    describe field d020t-prog length programLength in character mode.&lt;/P&gt;&lt;P&gt;    concatenate `                ` programLength into iScreenChar.&lt;/P&gt;&lt;P&gt;    append iScreenChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Header&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    append headerText to iScreenChar.&lt;/P&gt;&lt;P&gt;    append waCharHeader to iScreenChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Description text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    append descriptionText to iScreenChar.&lt;/P&gt;&lt;P&gt;    select single dtxt from d020T into iScreenChar&lt;/P&gt;&lt;P&gt;                       where prog = programName&lt;/P&gt;&lt;P&gt;                             and dynr = &amp;lt;waScreen&amp;gt;-screen&lt;/P&gt;&lt;P&gt;                             and lang = sy-langu.&lt;/P&gt;&lt;P&gt;    append iScreenChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Fieldlist text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    append fieldsText to iScreenChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    call function 'RS_SCRP_FIELDS_RAW_TO_CHAR'&lt;/P&gt;&lt;P&gt;         tables&lt;/P&gt;&lt;P&gt;              fields_int  = iFields[]&lt;/P&gt;&lt;P&gt;              fields_char = iFieldsChar[]&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;    loop at iFieldsChar.&lt;/P&gt;&lt;P&gt;      move-corresponding iFieldsChar to iScreenChar.&lt;/P&gt;&lt;P&gt;      append iScreenChar.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Flowlogic text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    append flowlogicText to iScreenChar.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Flow logic.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at iFlowLogic.&lt;/P&gt;&lt;P&gt;      append iFlowLogic to iScreenChar.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                                subDir&lt;/P&gt;&lt;P&gt;                                waCharHeader-dnum&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                textFileExtension&lt;/P&gt;&lt;P&gt;                                IS_SCREEN&lt;/P&gt;&lt;P&gt;                                newFilenameWithPath&lt;/P&gt;&lt;P&gt;                                newfilenameOnly&lt;/P&gt;&lt;P&gt;                                newSubDirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Save the screen to the local computer&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform saveFileToPc using iScreenChar[]&lt;/P&gt;&lt;P&gt;                               newFilenameWithPath&lt;/P&gt;&lt;P&gt;                               newFilenameOnly&lt;/P&gt;&lt;P&gt;                               'X'&lt;/P&gt;&lt;P&gt;                               'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear header. clear waCharHeader.&lt;/P&gt;&lt;P&gt;    clear iScreenChar[].&lt;/P&gt;&lt;P&gt;    clear iFieldsChar[].&lt;/P&gt;&lt;P&gt;    clear iFields[].&lt;/P&gt;&lt;P&gt;    clear iFlowLogic[].&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                               "downloadScreens&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; downloadGUITitles..&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form downloadGUITitles using iLocGUITitles like dumIGUITitle[]&lt;/P&gt;&lt;P&gt;                             value(userFilePath)&lt;/P&gt;&lt;P&gt;                             value(textFileExtension)&lt;/P&gt;&lt;P&gt;                             value(subDir).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iLines type standard table of string with header line.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waGUITitle&amp;gt; type tGUITitle.&lt;/P&gt;&lt;P&gt;data: newSubDirectory type string.&lt;/P&gt;&lt;P&gt;data: newFilenameWithPath type string.&lt;/P&gt;&lt;P&gt;data: newFilenameOnly type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocGUITitles assigning &amp;lt;waGUITitle&amp;gt;.&lt;/P&gt;&lt;P&gt;    append &amp;lt;waGUITitle&amp;gt;-text to iLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform buildFilename using userFilePath&lt;/P&gt;&lt;P&gt;                                subDir&lt;/P&gt;&lt;P&gt;                                &amp;lt;waGUITitle&amp;gt;-obj_code&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                space&lt;/P&gt;&lt;P&gt;                                textFileExtension&lt;/P&gt;&lt;P&gt;                                IS_GUITITLE&lt;/P&gt;&lt;P&gt;                                newFilenameWithPath&lt;/P&gt;&lt;P&gt;                                newfilenameOnly&lt;/P&gt;&lt;P&gt;                                newSubDirectory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform saveFileToPc using iLines[]&lt;/P&gt;&lt;P&gt;                               newFilenameWithPath&lt;/P&gt;&lt;P&gt;                               newFilenameOnly&lt;/P&gt;&lt;P&gt;                               space&lt;/P&gt;&lt;P&gt;                               space.&lt;/P&gt;&lt;P&gt;    clear iLines[].&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                              "downloadGUITitles&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; downloadPrograms..&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form downloadPrograms using iLocProgram like iPrograms[]&lt;/P&gt;&lt;P&gt;                            iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                            value(userFilePath)&lt;/P&gt;&lt;P&gt;                            value(fileExtension)&lt;/P&gt;&lt;P&gt;                            value(htmlFileExtension)&lt;/P&gt;&lt;P&gt;                            value(textFileExtension)&lt;/P&gt;&lt;P&gt;                            value(convertToHtml)&lt;/P&gt;&lt;P&gt;                            value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                            value(customerNameRange)&lt;/P&gt;&lt;P&gt;                            value(getIncludes)&lt;/P&gt;&lt;P&gt;                            value(getDictStruct)&lt;/P&gt;&lt;P&gt;                            value(downloadDocumentation)&lt;/P&gt;&lt;P&gt;                            value(sortTablesAsc).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iProgFunctions type standard table of tFunction with header line.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waProgram&amp;gt; type tProgram.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waInclude&amp;gt; type tInclude.&lt;/P&gt;&lt;P&gt;data: iEmptyTextelements type standard table of tTextTable.&lt;/P&gt;&lt;P&gt;data: iEmptySelectionTexts type standard table of tTextTable.&lt;/P&gt;&lt;P&gt;data: iEmptyMessages type standard table of tMessage.&lt;/P&gt;&lt;P&gt;data: iEmptyGuiTitles type standard table of tGUITitle.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iLocProgram ascending by progname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocProgram assigning &amp;lt;waProgram&amp;gt;.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Download the main program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform readIncludeAndDownload using &amp;lt;waProgram&amp;gt;-iTextelements[]&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waProgram&amp;gt;-iSelectionTexts[]&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waProgram&amp;gt;-iMessages[]&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waProgram&amp;gt;-iGUITitle[]&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waprogram&amp;gt;-progname&lt;/P&gt;&lt;P&gt;                                         space&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waprogram&amp;gt;-programTitle&lt;/P&gt;&lt;P&gt;                                         IS_PROGRAM&lt;/P&gt;&lt;P&gt;                                         userFilePath&lt;/P&gt;&lt;P&gt;                                         fileExtension&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waprogram&amp;gt;-progname&lt;/P&gt;&lt;P&gt;                                         convertToHtml&lt;/P&gt;&lt;P&gt;                                         syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                         customerNameRange&lt;/P&gt;&lt;P&gt;                                         getIncludes&lt;/P&gt;&lt;P&gt;                                         getDictStruct.&lt;/P&gt;&lt;P&gt;&lt;/P&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;    if not &amp;lt;waProgram&amp;gt;-iScreenFlow[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadScreens using &amp;lt;waProgram&amp;gt;-iScreenFlow[]&lt;/P&gt;&lt;P&gt;                                    &amp;lt;waProgram&amp;gt;-progname&lt;/P&gt;&lt;P&gt;                                    userFilePath&lt;/P&gt;&lt;P&gt;                                    textFileExtension&lt;/P&gt;&lt;P&gt;                                    &amp;lt;waprogram&amp;gt;-progname.&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;  Download GUI titles&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not &amp;lt;waProgram&amp;gt;-iGUITitle[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadGUITitles using &amp;lt;waProgram&amp;gt;-iGUITitle&lt;/P&gt;&lt;P&gt;                                      userFilePath&lt;/P&gt;&lt;P&gt;                                      textFileExtension&lt;/P&gt;&lt;P&gt;                                      &amp;lt;waProgram&amp;gt;-progName.&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;  Download all other includes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waProgram&amp;gt;-iIncludes assigning &amp;lt;waInclude&amp;gt;.&lt;/P&gt;&lt;P&gt;      perform readIncludeAndDownload using iEmptyTextelements[]&lt;/P&gt;&lt;P&gt;                                           iEmptySelectionTexts[]&lt;/P&gt;&lt;P&gt;                                           iEmptyMessages[]&lt;/P&gt;&lt;P&gt;                                           iEmptyGuiTitles[]&lt;/P&gt;&lt;P&gt;                                           &amp;lt;waInclude&amp;gt;-IncludeName&lt;/P&gt;&lt;P&gt;                                           space&lt;/P&gt;&lt;P&gt;                                           &amp;lt;waInclude&amp;gt;-IncludeTitle&lt;/P&gt;&lt;P&gt;                                           IS_PROGRAM&lt;/P&gt;&lt;P&gt;                                           userFilePath&lt;/P&gt;&lt;P&gt;                                           fileExtension&lt;/P&gt;&lt;P&gt;                                           &amp;lt;waProgram&amp;gt;-progName&lt;/P&gt;&lt;P&gt;                                           convertToHtml&lt;/P&gt;&lt;P&gt;                                           syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                           customerNameRange&lt;/P&gt;&lt;P&gt;                                           getIncludes&lt;/P&gt;&lt;P&gt;                                           getDictStruct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Download all dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not &amp;lt;waProgram&amp;gt;-iDictStruct[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadDDStructures using &amp;lt;waProgram&amp;gt;-iDictStruct[]&lt;/P&gt;&lt;P&gt;                                         userFilePath&lt;/P&gt;&lt;P&gt;                                         htmlFileExtension&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waProgram&amp;gt;-progName&lt;/P&gt;&lt;P&gt;                                         sortTablesAsc.&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;  Download any functions used by these programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at iLocFunctions into iProgFunctions where programLinkName = &amp;lt;waProgram&amp;gt;-progName.&lt;/P&gt;&lt;P&gt;      append iProgFunctions.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not iProgFunctions[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadFunctions using iProgFunctions[]&lt;/P&gt;&lt;P&gt;                                      userFilePath&lt;/P&gt;&lt;P&gt;                                      fileExtension&lt;/P&gt;&lt;P&gt;                                      &amp;lt;waProgram&amp;gt;-progName&lt;/P&gt;&lt;P&gt;                                      downloadDocumentation&lt;/P&gt;&lt;P&gt;                                      convertToHtml&lt;/P&gt;&lt;P&gt;                                      syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                      getIncludes&lt;/P&gt;&lt;P&gt;                                      getDictStruct&lt;/P&gt;&lt;P&gt;                                      textFileExtension&lt;/P&gt;&lt;P&gt;                                      htmlFileExtension&lt;/P&gt;&lt;P&gt;                                      sortTablesAsc .&lt;/P&gt;&lt;P&gt;       clear iProgFunctions[].&lt;/P&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                               "downloadPrograms&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; downloadClasses..&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form downloadClasses using iLocClasses like iClasses[]&lt;/P&gt;&lt;P&gt;                           iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                           value(userFilePath)&lt;/P&gt;&lt;P&gt;                           value(fileExtension)&lt;/P&gt;&lt;P&gt;                           value(htmlFileExtension)&lt;/P&gt;&lt;P&gt;                           value(textFileExtension)&lt;/P&gt;&lt;P&gt;                           value(convertToHtml)&lt;/P&gt;&lt;P&gt;                           value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                           value(customerNameRange)&lt;/P&gt;&lt;P&gt;                           value(getIncludes)&lt;/P&gt;&lt;P&gt;                           value(getDictStruct)&lt;/P&gt;&lt;P&gt;                           value(downloadDocumentation)&lt;/P&gt;&lt;P&gt;                           value(sortTablesAsc).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iClassFunctions type standard table of tFunction with header line.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waClass&amp;gt; type tClass.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waMethod&amp;gt; type tMethod.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iLocClasses ascending by clsname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocClasses assigning &amp;lt;waClass&amp;gt;.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Download the class&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform readClassAndDownload using &amp;lt;waClass&amp;gt;&lt;/P&gt;&lt;P&gt;                                        &amp;lt;waClass&amp;gt;-clsname&lt;/P&gt;&lt;P&gt;                                        space&lt;/P&gt;&lt;P&gt;                                        IS_CLASS&lt;/P&gt;&lt;P&gt;                                        userFilePath&lt;/P&gt;&lt;P&gt;                                        fileExtension&lt;/P&gt;&lt;P&gt;                                        space&lt;/P&gt;&lt;P&gt;                                        convertToHtml&lt;/P&gt;&lt;P&gt;                                        syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                        customerNameRange&lt;/P&gt;&lt;P&gt;                                        getIncludes&lt;/P&gt;&lt;P&gt;                                        getDictStruct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Download all of the methods&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waClass&amp;gt;-iMethods assigning &amp;lt;waMethod&amp;gt;.&lt;/P&gt;&lt;P&gt;    perform readMethodAndDownload using &amp;lt;waMethod&amp;gt;&lt;/P&gt;&lt;P&gt;                                        &amp;lt;waMethod&amp;gt;-cmpName&lt;/P&gt;&lt;P&gt;                                        &amp;lt;waMethod&amp;gt;-methodKey&lt;/P&gt;&lt;P&gt;                                        space&lt;/P&gt;&lt;P&gt;                                        IS_METHOD&lt;/P&gt;&lt;P&gt;                                        userFilePath&lt;/P&gt;&lt;P&gt;                                        fileExtension&lt;/P&gt;&lt;P&gt;                                        &amp;lt;waClass&amp;gt;-clsName&lt;/P&gt;&lt;P&gt;                                        convertToHtml&lt;/P&gt;&lt;P&gt;                                        syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                        customerNameRange&lt;/P&gt;&lt;P&gt;                                        getIncludes&lt;/P&gt;&lt;P&gt;                                        getDictStruct.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Download all dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not &amp;lt;waClass&amp;gt;-iDictStruct[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadDDStructures using &amp;lt;waClass&amp;gt;-iDictStruct[]&lt;/P&gt;&lt;P&gt;                                         userFilePath&lt;/P&gt;&lt;P&gt;                                         htmlFileExtension&lt;/P&gt;&lt;P&gt;                                         &amp;lt;waClass&amp;gt;-clsName&lt;/P&gt;&lt;P&gt;                                         sortTablesAsc.&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;  Download any functions used by these programs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at iLocFunctions into iClassFunctions where programLinkName = &amp;lt;waClass&amp;gt;-clsName.&lt;/P&gt;&lt;P&gt;      append iClassFunctions.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not iClassFunctions[] is initial.&lt;/P&gt;&lt;P&gt;      perform downloadFunctions using iClassFunctions[]&lt;/P&gt;&lt;P&gt;                                      userFilePath&lt;/P&gt;&lt;P&gt;                                      fileExtension&lt;/P&gt;&lt;P&gt;                                      &amp;lt;waClass&amp;gt;-clsName&lt;/P&gt;&lt;P&gt;                                      downloadDocumentation&lt;/P&gt;&lt;P&gt;                                      convertToHtml&lt;/P&gt;&lt;P&gt;                                      syntaxHighlightComments&lt;/P&gt;&lt;P&gt;                                      customerNameRange&lt;/P&gt;&lt;P&gt;                                      getIncludes&lt;/P&gt;&lt;P&gt;                                      getDictStruct&lt;/P&gt;&lt;P&gt;                                      textFileExtension&lt;/P&gt;&lt;P&gt;                                      htmlFileExtension&lt;/P&gt;&lt;P&gt;                                      sortTablesAsc .&lt;/P&gt;&lt;P&gt;       clear iClassFunctions[].&lt;/P&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                                "downloadClasses&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; reFormatClassCode...   Expand a classes public, private and protected section from the 72 characters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        that the class builder sets it to back to the wide editor mode&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form reFormatClassCode using iTempLines like dumiHtml[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waLine&amp;gt; type string.&lt;/P&gt;&lt;P&gt;data: newLine type string.&lt;/P&gt;&lt;P&gt;data: iNewTable type standard table of string.&lt;/P&gt;&lt;P&gt;data: foundOne type i value FALSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iTempLines assigning &amp;lt;waLine&amp;gt;.&lt;/P&gt;&lt;P&gt;    if not &amp;lt;waLine&amp;gt; is initial.&lt;/P&gt;&lt;P&gt;      if foundOne = FALSE.&lt;/P&gt;&lt;P&gt;        find 'data' in &amp;lt;waLine&amp;gt; respecting case.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          foundOne = TRUE.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        find 'constants' in &amp;lt;waLine&amp;gt; respecting case.&lt;/P&gt;&lt;P&gt;        if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;          foundOne = TRUE.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        if foundOne = TRUE.&lt;/P&gt;&lt;P&gt;          newLine = &amp;lt;waLine&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          if ( newLine cs '.' or newLine cs '*' ).&lt;/P&gt;&lt;P&gt;            replace '!' in &amp;lt;waLine&amp;gt; with ''.&lt;/P&gt;&lt;P&gt;            append newLine to iNewTable.&lt;/P&gt;&lt;P&gt;            clear newLine.&lt;/P&gt;&lt;P&gt;            foundOne = FALSE.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          replace '!' in &amp;lt;waLine&amp;gt; with ''.&lt;/P&gt;&lt;P&gt;          append &amp;lt;waLine&amp;gt; to iNewTable.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate newLine &amp;lt;waLine&amp;gt; into newLine separated by space.&lt;/P&gt;&lt;P&gt;        if ( newLine cs '.' or newLine cs '*' ).&lt;/P&gt;&lt;P&gt;          append newLine to iNewTable.&lt;/P&gt;&lt;P&gt;          clear newLine.&lt;/P&gt;&lt;P&gt;          foundOne = FALSE.&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;      replace '!' in &amp;lt;waLine&amp;gt; with ''.&lt;/P&gt;&lt;P&gt;      append &amp;lt;waLine&amp;gt; to iNewTable[].&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;  iTempLines[] = iNewTable[].&lt;/P&gt;&lt;P&gt;endform.                                                                             "reFormatClassCode&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; convertDDToHTML...   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 convertDDToHTML using iLocDictStructure like dumiDictStructure[]&lt;/P&gt;&lt;P&gt;                           iLocHtml like dumiHtml[]&lt;/P&gt;&lt;P&gt;                           value(tableName)&lt;/P&gt;&lt;P&gt;                           value(tableTitle)&lt;/P&gt;&lt;P&gt;                           value(sortTablesAsc).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: iColumnCaptions type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: waDictionary type tDictTableStructure.&lt;/P&gt;&lt;P&gt;data: waHtml type string.&lt;/P&gt;&lt;P&gt;data: title type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform buildColumnHeaders using iColumnCaptions[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html header to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  concatenate 'Dictionary object-' tablename into title separated by space.&lt;/P&gt;&lt;P&gt;  perform addHTMLHeader using iLocHtml[]&lt;/P&gt;&lt;P&gt;                              title.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;h2&amp;gt;' tableName '&amp;lt;/h2&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;  append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;  append '' to iLocHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;h3&amp;gt;' tableTitle '&amp;lt;/h3&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;  append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;  append '' to iLocHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do we need to sort the fields into alphabetical order&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  if not sortTablesAsc is initial.&lt;/P&gt;&lt;P&gt;    sort iLocDictStructure ascending by fieldname.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform convertITABtoHtml using iColumnCaptions[]&lt;/P&gt;&lt;P&gt;                                  iLocDictStructure[]&lt;/P&gt;&lt;P&gt;                                  iLocHtml&lt;/P&gt;&lt;P&gt;                                  'X'&lt;/P&gt;&lt;P&gt;                                  COLOUR_BLACK&lt;/P&gt;&lt;P&gt;                                  ''&lt;/P&gt;&lt;P&gt;                                  COLOUR_YELLOW&lt;/P&gt;&lt;P&gt;                                  ''&lt;/P&gt;&lt;P&gt;                                  BACKGROUND_COLOUR&lt;/P&gt;&lt;P&gt;                                  'Arial'&lt;/P&gt;&lt;P&gt;                                  'green'&lt;/P&gt;&lt;P&gt;                                  '1'&lt;/P&gt;&lt;P&gt;                                  '1'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html footer to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  append '&amp;lt;br&amp;gt;' to iLocHtml.&lt;/P&gt;&lt;P&gt;  perform addHtmlFooter using iLocHtml[].&lt;/P&gt;&lt;P&gt;endform.                                                                                "convertDDToHTML&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; convertITABtoHtml... produces a html table from an internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form convertITABtoHtml using iLocHeader like dumIHeader[]&lt;/P&gt;&lt;P&gt;                             iLocDictStructure like dumiDictStructure[]&lt;/P&gt;&lt;P&gt;                             iLocHtml like dumiHtml[]&lt;/P&gt;&lt;P&gt;                             value(includeRowCount)&lt;/P&gt;&lt;P&gt;                             headingBackColour&lt;/P&gt;&lt;P&gt;                             headingFontName&lt;/P&gt;&lt;P&gt;                             headingFontColour&lt;/P&gt;&lt;P&gt;                             headingFontSize&lt;/P&gt;&lt;P&gt;                             bodyBackColour&lt;/P&gt;&lt;P&gt;                             bodyFontName&lt;/P&gt;&lt;P&gt;                             bodyFontColour&lt;/P&gt;&lt;P&gt;                             bodyFontSize&lt;/P&gt;&lt;P&gt;                             borderSize.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Holds one cell from the internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;field-symbols: &amp;lt;fsField&amp;gt;.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The value of one cell form the internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: wTextCell type string.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;work area for putting the CSV value into&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: waCsvTable type string.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Have we used any font tags in the html code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: usedAFontAttribute type i value 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work area for HTML table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: waHtml type string.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop counter for adding row numbers onto the output table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;data: loopCounter type string.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Work area for header table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;field-symbols: &amp;lt;waHeader&amp;gt; type string.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;iLocDictStructure&amp;gt; type tDictTableStructure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;table border="' borderSize '"&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;  append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not iLocHeader[] is initial.&lt;/P&gt;&lt;P&gt;    append '&amp;lt;tr&amp;gt;' to iLocHtml.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocHeader assigning &amp;lt;waHeader&amp;gt;.&lt;/P&gt;&lt;P&gt;    if headingBackColour is initial.&lt;/P&gt;&lt;P&gt;      waHtml = '&amp;lt;th&amp;gt;'.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      concatenate '&amp;lt;th bgcolor="' headingBackColour '"&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not headingFontName is initial or not headingFontColour is initial or not headingFontSize is initial.&lt;/P&gt;&lt;P&gt;       concatenate waHtml '&amp;lt;font' into waHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     Add the font name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       if not headingFontName is initial.&lt;/P&gt;&lt;P&gt;          concatenate waHtml ' face ="' into waHtml.&lt;/P&gt;&lt;P&gt;          concatenate waHtml headingFontName '"' into waHtml.&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;     Add the font colour&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       if not headingFontColour is initial.&lt;/P&gt;&lt;P&gt;          concatenate waHtml ' color ="' into waHtml.&lt;/P&gt;&lt;P&gt;          concatenate waHtml headingFontColour '"' into waHtml.&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;     Add the fontsize&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       if not headingFontSize is initial.&lt;/P&gt;&lt;P&gt;          concatenate waHtml' size ="' into waHtml.&lt;/P&gt;&lt;P&gt;          concatenate waHtml  headingFontSize '"' into waHtml.&lt;/P&gt;&lt;P&gt;       endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       concatenate waHtml '&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;       usedAFontAttribute = TRUE.&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;  Add the caption name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    concatenate waHtml &amp;lt;waHeader&amp;gt; into waHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if usedAFontattribute = TRUE.&lt;/P&gt;&lt;P&gt;      concatenate waHtml '&amp;lt;/font&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;      usedAFontAttribute = FALSE.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    concatenate waHtml '&amp;lt;/th&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;    append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append '&amp;lt;/tr&amp;gt;' to iLocHtml.&lt;/P&gt;&lt;P&gt;  free iLocHeader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Line item data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at iLocDictStructure assigning &amp;lt;iLocDictStructure&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    loopCounter = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append '' to iLocHtml.&lt;/P&gt;&lt;P&gt;    append '&amp;lt;tr&amp;gt;' to iLocHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Add the row count&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not includeRowCount is initial.&lt;/P&gt;&lt;P&gt;      if BodyBackColour is initial.&lt;/P&gt;&lt;P&gt;        waHtml = '&amp;lt;td&amp;gt;'.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        concatenate '&amp;lt;td bgcolor="' bodyBackColour '"&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if not bodyFontName is initial or not bodyFontColour is initial or not bodyFontSize is initial.&lt;/P&gt;&lt;P&gt;         concatenate waHtml '&amp;lt;font' into waHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Add the font name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         if not bodyFontName is initial.&lt;/P&gt;&lt;P&gt;            concatenate waHtml ' face ="' into waHtml.&lt;/P&gt;&lt;P&gt;            concatenate waHtml bodyFontName '"' into waHtml.&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;       Add the font colour&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         if not bodyFontColour is initial.&lt;/P&gt;&lt;P&gt;            concatenate waHtml ' color ="' into waHtml.&lt;/P&gt;&lt;P&gt;            concatenate waHtml bodyFontColour '"' into waHtml.&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;       Add the fontsize&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         if not bodyFontSize is initial.&lt;/P&gt;&lt;P&gt;            concatenate waHtml ' size ="' into waHtml.&lt;/P&gt;&lt;P&gt;            concatenate waHtml bodyFontSize '"' into waHtml.&lt;/P&gt;&lt;P&gt;         endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         concatenate waHtml '&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;         usedAFontAttribute = TRUE.&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;    Add the row number into the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      concatenate waHtml loopCounter into waHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if usedAFontAttribute = TRUE.&lt;/P&gt;&lt;P&gt;        concatenate waHtml '&amp;lt;/font&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;        usedAFontAttribute = FALSE.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      concatenate waHtml '&amp;lt;/td&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;      append waHtml to iLocHtml.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    do.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Assign each field in the table to the field symbol&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      Assign component sy-index of structure &amp;lt;iLocDictStructure&amp;gt; to &amp;lt;fsField&amp;gt;.&lt;/P&gt;&lt;P&gt;      If sy-subrc = 0.&lt;/P&gt;&lt;P&gt;        move &amp;lt;fsField&amp;gt; to wTextCell.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Cell data processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if BodyBackColour is initial.&lt;/P&gt;&lt;P&gt;          waHtml = '&amp;lt;td&amp;gt;'.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          concatenate '&amp;lt;td bgcolor="' bodyBackColour '"&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        if not bodyFontName is initial or not bodyFontColour is initial or not bodyFontSize is initial.&lt;/P&gt;&lt;P&gt;           concatenate waHtml '&amp;lt;font' into waHtml.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         Add the font name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           if not bodyFontName is initial.&lt;/P&gt;&lt;P&gt;              concatenate waHtml ' face ="' into waHtml.&lt;/P&gt;&lt;P&gt;              concatenate waHtml bodyFontName '"' into waHtml.&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;         Add the font colour&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           if not bodyFontColour is initial.&lt;/P&gt;&lt;P&gt;              concatenate waHtml ' color ="' into waHtml.&lt;/P&gt;&lt;P&gt;              concatenate waHtml bodyFontColour '"' into waHtml.&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;         Add the fontsize&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           if not bodyFontSize is initial.&lt;/P&gt;&lt;P&gt;              concatenate waHtml ' size ="' into waHtml.&lt;/P&gt;&lt;P&gt;              concatenate waHtml bodyFontSize '"' into waHtml.&lt;/P&gt;&lt;P&gt;           endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           concatenate waHtml '&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;           usedAFontAttribute = TRUE.&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;      Add the caption name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if wTextCell is initial.&lt;/P&gt;&lt;P&gt;          concatenate waHtml '&amp;amp;nbsp;' into waHtml.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          concatenate waHtml wTextCell into waHtml.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        if usedAFontAttribute = TRUE.&lt;/P&gt;&lt;P&gt;          concatenate waHtml '&amp;lt;/font&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;          usedAFontAttribute = FALSE.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        concatenate waHtml '&amp;lt;/td&amp;gt;' into waHtml.&lt;/P&gt;&lt;P&gt;        append waHtml to iLocHtml.&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;&lt;/P&gt;&lt;P&gt;    append '&amp;lt;/tr&amp;gt;' to iLocHtml.&lt;/P&gt;&lt;P&gt;  endLoop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append '&amp;lt;/table&amp;gt;' to iLocHtml.&lt;/P&gt;&lt;P&gt;endform.                                                                              "convertITABtoHtml&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; convertCodeToHtml... Builds an HTML table based upon a text table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form convertCodeToHtml using iContents like dumIHtml[]&lt;/P&gt;&lt;P&gt;                             value(programName)&lt;/P&gt;&lt;P&gt;                             value(ShortDescription)&lt;/P&gt;&lt;P&gt;                             value(sourceCodeType)&lt;/P&gt;&lt;P&gt;                             value(functionDocumentationExists)&lt;/P&gt;&lt;P&gt;                             value(isMainFunctionInclude)&lt;/P&gt;&lt;P&gt;                             value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                             value(htmlExtension)&lt;/P&gt;&lt;P&gt;                             value(customerNameRange)&lt;/P&gt;&lt;P&gt;                             value(getIncludes)&lt;/P&gt;&lt;P&gt;                             value(getDictStructures).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: htmlTable type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: listingName type string value 'Code listing for:'.&lt;/P&gt;&lt;P&gt;data: descriptionName type string value `Description: `.&lt;/P&gt;&lt;P&gt;data: head(255).&lt;/P&gt;&lt;P&gt;data: tail(255).&lt;/P&gt;&lt;P&gt;data: myTabix type syTabix.&lt;/P&gt;&lt;P&gt;data: nextLine type syTabix.&lt;/P&gt;&lt;P&gt;data: hyperlinkName type string.&lt;/P&gt;&lt;P&gt;data: copyOfCurrentLine type string.&lt;/P&gt;&lt;P&gt;data: currentLineLength type i value 0.&lt;/P&gt;&lt;P&gt;data: copyLineLength type i value 0.&lt;/P&gt;&lt;P&gt;data: ignoreFutureLines type i value FALSE.&lt;/P&gt;&lt;P&gt;data: foundAsterix type i value FALSE.&lt;/P&gt;&lt;P&gt;data: lowercaseLink type string.&lt;/P&gt;&lt;P&gt;data: waNextLine type string.&lt;/P&gt;&lt;P&gt;data: waContent(255).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html header to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform addHTMLHeader using htmlTable[]&lt;/P&gt;&lt;P&gt;                              programName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate listingName programName into listingName separated by space.&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;font size="3" face = "Arial" color="' COLOUR_BLACK '"&amp;gt;&amp;lt;b&amp;gt;' listingName '&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;' into htmlTable.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not shortDescription is initial.&lt;/P&gt;&lt;P&gt;    append '&amp;lt;br&amp;gt;' to htmlTable.&lt;/P&gt;&lt;P&gt;    concatenate descriptionName shortDescription into descriptionName separated by space.&lt;/P&gt;&lt;P&gt;    concatenate '&amp;lt;font size="3" face = "Arial" color="' COLOUR_BLACK '"&amp;gt;&amp;lt;b&amp;gt;' descriptionName '&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;' into htmlTable.&lt;/P&gt;&lt;P&gt;    append htmlTable.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;hr&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;pre width="100"&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iContents into waContent.&lt;/P&gt;&lt;P&gt;    myTabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if not ( iContents is initial ).&lt;/P&gt;&lt;P&gt;      while ( waContent cs '&amp;lt;' or waContent cs '&amp;gt;' ).&lt;/P&gt;&lt;P&gt;        replace '&amp;lt;' in waContent with LT.&lt;/P&gt;&lt;P&gt;        replace '&amp;gt;' in waContent with GT.&lt;/P&gt;&lt;P&gt;      endwhile.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if waContent+0(1) &amp;lt;&amp;gt; ASTERIX.&lt;/P&gt;&lt;P&gt;        currentLineLength = strlen( waContent ).&lt;/P&gt;&lt;P&gt;        copyOfCurrentLine = waContent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Don't hyperlink anything for files of type documentation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if sourceCodeType &amp;lt;&amp;gt; IS_DOCUMENTATION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Check for any functions to highlight&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          if ( waContent cs CALLFUNCTION ) and ( waContent &amp;lt;&amp;gt; 'DESTINATION' ).&lt;/P&gt;&lt;P&gt;            nextLine = myTabix + 1.&lt;/P&gt;&lt;P&gt;            read table iContents into waNextLine index nextLine.&lt;/P&gt;&lt;P&gt;            translate waNextLine to upper case.&lt;/P&gt;&lt;P&gt;            if waNextLine ns 'DESTINATION'.&lt;/P&gt;&lt;P&gt;              shift copyOfCurrentLine left deleting leading space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              copyLineLength = strlen( copyofCurrentLine ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              split copyOfCurrentLine at space into head tail.&lt;/P&gt;&lt;P&gt;              split tail at space into head tail.&lt;/P&gt;&lt;P&gt;              split tail at space into head tail.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            Function name is now in head&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              translate head using ''' '.&lt;/P&gt;&lt;P&gt;              shift head left deleting leading space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              try.&lt;/P&gt;&lt;P&gt;                if head&lt;EM&gt;0(1) = 'Y' or head&lt;/EM&gt;0(1) = 'Z' or head&lt;EM&gt;0(1) = 'y' or head&lt;/EM&gt;0(1) = 'z' or head cs customerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                Definately a customer function module&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  hyperLinkName = head.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  if sourceCodeType = IS_FUNCTION.&lt;/P&gt;&lt;P&gt;                    copyOfCurrentLine = 'call function &amp;lt;a href ="../'.&lt;/P&gt;&lt;P&gt;                  else.&lt;/P&gt;&lt;P&gt;                    copyOfCurrentLine = 'call function &amp;lt;a href ="'.&lt;/P&gt;&lt;P&gt;                  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  lowercaseLink = hyperlinkName.&lt;/P&gt;&lt;P&gt;                  translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                    translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;                  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                              lowercaseLink     "hyperlinkName&lt;/P&gt;&lt;P&gt;                              '/'&lt;/P&gt;&lt;P&gt;                              lowercaseLink     "hyperlinkName&lt;/P&gt;&lt;P&gt;                              Period htmlExtension '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                              ''''&lt;/P&gt;&lt;P&gt;                              hyperlinkName&lt;/P&gt;&lt;P&gt;                              ''''&lt;/P&gt;&lt;P&gt;                              '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                              tail into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                Pad the string back out with spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  while copyLineLength &amp;lt; currentLineLength.&lt;/P&gt;&lt;P&gt;                    shift copyOfCurrentLine right by 1 places.&lt;/P&gt;&lt;P&gt;                    copyLineLength = copyLineLength + 1.&lt;/P&gt;&lt;P&gt;                  endwhile.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  waContent = copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;                endif.&lt;/P&gt;&lt;P&gt;                catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;              endtry.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Check for any customer includes to hyperlink&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if waContent cs INCLUDE or waContent cs LOWINCLUDE.&lt;/P&gt;&lt;P&gt;          shift copyOfCurrentLine left deleting leading space.&lt;/P&gt;&lt;P&gt;          copyLineLength = strlen( copyOfCurrentLine ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          split copyOfCurrentLine at space 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;          try.&lt;/P&gt;&lt;P&gt;            if ( tail&lt;EM&gt;0(1) = 'Y' or tail&lt;/EM&gt;0(1) = 'Z' or tail&lt;EM&gt;0(1) = 'y' or tail&lt;/EM&gt;0(1) = 'z' or tail cs customerNameRange or tail&lt;EM&gt;0(2) = 'mz' or tail&lt;/EM&gt;0(2) = 'MZ' )&lt;/P&gt;&lt;P&gt;                and not getIncludes is initial and  tail ns STRUCTURE and tail ns LOWSTRUCTURE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            Hyperlink for program includes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              clear waContent.&lt;/P&gt;&lt;P&gt;              shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;              split tail at PERIOD into hyperlinkName tail.&lt;/P&gt;&lt;P&gt;              copyOfCurrentLine = 'include &amp;lt;a href ="'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              lowercaseLink = hyperlinkName.&lt;/P&gt;&lt;P&gt;              translate lowercaseLink to lower case.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                          lowercaseLink       "hyperlinkName&lt;/P&gt;&lt;P&gt;                          PERIOD htmlExtension '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                          hyperlinkName&lt;/P&gt;&lt;P&gt;                          '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                          PERIOD tail into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            Pad the string back out with spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              while copyLineLength &amp;lt; currentLineLength.&lt;/P&gt;&lt;P&gt;                shift copyOfCurrentLine right by 1 places.&lt;/P&gt;&lt;P&gt;                copyLineLength = copyLineLength + 1.&lt;/P&gt;&lt;P&gt;              endwhile.&lt;/P&gt;&lt;P&gt;              waContent = copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;            else.&lt;/P&gt;&lt;P&gt;              if not getDictStructures is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             Hyperlink for structure include e.g. "include structure zfred."&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;               copyLineLength = strlen( copyofCurrentLine ).&lt;/P&gt;&lt;P&gt;               split copyOfCurrentLine at space into head tail.&lt;/P&gt;&lt;P&gt;               shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;               split tail at space into head tail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;               try.&lt;/P&gt;&lt;P&gt;                 if tail&lt;EM&gt;0(1) = 'Y' or tail&lt;/EM&gt;0(1) = 'Z' or tail&lt;EM&gt;0(1) = 'y' or tail&lt;/EM&gt;0(1) = 'z' or tail cs customerNameRange.&lt;/P&gt;&lt;P&gt;                   clear waContent.&lt;/P&gt;&lt;P&gt;                   shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;                   split tail at PERIOD into hyperlinkName tail.&lt;/P&gt;&lt;P&gt;                   copyOfCurrentLine = 'include structure &amp;lt;a href ='.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                   lowercaseLink = hyperlinkName.&lt;/P&gt;&lt;P&gt;                   translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                 If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                   if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                     translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;                   endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                   concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                               '"'&lt;/P&gt;&lt;P&gt;                               lowercaseLink    "hyperlinkName&lt;/P&gt;&lt;P&gt;                               '/'&lt;/P&gt;&lt;P&gt;                               'dictionary-'&lt;/P&gt;&lt;P&gt;                               lowercaseLink    "hyperlinkName&lt;/P&gt;&lt;P&gt;                               PERIOD htmlExtension&lt;/P&gt;&lt;P&gt;                               '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                               hyperlinkName&lt;/P&gt;&lt;P&gt;                               '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                               PERIOD tail into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                 Pad the string back out with spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                   while copyLineLength &amp;lt; currentLineLength.&lt;/P&gt;&lt;P&gt;                     shift copyOfCurrentLine right by 1 places.&lt;/P&gt;&lt;P&gt;                     copyLineLength = copyLineLength + 1.&lt;/P&gt;&lt;P&gt;                   endwhile.&lt;/P&gt;&lt;P&gt;                   waContent = copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;                 endif.&lt;/P&gt;&lt;P&gt;                 catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;               endtry.&lt;/P&gt;&lt;P&gt;             endif.&lt;/P&gt;&lt;P&gt;           endif.&lt;/P&gt;&lt;P&gt;            catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;         endtry.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;     else.&lt;/P&gt;&lt;P&gt;       if not syntaxHighlightComments is initial and waContent+0(1) = ASTERIX.&lt;/P&gt;&lt;P&gt;         concatenate '&amp;lt;font color ="' COMMENT_COLOUR '"&amp;gt;' into head.&lt;/P&gt;&lt;P&gt;         concatenate head waContent '&amp;lt;/font&amp;gt;' into tail.&lt;/P&gt;&lt;P&gt;         waContent = 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;     htmlTable = waContent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      htmlTable = ''.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    append htmlTable.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;/pre&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html footer to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform addHtmlFooter using htmlTable[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  iContents[] = htmlTable[].&lt;/P&gt;&lt;P&gt;endform.                                                                              "convertCodeToHtml&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; convertClassToHtml... Builds an HTML table based upon a text table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form convertClassToHtml using iContents like dumIHtml[]&lt;/P&gt;&lt;P&gt;                              value(className)&lt;/P&gt;&lt;P&gt;                              value(ShortDescription)&lt;/P&gt;&lt;P&gt;                              value(sourceCodeType)&lt;/P&gt;&lt;P&gt;                              value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                              value(htmlExtension)&lt;/P&gt;&lt;P&gt;                              value(customerNameRange)&lt;/P&gt;&lt;P&gt;                              value(getDictStructures).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: htmlTable type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: listingName type string value 'Code listing for class:'.&lt;/P&gt;&lt;P&gt;data: descriptionName type string value `Description: `.&lt;/P&gt;&lt;P&gt;data: myTabix type syTabix.&lt;/P&gt;&lt;P&gt;data: waContent(255).&lt;/P&gt;&lt;P&gt;data: head type string.&lt;/P&gt;&lt;P&gt;data: tail type string.&lt;/P&gt;&lt;P&gt;data: hyperlinkName type string.&lt;/P&gt;&lt;P&gt;data: lowercaseLink type string.&lt;/P&gt;&lt;P&gt;data: copyOfCurrentLine type string.&lt;/P&gt;&lt;P&gt;data: currentLineLength type i value 0.&lt;/P&gt;&lt;P&gt;data: copyLineLength type i value 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html header to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform addHTMLHeader using htmlTable[]&lt;/P&gt;&lt;P&gt;                              className.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate listingName className into listingName separated by space.&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;font size="3" face = "Arial" color="' COLOUR_BLACK '"&amp;gt;&amp;lt;b&amp;gt;' listingName '&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;' into htmlTable.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not shortDescription is initial.&lt;/P&gt;&lt;P&gt;    append '&amp;lt;br&amp;gt;' to htmlTable.&lt;/P&gt;&lt;P&gt;    concatenate descriptionName shortDescription into descriptionName separated by space.&lt;/P&gt;&lt;P&gt;    concatenate '&amp;lt;font size="3" face = "Arial" color="' COLOUR_BLACK '"&amp;gt;&amp;lt;b&amp;gt;' descriptionName '&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;' into htmlTable.&lt;/P&gt;&lt;P&gt;    append htmlTable.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;hr&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;pre width="100"&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iContents into waContent.&lt;/P&gt;&lt;P&gt;    myTabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Comments&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not syntaxHighlightComments is initial and waContent+0(1) = ASTERIX.&lt;/P&gt;&lt;P&gt;      concatenate '&amp;lt;font color ="' COMMENT_COLOUR '"&amp;gt;' into head.&lt;/P&gt;&lt;P&gt;      concatenate head waContent '&amp;lt;/font&amp;gt;' into waContent.&lt;/P&gt;&lt;P&gt;      htmlTable = waContent.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Smaller than, greater than signs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      if not ( iContents is initial ).&lt;/P&gt;&lt;P&gt;        while ( waContent cs '&amp;lt;' or waContent cs '&amp;gt;' ).&lt;/P&gt;&lt;P&gt;          replace '&amp;lt;' in waContent with LT.&lt;/P&gt;&lt;P&gt;          replace '&amp;gt;' in waContent with GT.&lt;/P&gt;&lt;P&gt;        endwhile.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Dictionary structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if not getDictStructures is initial.&lt;/P&gt;&lt;P&gt;          find 'class' in waContent ignoring case.&lt;/P&gt;&lt;P&gt;          if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Hyperlink for dictionary/structure include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            copyLineLength = strlen( waContent ).&lt;/P&gt;&lt;P&gt;            copyOfCurrentLine = waContent.&lt;/P&gt;&lt;P&gt;            split copyOfCurrentLine at space into head tail.&lt;/P&gt;&lt;P&gt;            shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;            split tail at space into head tail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            try.&lt;/P&gt;&lt;P&gt;              if tail&lt;EM&gt;0(1) = 'Y' or tail&lt;/EM&gt;0(1) = 'Z' or tail&lt;EM&gt;0(1) = 'y' or tail&lt;/EM&gt;0(1) = 'z' or tail cs customerNameRange.&lt;/P&gt;&lt;P&gt;                clear waContent.&lt;/P&gt;&lt;P&gt;                shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;                split tail at PERIOD into hyperlinkName tail.&lt;/P&gt;&lt;P&gt;                copyOfCurrentLine = 'include structure &amp;lt;a href ='.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                lowercaseLink = hyperlinkName.&lt;/P&gt;&lt;P&gt;                translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                  translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;                endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                            '"'&lt;/P&gt;&lt;P&gt;                            lowercaseLink    "hyperlinkName&lt;/P&gt;&lt;P&gt;                            '/'&lt;/P&gt;&lt;P&gt;                            'dictionary-'&lt;/P&gt;&lt;P&gt;                            lowercaseLink    "hyperlinkName&lt;/P&gt;&lt;P&gt;                            PERIOD htmlExtension&lt;/P&gt;&lt;P&gt;                            '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                            hyperlinkName&lt;/P&gt;&lt;P&gt;                            '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                            PERIOD tail into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              Pad the string back out with spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                while copyLineLength &amp;lt; currentLineLength.&lt;/P&gt;&lt;P&gt;                  shift copyOfCurrentLine right by 1 places.&lt;/P&gt;&lt;P&gt;                  copyLineLength = copyLineLength + 1.&lt;/P&gt;&lt;P&gt;                endwhile.&lt;/P&gt;&lt;P&gt;                waContent = copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;              catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;            endtry.&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;        htmlTable = waContent.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        htmlTable = ''.&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;    append htmlTable.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;/pre&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html footer to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform addHtmlFooter using htmlTable[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  iContents[] = htmlTable[].&lt;/P&gt;&lt;P&gt;endform.                                                                             "convertClassToHtml&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; convertFunctionToHtml... Builds an HTML table based upon a text table.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form convertFunctionToHtml using iContents like dumIHtml[]&lt;/P&gt;&lt;P&gt;                                 value(functionName)&lt;/P&gt;&lt;P&gt;                                 value(ShortDescription)&lt;/P&gt;&lt;P&gt;                                 value(sourceCodeType)&lt;/P&gt;&lt;P&gt;                                 value(functionDocumentationExists)&lt;/P&gt;&lt;P&gt;                                 value(isMainFunctionInclude)&lt;/P&gt;&lt;P&gt;                                 value(syntaxHighlightComments)&lt;/P&gt;&lt;P&gt;                                 value(htmlExtension)&lt;/P&gt;&lt;P&gt;                                 value(customerNameRange)&lt;/P&gt;&lt;P&gt;                                 value(getIncludes)&lt;/P&gt;&lt;P&gt;                                 value(getDictStructures).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: htmlTable type standard table of string with header line.&lt;/P&gt;&lt;P&gt;data: listingName type string value 'Code listing for function:'.&lt;/P&gt;&lt;P&gt;data: descriptionName type string value `Description: `.&lt;/P&gt;&lt;P&gt;data: head(255).&lt;/P&gt;&lt;P&gt;data: tail(255).&lt;/P&gt;&lt;P&gt;data: myTabix type syTabix.&lt;/P&gt;&lt;P&gt;data: nextLine type syTabix.&lt;/P&gt;&lt;P&gt;data: hyperlinkName type string.&lt;/P&gt;&lt;P&gt;data: copyOfCurrentLine type string.&lt;/P&gt;&lt;P&gt;data: currentLineLength type i value 0.&lt;/P&gt;&lt;P&gt;data: copyLineLength type i value 0.&lt;/P&gt;&lt;P&gt;data: ignoreFutureLines type i value FALSE.&lt;/P&gt;&lt;P&gt;data: foundAsterix type i value FALSE.&lt;/P&gt;&lt;P&gt;data: lowercaseLink type string.&lt;/P&gt;&lt;P&gt;data: waNextLine type string.&lt;/P&gt;&lt;P&gt;data: waContent(255).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html header to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform addHTMLHeader using htmlTable[]&lt;/P&gt;&lt;P&gt;                              functionName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate listingName functionName into listingName separated by space.&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;font size="3" face = "Arial" color="' COLOUR_BLACK '"&amp;gt;&amp;lt;b&amp;gt;' listingName '&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;' into htmlTable.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not shortDescription is initial.&lt;/P&gt;&lt;P&gt;    append '&amp;lt;br&amp;gt;' to htmlTable.&lt;/P&gt;&lt;P&gt;    concatenate descriptionName shortDescription into descriptionName separated by space.&lt;/P&gt;&lt;P&gt;    concatenate '&amp;lt;font size="3" face = "Arial" color="' COLOUR_BLACK '"&amp;gt;&amp;lt;b&amp;gt;' descriptionName '&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;' into htmlTable.&lt;/P&gt;&lt;P&gt;    append htmlTable.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;hr&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;pre width="100"&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iContents into waContent.&lt;/P&gt;&lt;P&gt;    myTabix = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Extra code for adding global and doc hyperlinks to functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if sourceCodeType = IS_FUNCTION and isMainFunctionInclude = TRUE.&lt;/P&gt;&lt;P&gt;      if sy-tabix &amp;gt; 1.&lt;/P&gt;&lt;P&gt;        if waContent+0(1) = ASTERIX and ignoreFutureLines = FALSE.&lt;/P&gt;&lt;P&gt;          foundAsterix = TRUE.&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          if foundAsterix = TRUE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Lets add our extra HTML lines in here&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            append '' to HtmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Global data hyperlink&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if not syntaxHighlightComments is initial.&lt;/P&gt;&lt;P&gt;              concatenate '&amp;lt;font color ="' COMMENT_COLOUR '"&amp;gt;' into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            concatenate copyOfCurrentLine '*       &amp;lt;a href ="' into copyOfcurrentLine.&lt;/P&gt;&lt;P&gt;            lowercaseLink = functionName.&lt;/P&gt;&lt;P&gt;            translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;              translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            concatenate copyOfCurrentLine 'global-' lowercaseLink  "functionName&lt;/P&gt;&lt;P&gt;                        PERIOD htmlExtension '"&amp;gt;' 'Global data declarations' '&amp;lt;/a&amp;gt;' into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            if not syntaxHighlightComments is initial.&lt;/P&gt;&lt;P&gt;              concatenate copyOfCurrentLine '&amp;lt;/font&amp;gt;' into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            append copyOfCurrentLine to HtmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Documentation hyperlink.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            if functionDocumentationExists = TRUE.&lt;/P&gt;&lt;P&gt;              if not syntaxHighlightComments is initial.&lt;/P&gt;&lt;P&gt;                concatenate '&amp;lt;font color ="' COMMENT_COLOUR '"&amp;gt;' into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              concatenate copyOfCurrentLine '*       &amp;lt;a href ="' into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              lowercaseLink = functionName.&lt;/P&gt;&lt;P&gt;              translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                          'docs-'&lt;/P&gt;&lt;P&gt;                          lowercaseLink  "functionName&lt;/P&gt;&lt;P&gt;                          PERIOD htmlExtension '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                          'Function module documentation'&lt;/P&gt;&lt;P&gt;                          '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                          into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              if not pComm is initial.&lt;/P&gt;&lt;P&gt;                concatenate copyOfCurrentLine '&amp;lt;/font&amp;gt;' into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;              append copyOfCurrentLine to HtmlTable.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;            foundAsterix = FALSE.&lt;/P&gt;&lt;P&gt;            ignoreFutureLines = TRUE.&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;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Carry on as normal&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    if not ( iContents is initial ).&lt;/P&gt;&lt;P&gt;      while ( waContent cs '&amp;lt;' or waContent cs '&amp;gt;' ).&lt;/P&gt;&lt;P&gt;        replace '&amp;lt;' in waContent with LT.&lt;/P&gt;&lt;P&gt;        replace '&amp;gt;' in waContent with GT.&lt;/P&gt;&lt;P&gt;      endwhile.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if waContent+0(1) &amp;lt;&amp;gt; ASTERIX.&lt;/P&gt;&lt;P&gt;        currentLineLength = strlen( waContent ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Don't hyperlink anything for files of type documentation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if sourceCodeType &amp;lt;&amp;gt; IS_DOCUMENTATION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Check for any functions to highlight&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          if ( waContent cs CALLFUNCTION ) and ( waContent &amp;lt;&amp;gt; 'DESTINATION' ).&lt;/P&gt;&lt;P&gt;            nextLine = myTabix + 1.&lt;/P&gt;&lt;P&gt;            read table iContents into waNextLine index nextLine.&lt;/P&gt;&lt;P&gt;            translate waNextLine to upper case.&lt;/P&gt;&lt;P&gt;            if waNextLine ns 'DESTINATION'.&lt;/P&gt;&lt;P&gt;              copyOfCurrentLine = waContent.&lt;/P&gt;&lt;P&gt;              shift copyOfCurrentLine left deleting leading space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              copyLineLength = strlen( copyofCurrentLine ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              split copyOfCurrentLine at space into head tail.&lt;/P&gt;&lt;P&gt;              split tail at space into head tail.&lt;/P&gt;&lt;P&gt;              split tail at space into head tail.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            Function name is now in head&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              translate head using ''' '.&lt;/P&gt;&lt;P&gt;              shift head left deleting leading space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              try.&lt;/P&gt;&lt;P&gt;                if head&lt;EM&gt;0(1) = 'Y' or head&lt;/EM&gt;0(1) = 'Z' or head&lt;EM&gt;0(1) = 'y' or head&lt;/EM&gt;0(1) = 'z' or head cs customerNameRange.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                Definately a customer function module&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  hyperLinkName = head.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  if sourceCodeType = IS_FUNCTION.&lt;/P&gt;&lt;P&gt;                    copyOfCurrentLine = 'call function &amp;lt;a href ="../'.&lt;/P&gt;&lt;P&gt;                  else.&lt;/P&gt;&lt;P&gt;                    copyOfCurrentLine = 'call function &amp;lt;a href ="'.&lt;/P&gt;&lt;P&gt;                  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  lowercaseLink = hyperlinkName.&lt;/P&gt;&lt;P&gt;                  translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                    translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;                  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                              lowercaseLink     "hyperlinkName&lt;/P&gt;&lt;P&gt;                              '/'&lt;/P&gt;&lt;P&gt;                              lowercaseLink     "hyperlinkName&lt;/P&gt;&lt;P&gt;                              Period htmlExtension '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                              ''''&lt;/P&gt;&lt;P&gt;                              hyperlinkName&lt;/P&gt;&lt;P&gt;                              ''''&lt;/P&gt;&lt;P&gt;                              '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                              tail into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                Pad the string back out with spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  while copyLineLength &amp;lt; currentLineLength.&lt;/P&gt;&lt;P&gt;                    shift copyOfCurrentLine right by 1 places.&lt;/P&gt;&lt;P&gt;                    copyLineLength = copyLineLength + 1.&lt;/P&gt;&lt;P&gt;                  endwhile.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                  waContent = copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;                endif.&lt;/P&gt;&lt;P&gt;                catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;              endtry.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Check for any customer includes to hyperlink&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if waContent cs INCLUDE or waContent cs LOWINCLUDE.&lt;/P&gt;&lt;P&gt;          copyOfCurrentLine = waContent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          shift copyOfCurrentLine left deleting leading space.&lt;/P&gt;&lt;P&gt;          copyLineLength = strlen( copyOfCurrentLine ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          split copyOfCurrentLine at space 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;          try.&lt;/P&gt;&lt;P&gt;            if ( tail&lt;EM&gt;0(1) = 'Y' or tail&lt;/EM&gt;0(1) = 'Z' or tail&lt;EM&gt;0(1) = 'y' or tail&lt;/EM&gt;0(1) = 'z'&lt;/P&gt;&lt;P&gt;                 or tail cs customerNameRange or tail&lt;EM&gt;0(2) = 'mz' or tail&lt;/EM&gt;0(2) = 'MZ' ) and not getIncludes is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            Hyperlink for program includes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              clear waContent.&lt;/P&gt;&lt;P&gt;              shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;              split tail at PERIOD into hyperlinkName tail.&lt;/P&gt;&lt;P&gt;              copyOfCurrentLine = 'include &amp;lt;a href ="'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              lowercaseLink = hyperlinkName.&lt;/P&gt;&lt;P&gt;              translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                          lowercaseLink       "hyperlinkName&lt;/P&gt;&lt;P&gt;                          PERIOD htmlExtension '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                          hyperlinkName&lt;/P&gt;&lt;P&gt;                          '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                          PERIOD tail into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            Pad the string back out with spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;              while copyLineLength &amp;lt; currentLineLength.&lt;/P&gt;&lt;P&gt;                shift copyOfCurrentLine right by 1 places.&lt;/P&gt;&lt;P&gt;                copyLineLength = copyLineLength + 1.&lt;/P&gt;&lt;P&gt;              endwhile.&lt;/P&gt;&lt;P&gt;              waContent = copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;            else.&lt;/P&gt;&lt;P&gt;              if not getDictStructures is initial.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              Hyperlink for structure include&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                copyLineLength = strlen( copyofCurrentLine ).&lt;/P&gt;&lt;P&gt;                split copyOfCurrentLine at space into head tail.&lt;/P&gt;&lt;P&gt;                shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;                split tail at space into head tail.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                try.&lt;/P&gt;&lt;P&gt;                  if tail&lt;EM&gt;0(1) = 'Y' or tail&lt;/EM&gt;0(1) = 'Z' or tail&lt;EM&gt;0(1) = 'y' or tail&lt;/EM&gt;0(1) = 'z' or tail cs customerNameRange.&lt;/P&gt;&lt;P&gt;                    clear waContent.&lt;/P&gt;&lt;P&gt;                    shift tail left deleting leading space.&lt;/P&gt;&lt;P&gt;                    split tail at PERIOD into hyperlinkName tail.&lt;/P&gt;&lt;P&gt;                    copyOfCurrentLine = 'include structure &amp;lt;a href ='.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                    lowercaseLink = hyperlinkName.&lt;/P&gt;&lt;P&gt;                    translate lowercaseLink to lower case.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  If we are running on a non UNIX environment we will need to remove forward slashes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                    if frontendOpSystem = NON_UNIX.&lt;/P&gt;&lt;P&gt;                      translate lowercaseLink using '/_'.&lt;/P&gt;&lt;P&gt;                    endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                    concatenate copyOfCurrentLine&lt;/P&gt;&lt;P&gt;                                '"'&lt;/P&gt;&lt;P&gt;                                lowercaseLink    "hyperlinkName&lt;/P&gt;&lt;P&gt;                                '/'&lt;/P&gt;&lt;P&gt;                                'dictionary-'&lt;/P&gt;&lt;P&gt;                                lowercaseLink    "hyperlinkName&lt;/P&gt;&lt;P&gt;                                PERIOD htmlExtension&lt;/P&gt;&lt;P&gt;                                '"&amp;gt;'&lt;/P&gt;&lt;P&gt;                                hyperlinkName&lt;/P&gt;&lt;P&gt;                                '&amp;lt;/a&amp;gt;'&lt;/P&gt;&lt;P&gt;                                PERIOD tail into copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                  Pad the string back out with spaces&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                    while copyLineLength &amp;lt; currentLineLength.&lt;/P&gt;&lt;P&gt;                      shift copyOfCurrentLine right by 1 places.&lt;/P&gt;&lt;P&gt;                      copyLineLength = copyLineLength + 1.&lt;/P&gt;&lt;P&gt;                    endwhile.&lt;/P&gt;&lt;P&gt;                    waContent = copyOfCurrentLine.&lt;/P&gt;&lt;P&gt;                  endif.&lt;/P&gt;&lt;P&gt;                  catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;                endtry.&lt;/P&gt;&lt;P&gt;              endif.&lt;/P&gt;&lt;P&gt;            endif.&lt;/P&gt;&lt;P&gt;            catch cx_sy_range_out_of_bounds into objRuntimeError.&lt;/P&gt;&lt;P&gt;         endtry.&lt;/P&gt;&lt;P&gt;       endif.&lt;/P&gt;&lt;P&gt;     else.&lt;/P&gt;&lt;P&gt;       if not syntaxHighlightComments is initial and waContent+0(1) = ASTERIX.&lt;/P&gt;&lt;P&gt;         concatenate '&amp;lt;font color ="' COMMENT_COLOUR '"&amp;gt;' into head.&lt;/P&gt;&lt;P&gt;         concatenate head waContent '&amp;lt;/font&amp;gt;' into tail.&lt;/P&gt;&lt;P&gt;         waContent = 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;     htmlTable = waContent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      htmlTable = ''.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;    append htmlTable.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  htmlTable = '&amp;lt;/pre&amp;gt;'.&lt;/P&gt;&lt;P&gt;  append htmlTable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Add a html footer to the table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  perform addHtmlFooter using htmlTable[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  iContents[] = htmlTable[].&lt;/P&gt;&lt;P&gt;endform.                                                                          "convertFunctionToHtml&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; buildColumnHeaders... build table column names&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form buildColumnHeaders using iLocColumnCaptions like dumiHtml[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append 'Row' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Field name' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Position' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Key' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Data element' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Domain' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Datatype' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Length' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;  append 'Domain text' to iLocColumnCaptions.&lt;/P&gt;&lt;P&gt;endform.                                                                             "buildColumnHeaders&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;addHTMLHeader...  add a html formatted header to our output table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form addHTMLHeader using iLocHeader like dumiHtml[]&lt;/P&gt;&lt;P&gt;                         value(title).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waHeader type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append '&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"&amp;gt;' to iLocHeader.&lt;/P&gt;&lt;P&gt;  append '&amp;lt;html&amp;gt;' to iLocHeader.&lt;/P&gt;&lt;P&gt;  append '&amp;lt;head&amp;gt;' to iLocHeader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;title&amp;gt;' title '&amp;lt;/title&amp;gt;' into waHeader.&lt;/P&gt;&lt;P&gt;  append waHeader to ilocHeader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append '&amp;lt;/head&amp;gt;' to iLocHeader.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not pBack is initial.&lt;/P&gt;&lt;P&gt;    concatenate '&amp;lt;body bgcolor="' BACKGROUND_COLOUR '"&amp;gt;' into waHeader.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    concatenate '&amp;lt;body bgcolor="' COLOUR_WHITE '"&amp;gt;' into waHeader.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append waHeader to iLocHeader.&lt;/P&gt;&lt;P&gt;endform.                                                                                "addHTMLHeader&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;addHTMLFooter...  add a html formatted footer to our output table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form addHTMLFooter using iLocFooter like dumiHtml[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: footerMessage type string.&lt;/P&gt;&lt;P&gt;data: waFooter type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform buildFooterMessage using 'HTML'&lt;/P&gt;&lt;P&gt;                                   footerMessage.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  append '&amp;lt;hr&amp;gt;' to iLocFooter.&lt;/P&gt;&lt;P&gt;  concatenate '&amp;lt;font size="2" face = "Sans Serif"&amp;gt;' footerMessage into waFooter.&lt;/P&gt;&lt;P&gt;  append waFooter to iLocFooter.&lt;/P&gt;&lt;P&gt;  append '&amp;lt;/font&amp;gt;' to iLocFooter.&lt;/P&gt;&lt;P&gt;  append '&amp;lt;/body&amp;gt;' to iLocFooter.&lt;/P&gt;&lt;P&gt;  append '&amp;lt;/html&amp;gt;' to iLocFooter.&lt;/P&gt;&lt;P&gt;endform.                                                                                "addHTMLFooter&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;buildFooterMessage...Returns a footer message based on the output file type.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form buildFooterMessage using fileType&lt;/P&gt;&lt;P&gt;                              returnMessage.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if fileType = 'HTML'.&lt;/P&gt;&lt;P&gt;    concatenate `Extracted by Direct Download Enterprise version ` VERSIONNO ' - E.G.Mellodew. 1998-2004 UK.'&lt;/P&gt;&lt;P&gt;                into returnMessage.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    concatenate `Extracted by Direct Download Enteprise version ` VERSIONNO ' - E.G.Mellodew. 1998-2004 UK.'&lt;/P&gt;&lt;P&gt;                into returnMessage.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.                                                                            "buildFooterMessage&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; fillTreeNodeTables...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form fillTreeNodeTables using iLocDictionary like iDictionary[]&lt;/P&gt;&lt;P&gt;                              iLocTreeDisplay like iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                              value(runTime).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type i.&lt;/P&gt;&lt;P&gt;data: waTreeDisplay like sNodeText.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waDictionary&amp;gt; type tDictTable.&lt;/P&gt;&lt;P&gt;data: tableLinesString type string.&lt;/P&gt;&lt;P&gt;data: runtimeChar(10).&lt;/P&gt;&lt;P&gt;data: subLevel type string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tableLines = lines( iLocDictionary ).&lt;/P&gt;&lt;P&gt;  tableLinesString = tableLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tableLines = 1.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString 'table downloaded' into waTreeDisplay-text2 separated by space.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString 'tables downloaded' into waTreeDisplay-text2 separated by space.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write runTime to runtimeChar.&lt;/P&gt;&lt;P&gt;  concatenate waTreeDisplay-text2 '- runtime' runTimeChar into waTreeDisplay-text2 separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;include header display record.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  waTreeDisplay-tlevel = '1'.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tlength2  = 60.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tcolor2    = 1.&lt;/P&gt;&lt;P&gt;  append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocDictionary assigning &amp;lt;waDictionary&amp;gt;.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tlevel = '2'. .&lt;/P&gt;&lt;P&gt;    waTreeDisplay-text2 = &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor2    = 3.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor3    = 3.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;    concatenate 'Dictionary:' &amp;lt;waDictionary&amp;gt;-tableTitle into waTreeDisplay-text3 separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                            "fillTreeNodeTables&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; fillTreeNodeMessages...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form fillTreeNodeMessages using iLocMessages like iMessages[]&lt;/P&gt;&lt;P&gt;                                iLocTreeDisplay like iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                value(runTime).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type i.&lt;/P&gt;&lt;P&gt;data: waTreeDisplay like sNodeText.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waMessage&amp;gt; type tMessage.&lt;/P&gt;&lt;P&gt;data: tableLinesString type string.&lt;/P&gt;&lt;P&gt;data: runtimeChar(10).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iLocMessages ascending by arbgb.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;    at new arbgb.&lt;/P&gt;&lt;P&gt;      tableLines = tableLines + 1.&lt;/P&gt;&lt;P&gt;    endat.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;  tableLinesString = tableLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tableLines = 1.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString 'message class downloaded' into waTreeDisplay-text2 separated by space.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString 'message classes downloaded' into waTreeDisplay-text2 separated by space.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write runTime to runTimeChar.&lt;/P&gt;&lt;P&gt;  concatenate waTreeDisplay-text2 '- runtime' runTimeChar into waTreeDisplay-text2 separated by space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;include header display record.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  waTreeDisplay-tlevel = '1'.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tlength2 = 60.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tcolor2 = 1.&lt;/P&gt;&lt;P&gt;  append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;    at new arbgb.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = '2'.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 5.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 5.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text3 = &amp;lt;waMessage&amp;gt;-sText.&lt;/P&gt;&lt;P&gt;      concatenate 'Message class:'  waTreeDisplay-text3 into waTreeDisplay-text3 separated by space.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;    endat.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                           "fillTreeNodeMessages&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; fillTreeNodeFunctions...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form fillTreeNodeFunctions using iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                                 iLocTreeDisplay like iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                 value(runTime).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type i.&lt;/P&gt;&lt;P&gt;data: waTreeDisplay like sNodeText.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waFunction&amp;gt; type tFunction.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waScreen&amp;gt; type tScreenFlow.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waGUITitle&amp;gt; type tGUITitle.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waDictionary&amp;gt; type tDictTable.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waInclude&amp;gt; type tInclude.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waMessage&amp;gt; type tMessage.&lt;/P&gt;&lt;P&gt;data: tableLinesString type string.&lt;/P&gt;&lt;P&gt;data: runtimeChar(10).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort iLocFunctions ascending by functionName.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tableLines = lines( iLocFunctions ).&lt;/P&gt;&lt;P&gt;  tableLinesString = tableLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tableLines = 1.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString ` function downloaded` into waTreeDisplay-text2.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString ` functions downloaded` into waTreeDisplay-text2.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write runTime to runTimeChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate waTreeDisplay-text2 ` - runtime ` runTimeChar into waTreeDisplay-text2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;include header display record.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  waTreeDisplay-tlevel = '1'.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tlength2  = 60.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tcolor2    = 1.&lt;/P&gt;&lt;P&gt;  append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Lets fill the detail in&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  loop at iLocFunctions assigning &amp;lt;wafunction&amp;gt;.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tlevel = 2.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-text2 = &amp;lt;wafunction&amp;gt;-functionName.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor2    = 7.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor3    = 7.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;    concatenate `Function: ` &amp;lt;wafunction&amp;gt;-functionName into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;    append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Screens.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waFunction&amp;gt;-iScreenFlow assigning &amp;lt;waScreen&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = '2'.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 = &amp;lt;waScreen&amp;gt;-screen.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 6.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 6.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text3 = 'Screen'.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  GUI Title.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waFunction&amp;gt;-iGUITitle assigning &amp;lt;waGUITitle&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = '2'.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 = &amp;lt;waGUITitle&amp;gt;-obj_code.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 6.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 6.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text3 = 'GUI Title'.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Fill in the tree with include information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waFunction&amp;gt;-iIncludes assigning &amp;lt;waInclude&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 =  &amp;lt;waInclude&amp;gt;-includeName.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 4.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 4.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Include:   ` &amp;lt;waInclude&amp;gt;-includeTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  fill in the tree with dictionary information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waFunction&amp;gt;-iDictStruct assigning &amp;lt;waDictionary&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 =  &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Dictionary:` &amp;lt;waDictionary&amp;gt;-tableTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  fill in the tree with message information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    sort &amp;lt;waFunction&amp;gt;-iMessages[] ascending by arbgb.&lt;/P&gt;&lt;P&gt;    loop at &amp;lt;waFunction&amp;gt;-iMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;      at new arbgb.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text2 = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor2    = 5.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor3    = 5.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select the message class text if we do not have it already&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if &amp;lt;waMessage&amp;gt;-sText is initial.&lt;/P&gt;&lt;P&gt;          select single stext from t100a&lt;/P&gt;&lt;P&gt;                              into &amp;lt;waMessage&amp;gt;-stext&lt;/P&gt;&lt;P&gt;                              where arbgb = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text3 = &amp;lt;waMessage&amp;gt;-sText.&lt;/P&gt;&lt;P&gt;        concatenate `Message class: `  waTreeDisplay-text3 into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;        append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;      endat.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                          "fillTreeNodeFunctions&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; fillTreeNodePrograms&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form fillTreeNodePrograms using iLocPrograms like iPrograms[]&lt;/P&gt;&lt;P&gt;                                iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                                iLocTreeDisplay like iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                                value(runTime).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type i.&lt;/P&gt;&lt;P&gt;data: waTreeDisplay like sNodeText.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waProgram&amp;gt; type tProgram.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waScreen&amp;gt; type tScreenFlow.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waFunction&amp;gt; type tFunction.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waDictionary&amp;gt; type tDictTable.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waInclude&amp;gt; type tInclude.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waMessage&amp;gt; type tMessage.&lt;/P&gt;&lt;P&gt;data: tableLinesString type string.&lt;/P&gt;&lt;P&gt;data: runtimeChar(10).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tableLines = lines( iLocPrograms ).&lt;/P&gt;&lt;P&gt;  tableLinesString = tableLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tableLines = 1.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString ` program downloaded` into waTreeDisplay-text2.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString ` programs downloaded` into waTreeDisplay-text2.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write runTime to runTimeChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate waTreeDisplay-text2 ` - runtime ` runTimeChar into waTreeDisplay-text2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;include header display record.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  waTreeDisplay-tlevel = '1'.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tlength2  = 60.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tcolor2    = 1.&lt;/P&gt;&lt;P&gt;  append waTreeDisplay to iTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocPrograms assigning &amp;lt;waProgram&amp;gt;.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Main programs.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    waTreeDisplay-tlevel = '2'.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-text2 = &amp;lt;waProgram&amp;gt;-progName.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor2    = 1.&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;    waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor3    = 1.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;    concatenate `Program: ` &amp;lt;waProgram&amp;gt;-programTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;    append waTreeDisplay to iTreeDisplay.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Screens.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waProgram&amp;gt;-iScreenFlow assigning &amp;lt;waScreen&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = '3'.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 = &amp;lt;waScreen&amp;gt;-screen.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 6.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 6.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text3 = 'Screen'.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  fill in the tree with message information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    sort &amp;lt;waProgram&amp;gt;-iMessages[] ascending by arbgb.&lt;/P&gt;&lt;P&gt;    loop at &amp;lt;waProgram&amp;gt;-iMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;      at new arbgb.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text2 = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor2    = 5.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor3    = 5.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select the message class text if we do not have it already&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if &amp;lt;waMessage&amp;gt;-sText is initial.&lt;/P&gt;&lt;P&gt;          select single stext from t100a&lt;/P&gt;&lt;P&gt;                              into &amp;lt;waMessage&amp;gt;-stext&lt;/P&gt;&lt;P&gt;                              where arbgb = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text3 = &amp;lt;waMessage&amp;gt;-sText.&lt;/P&gt;&lt;P&gt;        concatenate `Message class: `  waTreeDisplay-text3 into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;        append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;      endat.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Fill in the tree with include information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waProgram&amp;gt;-iIncludes assigning &amp;lt;waInclude&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 =  &amp;lt;waInclude&amp;gt;-includeName.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 4.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 4.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Include:   ` &amp;lt;waInclude&amp;gt;-includeTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  fill in the tree with dictionary information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waProgram&amp;gt;-iDictStruct assigning &amp;lt;waDictionary&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 =  &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Dictionary:    ` &amp;lt;waDictionary&amp;gt;-tableTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Function Modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at iLocFunctions assigning &amp;lt;wafunction&amp;gt; where programLinkName = &amp;lt;waProgram&amp;gt;-progname.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 = &amp;lt;wafunction&amp;gt;-functionName.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 7.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 7.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Function:      ` &amp;lt;wafunction&amp;gt;-functionName into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Fill in the tree with include information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      loop at &amp;lt;waFunction&amp;gt;-iIncludes assigning &amp;lt;waInclude&amp;gt;.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlevel = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text2 =  &amp;lt;waInclude&amp;gt;-includeName.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor2    = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor3    = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;        concatenate `Include:       ` &amp;lt;waInclude&amp;gt;-includeTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;        append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    fill in the tree with dictionary information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      loop at &amp;lt;waFunction&amp;gt;-iDictStruct assigning &amp;lt;waDictionary&amp;gt;.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlevel = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text2 =  &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor2    = 3.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor3    = 3.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;        concatenate `Dictionary:    ` &amp;lt;wadictionary&amp;gt;-tableTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;        append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    fill in the tree with message information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      sort &amp;lt;waFunction&amp;gt;-iMessages[] ascending by arbgb.&lt;/P&gt;&lt;P&gt;      loop at &amp;lt;waFunction&amp;gt;-iMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;        at new arbgb.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tlevel = 4.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-text2 = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tcolor2    = 5.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tcolor3    = 5.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Select the message class text if we do not have it already&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          if &amp;lt;waMessage&amp;gt;-sText is initial.&lt;/P&gt;&lt;P&gt;            select single stext from t100a&lt;/P&gt;&lt;P&gt;                                into &amp;lt;waMessage&amp;gt;-stext&lt;/P&gt;&lt;P&gt;                                where arbgb = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          waTreeDisplay-text3 = &amp;lt;waMessage&amp;gt;-sText.&lt;/P&gt;&lt;P&gt;          concatenate `Message class:  `  waTreeDisplay-text3 into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;          append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;        endat.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                           "fillTreeNodePrograms&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; fillTreeNodeClasses&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form fillTreeNodeClasses using iLocClasses like iClasses[]&lt;/P&gt;&lt;P&gt;                               iLocFunctions like iFunctions[]&lt;/P&gt;&lt;P&gt;                               iLocTreeDisplay like iTreeDisplay[]&lt;/P&gt;&lt;P&gt;                               value(runTime).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: tableLines type i.&lt;/P&gt;&lt;P&gt;data: waTreeDisplay like sNodeText.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waClass&amp;gt; type tClass.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waMethod&amp;gt; type tMethod.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waFunction&amp;gt; type tFunction.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waDictionary&amp;gt; type tDictTable.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waInclude&amp;gt; type tInclude.&lt;/P&gt;&lt;P&gt;field-symbols: &amp;lt;waMessage&amp;gt; type tMessage.&lt;/P&gt;&lt;P&gt;data: tableLinesString type string.&lt;/P&gt;&lt;P&gt;data: runtimeChar(10).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  tableLines = lines( iLocClasses ).&lt;/P&gt;&lt;P&gt;  tableLinesString = tableLines.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if tableLines = 1.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString ` class downloaded` into waTreeDisplay-text2.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    concatenate tableLinesString ` classes downloaded` into waTreeDisplay-text2.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  write runTime to runTimeChar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  concatenate waTreeDisplay-text2 ` - runtime ` runTimeChar into waTreeDisplay-text2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;include header display record.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  waTreeDisplay-tlevel = '1'.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tlength2  = 60.&lt;/P&gt;&lt;P&gt;  waTreeDisplay-tcolor2    = 1.&lt;/P&gt;&lt;P&gt;  append waTreeDisplay to iTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  loop at iLocClasses assigning &amp;lt;waClass&amp;gt;.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Main Class.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    waTreeDisplay-tlevel = '2'.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-text2 = &amp;lt;waClass&amp;gt;-clsName.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor2    = 1.&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;    waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tcolor3    = 1.&lt;/P&gt;&lt;P&gt;    waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;    concatenate `Class:    ` &amp;lt;waClass&amp;gt;-descript into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;    append waTreeDisplay to iTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  fill in the tree with method information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waClass&amp;gt;-iMethods[] assigning &amp;lt;waMethod&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 =  &amp;lt;waMethod&amp;gt;-cmpname.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 2.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 2.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Method:   ` &amp;lt;waMethod&amp;gt;-descript into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  fill in the tree with message information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    sort &amp;lt;waClass&amp;gt;-iMessages[] ascending by arbgb.&lt;/P&gt;&lt;P&gt;    loop at &amp;lt;waClass&amp;gt;-iMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;      at new arbgb.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text2 = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor2    = 5.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor3    = 5.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Select the message class text if we do not have it already&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if &amp;lt;waMessage&amp;gt;-sText is initial.&lt;/P&gt;&lt;P&gt;          select single stext from t100a&lt;/P&gt;&lt;P&gt;                              into &amp;lt;waMessage&amp;gt;-stext&lt;/P&gt;&lt;P&gt;                              where arbgb = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text3 = &amp;lt;waMessage&amp;gt;-sText.&lt;/P&gt;&lt;P&gt;        concatenate `Message class: `  waTreeDisplay-text3 into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;        append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;      endat.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  fill in the tree with dictionary information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at &amp;lt;waClass&amp;gt;-iDictStruct assigning &amp;lt;waDictionary&amp;gt;.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 =  &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Dictionary:    ` &amp;lt;waDictionary&amp;gt;-tableTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Function Modules&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    loop at iLocFunctions assigning &amp;lt;wafunction&amp;gt; where programLinkName = &amp;lt;waClass&amp;gt;-clsname.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlevel = 3.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-text2 = &amp;lt;wafunction&amp;gt;-functionName.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor2    = 7.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tcolor3    = 7.&lt;/P&gt;&lt;P&gt;      waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;      concatenate `Function:      ` &amp;lt;wafunction&amp;gt;-functionName into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;      append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Fill in the tree with include information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      loop at &amp;lt;waFunction&amp;gt;-iIncludes assigning &amp;lt;waInclude&amp;gt;.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlevel = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text2 =  &amp;lt;waInclude&amp;gt;-includeName.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor2    = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor3    = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;        concatenate `Include:       ` &amp;lt;waInclude&amp;gt;-includeTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;        append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    fill in the tree with dictionary information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      loop at &amp;lt;waFunction&amp;gt;-iDictStruct assigning &amp;lt;waDictionary&amp;gt;.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlevel = 4.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-text2 =  &amp;lt;waDictionary&amp;gt;-tablename.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor2    = 3.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tcolor3    = 3.&lt;/P&gt;&lt;P&gt;        waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;        concatenate `Dictionary:    ` &amp;lt;wadictionary&amp;gt;-tableTitle into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;        append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    fill in the tree with message information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      sort &amp;lt;waFunction&amp;gt;-iMessages[] ascending by arbgb.&lt;/P&gt;&lt;P&gt;      loop at &amp;lt;waFunction&amp;gt;-iMessages assigning &amp;lt;waMessage&amp;gt;.&lt;/P&gt;&lt;P&gt;        at new arbgb.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tlevel = 4.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-text2 = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tcolor2    = 5.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tlength3   = 80.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tcolor3    = 5.&lt;/P&gt;&lt;P&gt;          waTreeDisplay-tpos3      = 60.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Select the message class text if we do not have it already&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          if &amp;lt;waMessage&amp;gt;-sText is initial.&lt;/P&gt;&lt;P&gt;            select single stext from t100a&lt;/P&gt;&lt;P&gt;                                into &amp;lt;waMessage&amp;gt;-stext&lt;/P&gt;&lt;P&gt;                                where arbgb = &amp;lt;waMessage&amp;gt;-arbgb.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          waTreeDisplay-text3 = &amp;lt;waMessage&amp;gt;-sText.&lt;/P&gt;&lt;P&gt;          concatenate `Message class:  `  waTreeDisplay-text3 into waTreeDisplay-text3.&lt;/P&gt;&lt;P&gt;          append waTreeDisplay to iLocTreeDisplay.&lt;/P&gt;&lt;P&gt;        endat.&lt;/P&gt;&lt;P&gt;      endloop.&lt;/P&gt;&lt;P&gt;    endloop.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.                                                                           "fillTreeNodeClasses&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;displayTree...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="--------------------------------------------------------------------------------------------------" /&gt;&lt;P&gt;form displayTree using iLocTreeDisplay like iTreeDisplay[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: waTreeDisplay type 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            = iTreeDisplay&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 iLoctreeDisplay into waTreeDisplay 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   = waTreeDisplay-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.                                                                                "displayTree&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; topOfPage... 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 topOfPage.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 07:36:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364485#M180494</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T07:36:45Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364486#M180495</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE&gt;&lt;CODE&gt;

&amp;lt;a class="jive_macro jive_macro_message" href="" __jive_macro_name="message" modifiedtitle="true" __default_attr="285754"&amp;gt;&amp;lt;/a&amp;gt;

&amp;lt;a class="jive_macro jive_macro_message" href="" __jive_macro_name="message" modifiedtitle="true" __default_attr="1371355"&amp;gt;&amp;lt;/a&amp;gt;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 07:45:12 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364486#M180495</guid>
      <dc:creator>rahulkavuri</dc:creator>
      <dc:date>2006-05-11T07:45:12Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364487#M180496</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi thomas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  go to that particular program/FM in display mode and in menu&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;utilities&lt;DEL&gt;&amp;gt;more utilities&lt;/DEL&gt;&amp;gt;upload/download&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;using this u can donload first and then upload to other server/client&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 07:50:39 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364487#M180496</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T07:50:39Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364488#M180497</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hai Thomas&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try with the following Code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; report zrich_0001&lt;/P&gt;&lt;P&gt;       no standard page heading&lt;/P&gt;&lt;P&gt;       line-size 300.&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; data: begin of s occurs 0,&lt;/P&gt;&lt;P&gt;       txt(300) type c,&lt;/P&gt;&lt;P&gt;       end of s.&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; clear s. refresh s.&lt;/P&gt;&lt;P&gt; read report 'z_your_program_name' into s.           "Get source into table S&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; call function 'GUI_DOWNLOAD'&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;           filename = 'C:\program.txt'&lt;/P&gt;&lt;P&gt;      tables&lt;/P&gt;&lt;P&gt;           data_tab = s.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks   &amp;amp; Regards&lt;/P&gt;&lt;P&gt;Sreenivasulu P&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 07:52:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364488#M180497</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T07:52:52Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364489#M180498</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hai Thomas&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try with the following Code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; report zrich_0001&lt;/P&gt;&lt;P&gt;       no standard page heading&lt;/P&gt;&lt;P&gt;       line-size 300.&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; data: begin of s occurs 0,&lt;/P&gt;&lt;P&gt;       txt(300) type c,&lt;/P&gt;&lt;P&gt;       end of s.&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; clear s. refresh s.&lt;/P&gt;&lt;P&gt; read report 'z_your_program_name' into s.           "Get source into table S&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; call function 'GUI_DOWNLOAD'&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;           filename = 'C:\program.txt'&lt;/P&gt;&lt;P&gt;      tables&lt;/P&gt;&lt;P&gt;           data_tab = s.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks   &amp;amp; Regards&lt;/P&gt;&lt;P&gt;Sreenivasulu P&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 07:56:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364489#M180498</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T07:56:25Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364490#M180499</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hii&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try this&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; data: begin of itab occurs 0,&lt;/P&gt;&lt;P&gt;       abc(20) type c,&lt;/P&gt;&lt;P&gt;       end of itab.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; clear itab.&lt;/P&gt;&lt;P&gt; refresh itab.&lt;/P&gt;&lt;P&gt; read report 'Z_YOURPROGRAM' into ITAB.          &lt;/P&gt;&lt;P&gt; "This transfers  source into table itab&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; call function 'GUI_DOWNLOAD'&lt;/P&gt;&lt;P&gt;      exporting&lt;/P&gt;&lt;P&gt;           filename = 'C:\sourcecode.txt'&lt;/P&gt;&lt;P&gt;      tables&lt;/P&gt;&lt;P&gt;           data_tab = itab.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;otherwise&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in SE37 choose &amp;lt;b&amp;gt;"save as local copy"&amp;lt;/b&amp;gt; clicking &lt;/P&gt;&lt;P&gt;anywhere&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;hope this helps&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&amp;amp;Regards&lt;/P&gt;&lt;P&gt;Naresh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 11 May 2006 09:40:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364490#M180499</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T09:40:36Z</dc:date>
    </item>
    <item>
      <title>Re: Save source code to a file</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364491#M180500</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;did you check this program &amp;lt;b&amp;gt;RSUPDOWN&amp;lt;/b&amp;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>Thu, 11 May 2006 09:52:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/save-source-code-to-a-file/m-p/1364491#M180500</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-05-11T09:52:31Z</dc:date>
    </item>
  </channel>
</rss>

