<?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 Download Modulepool program in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-modulepool-program/m-p/3013549#M712145</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can we download module pool at one tine or we have to  download each &amp;amp; every screen individually.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How can we dowload the module pool progam at one time.Plz guide.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vibhuti&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 07 Nov 2007 12:20:22 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-11-07T12:20:22Z</dc:date>
    <item>
      <title>Download Modulepool program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-modulepool-program/m-p/3013549#M712145</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can we download module pool at one tine or we have to  download each &amp;amp; every screen individually.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How can we dowload the module pool progam at one time.Plz guide.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vibhuti&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Nov 2007 12:20:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-modulepool-program/m-p/3013549#M712145</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-07T12:20:22Z</dc:date>
    </item>
    <item>
      <title>Re: Download Modulepool program</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/download-modulepool-program/m-p/3013550#M712146</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vibhuti,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/download-and-upload-your-abap-program.htm" target="test_blank"&gt;http://www.sap-img.com/abap/download-and-upload-your-abap-program.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;visit &lt;A href="http://www.dalestech.com" target="test_blank"&gt;http://www.dalestech.com&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can check these links also.&lt;/P&gt;&lt;P&gt;&lt;A href="http://sap.ittoolbox.com/code/archives.asp?d=1623&amp;amp;a=s&amp;amp;i=10" target="test_blank"&gt;http://sap.ittoolbox.com/code/archives.asp?d=1623&amp;amp;a=s&amp;amp;i=10&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.members.tripod.com/abap4/Upload_and_Download_ABAP_Source_Code.html" target="test_blank"&gt;http://www.members.tripod.com/abap4/Upload_and_Download_ABAP_Source_Code.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.geocities.com/rmtiwari/Resources/Utilities/WebViewer.html" target="test_blank"&gt;http://www.geocities.com/rmtiwari/Resources/Utilities/WebViewer.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://sap.ittoolbox.com/code/archives.asp?d=3333&amp;amp;a=s&amp;amp;i=10" target="test_blank"&gt;http://sap.ittoolbox.com/code/archives.asp?d=3333&amp;amp;a=s&amp;amp;i=10&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/download-and-upload-your-abap-program.htm" target="test_blank"&gt;http://www.sap-img.com/abap/download-and-upload-your-abap-program.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it is helpful.&lt;/P&gt;&lt;P&gt;Manish&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Download program and Classes.Download program and Classes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ZREPTRAN_46C appears to allow downloading of classes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.xaption.de/downloads/developer/index.php?Xaption=cd4ab5a11a5c26d34de38ed675bb6541" target="test_blank"&gt;http://www.xaption.de/downloads/developer/index.php?Xaption=cd4ab5a11a5c26d34de38ed675bb6541&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://wiki.ittoolbox.com/index.php/Code:Download_and_upload_OO_ABAP_class_in_XML_format" target="test_blank"&gt;http://wiki.ittoolbox.com/index.php/Code:Download_and_upload_OO_ABAP_class_in_XML_format&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Refer the code below. This should solve the purpose.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Report  ZZJIMHX                                                     *&lt;/P&gt;&lt;P&gt;*&amp;amp;                                                                     *&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;                                                                     *&lt;/P&gt;&lt;P&gt;*&amp;amp;                                                                     *&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;PROGRAM ZZJIMHXX&lt;/P&gt;&lt;P&gt;       LINE-SIZE 132&lt;/P&gt;&lt;P&gt;       LINE-COUNT 62&lt;/P&gt;&lt;P&gt;       NO STANDARD PAGE HEADING.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  This program up / downloads from / to a local dataset&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  all the components of an ABAP - i.e TEXTS, the entire CUA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  including statuses and menus, DYNPROS and source code.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Program documentation and variants are not handled.&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;  INCLUDED programs are automatically handled both on upload&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  or download. INCLUDE selection can be excluded or generic&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  e.g only handle INCLUDES starting with ZIN*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  INCLUDES within INCLUDES alos handled.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The only restriction is on UPLOAD the INCLUDED programs must come&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  from the same directory as the main program.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  On Download of course the ABAP must exist in the library.&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;     Note for LINUX and BATCH users&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 was originally designed as a one off tool for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  getting ABAPS etc from a SAP R2 (IBM MVS mainframe system) into&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  an R3 test system minimising the need for a large amount of&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  mainframe sysprogs (anybody remember what they were !!) time&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  and support to say nothing of access problems from TSO /JES2 / &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SAP R2. At that time network connections were patchy and the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  transport systems largely incompatable and not very reliable.&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;  This program was originally designed as a one off tool for&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Must run on Windows front end ---- If you are running SAP with&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  LINUX on your work station you will have to change the WS_UPLOAD&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  and WS_DOWNLOAD functions to reflect the Linux file system. The&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  contents of the data sets themseleves do not need to be changed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Program can easily be modified to run in batch and store&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the data on a UNIX host. Change the WS_UPLOAD and WS_DOWNLOAD&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  to read from and write to UNIX data sets (OPEN FILE etc).&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  You will also need to modify the parts of the program that get&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  the DOS directory and display the Windows file paths.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  The actual abap data sets do not need to be changed.&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;Rel 4.0   names can now be up to 40 bytes long&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Dynpros and CUA have changed from rel 3.1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          Tabstrips now loaded and unloaded in dynpros&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;   Please note restriction on 4.6 systems for users who&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   have ABAP names which include '/'s in their names.&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;Rel 4.6b, 4.6c Abap names can include the '/' in their names&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; e.g /CUST1/CUST2/ORDER&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 causes problems when storing to a local file.&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; a solution is to change the name to %CUST1%CUST2%ORDER i.e / will&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; be changed to %. On upload the % should be changed back to / &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; again.    This change still needs to be implemented.&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; If you don't use the / in the abap name then this is not a problem.&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;If file to be uploaded is in rel 3 format then names are only 8&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;bytes long.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  program uses 3 datasets per abap&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     1) abapname.eee     source, dynpr logic, texts, CUA stuff&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     2) abapname.hhh     dynpr header&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     3) abapname.fff     dynpro fields.&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; because of varying lengths and contents 3 data sets are used. The&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; complexity of combining all these to 1 data set would make the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; program far too complex.&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;  NOTE: This version of the program can only be used on&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        release 4.0 or higher. Once an ABAP has been converted&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        to rel 4.0 it cannot be converted back to rel 3.0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        on a release 3/3.1 system. Release 4 CUA tables&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        are different.  Use release 3 version of this program&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       for releases 3.0 and 3.1. Available on SAPFANS website.&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;  Note that data to be uploaded must have been previously downloaded&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  by this program (any version since rel 2.0) - except for Initial&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Load -- see end of these comments.&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;         Dynpros and CUA statuses have changed since rel 3.1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   This program will handle rel 3.1 format on upload but will&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   download in rel 4.0 format. To upload 3.1 format specify an 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   in the rel3 parameter.&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;   If you have downloaded components in rel 4.0 format and you&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   want to re-load to a 3.1 system  you will have to load&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   the source via standard upload and re-create dynpros and the CUA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   manually.&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;   As names can now be longer than 8 characters you can only&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   use this program if the SAP front end (SAPGUI) supports&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   long file names (WIN 95/98 or WIN NT). Windows 3.x will not&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   work as the underlying DOS system cannot handle long file names.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      UPLOAD function and DOS directory.&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; When an ABAP is selected for UPLOAD then the DOS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; directory is read into a table. A file called ABAP.BAT is created,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; and down loaded to the 'C' drive and executed.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; This file executes a DOS DIR command and pipes the output&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; into a dataset which is then uploaded into an internal&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; table on SAP.&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; Note on running DOS commands from ABAP&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; The first time this procedure is executed you will see a DOS window&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; which you will have to close manually. To get round this&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; use windows explorer to select the file ABAP.BAT and then&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; right mouse click on the file name. Select the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; properties window. From this click the CLOSE on EXIT box. This&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; will then automatically close the DOS function after it has&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; executed. (Windows restriction).&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; The DOS function has not been tested using Windows 2000 so&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; it might not work. OK on W95,W98,WME and Windows NT (No Thanks)&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; If INCLUDE programs are wanted on UPLOAD only the specified&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; directory is searched.&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; Instead of entering path name manually you can click on&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; the path parameter. Because of Windows restriction you will&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; have to select ANY file in the relevant directory.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; The path will then be copied on to the selection screen.&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; To do still : Merge 3 files to one and compress output to .ZIP file&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               fix 4.5 4.6 problem of abaps containing '/' in the name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               possibility to automatically up / download referenced&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               function modules with selection criteria like INCLUDES&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;To load the ist time into a system.&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;Create program with ABAP editor and Upload the .EEE file.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete ist line  (????SRCE) in the ABAP EDITOR --NOT THE DISK FILE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete all the source from the line that starts ????TEXT (towards&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;the end file) till the end so the last line in your source is ENDFORM.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DO NOT ALTER THE DISK FILE. DO THESE CHANGES IN THE ABAP EDITOR.&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;Save file and execute&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;Use following parameters (Note the ist time you won't get proper&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text on the selection screen).&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; Function      U&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; Path          full dos path containing source e.g c:\abaps\&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               NOTE YOU MUST ENTER THE FINAL \ as above.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; REPID         the program name. e.g ZZJIMHXX&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               note that on the DISK you will see 3 files&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               ZZJIMHXX.EEE, ZZJIMHXX.FFF, ZZJIMHXX.HHH&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               just use the name before the dos qualifier - the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               program will do the rest&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;ignore other parameters&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The program will then load itself with all the texts etc.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;It should now be ready for use.&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;  Macros&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DEFINE DEFINE_TABLE.&lt;/P&gt;&lt;P&gt;  DATA: &amp;amp;1 LIKE &amp;amp;2 OCCURS &amp;amp;3 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DEFINE CLS.&lt;/P&gt;&lt;P&gt;  REFRESH &amp;amp;1.&lt;/P&gt;&lt;P&gt;  CLEAR &amp;amp;1.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DEFINE INIT.&lt;/P&gt;&lt;P&gt;  IF &amp;amp;1 NE SPACE.&lt;/P&gt;&lt;P&gt;    SEARCH &amp;amp;1 FOR '. .'.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;      WRITE '*' TO &amp;amp;1+SY-FDPOS(1).&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    TRANSLATE &amp;amp;1 USING '*%'.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE '%' TO &amp;amp;1.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;END-OF-DEFINITION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;end of macros&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     SAP standard tables                                        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;TABLES: D020S,                         "Dynpro header&lt;/P&gt;&lt;P&gt;        D020T,                         "Dynpro title&lt;/P&gt;&lt;P&gt;        D021T,                         "Screen field keyword texts&lt;/P&gt;&lt;P&gt;        TRDIR,                         "Attribute table&lt;/P&gt;&lt;P&gt;        TADIR,                         "Dev. class etc.&lt;/P&gt;&lt;P&gt;        EUDB,                          "CUA data&lt;/P&gt;&lt;P&gt;        TSTC,                          "transaction data&lt;/P&gt;&lt;P&gt;        TITLE,                         "CUA titles&lt;/P&gt;&lt;P&gt;        RSMPTEXTS.                     "Function texts (rel 4.0)&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Work tables to hold ABAP source etc, and dynpro            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     contents.                                                  */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF H.                      "Header&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D020S.&lt;/P&gt;&lt;P&gt;DATA: END OF H.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF H1 OCCURS 10,           "Header&lt;/P&gt;&lt;P&gt;      NAME(40)               TYPE C,                        "rel 4&lt;/P&gt;&lt;P&gt;      NUMBER(4)              TYPE N.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D020S.&lt;/P&gt;&lt;P&gt;DATA: END OF H1.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF H2 OCCURS 0,            "Rel 3  dynp. header&lt;/P&gt;&lt;P&gt;        CNAME(8)   TYPE C,&lt;/P&gt;&lt;P&gt;        CNUM(4)    TYPE C,&lt;/P&gt;&lt;P&gt;        NNAME(8)   TYPE C,&lt;/P&gt;&lt;P&gt;        NNUM(4)    TYPE C,&lt;/P&gt;&lt;P&gt;        FILL(51)   TYPE C,&lt;/P&gt;&lt;P&gt;        CDAT(6)    TYPE C,&lt;/P&gt;&lt;P&gt;        CTIM(6)    TYPE C,&lt;/P&gt;&lt;P&gt;      END OF H2.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF F OCCURS 250.           "Dynpro Fields&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D021S.&lt;/P&gt;&lt;P&gt;DATA: END OF F.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF F1 OCCURS 500,          "Dynpro Fields&lt;/P&gt;&lt;P&gt;      NAME(40)               TYPE C,                        "rel 4&lt;/P&gt;&lt;P&gt;      NUMBER(4)              TYPE N.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D021S.&lt;/P&gt;&lt;P&gt;DATA: END OF F1.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF OLD_F1 OCCURS 0,        "Dynpro Fields (rel 3)&lt;/P&gt;&lt;P&gt;      NAME(8)    TYPE C,&lt;/P&gt;&lt;P&gt;      NUMBER(4)     TYPE C.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D021SE_OLD.&lt;/P&gt;&lt;P&gt;DATA: END OF OLD_F1.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF F2 OCCURS 0,            "Dynpro Fields (rel 3)&lt;/P&gt;&lt;P&gt;      TFIL(284)  TYPE C,&lt;/P&gt;&lt;P&gt;      END OF F2.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF M OCCURS 3.             "Match codes (if any)&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D023S.&lt;/P&gt;&lt;P&gt;DATA: END OF M.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF E OCCURS 0.             "Dynpro Logic&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D022S.&lt;/P&gt;&lt;P&gt;DATA: END OF E.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF E1 OCCURS 0,            "Dynpro Logic&lt;/P&gt;&lt;P&gt;      NAME(40)               TYPE C,                        "rel 4&lt;/P&gt;&lt;P&gt;      NUMBER(4)              TYPE N.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D022S.&lt;/P&gt;&lt;P&gt;DATA: END OF E1.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF T   OCCURS 0,           "prog name and dynpro nrs&lt;/P&gt;&lt;P&gt;      NAME(40)     TYPE C,                                  "rel 4&lt;/P&gt;&lt;P&gt;      NUMBER(4)    TYPE N,&lt;/P&gt;&lt;P&gt; END OF T.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF R   OCCURS 56,          "prog name and language&lt;/P&gt;&lt;P&gt;      NAME(40)     TYPE C,                                  "rel 4&lt;/P&gt;&lt;P&gt;      LANGUAGE(1)  TYPE C,&lt;/P&gt;&lt;P&gt;   END OF R.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF S OCCURS 3000,&lt;/P&gt;&lt;P&gt;      TXT(180)               TYPE C,   "rel 4   was 132&lt;/P&gt;&lt;P&gt;      END OF S.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF R1 OCCURS 50,           "for include programs&lt;/P&gt;&lt;P&gt;        NAME(40)             TYPE C,                        "rel 4&lt;/P&gt;&lt;P&gt;        INSTANCE(3)          TYPE P,&lt;/P&gt;&lt;P&gt;      END OF R1.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF S1 OCCURS 3000,&lt;/P&gt;&lt;P&gt;      TXT(180)               TYPE C,   "   rel 4  was 132&lt;/P&gt;&lt;P&gt;      END OF S1.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;*DATA: BEGIN OF U OCCURS 100,           "Text elements&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     TXT(180)               TYPE C,   " rel 4   was 132&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     END OF U.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: U LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF DIR.                    "ABAP Attributes&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE TRDIR.&lt;/P&gt;&lt;P&gt;DATA: END OF DIR.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF DTXT.                   "Dynpro field keyword texts&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE D021T.&lt;/P&gt;&lt;P&gt;DATA: END OF DTXT.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     This data contains all the components of the               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     CUA such as menus, statuses, Pfkeys                        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     As from rel 4.5 Tabstrips are automatically copied as well */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     The rel3 parameter must be set however to load the         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     correct version of the CUA tables if uploading rel 3       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     data to a rel 4 system.                                    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Rel 4.0B can  convert 3.1 and earlier CUA's                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     This could change later however.                           */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;CUA Tables.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Key of CUA tables in EUDB data set. Name is len 40 in rel 4.0&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF EU_KEY.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_KEY.&lt;/P&gt;&lt;P&gt;DATA END OF EU_KEY.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF STA OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_STAT.                       " rel 4&lt;/P&gt;&lt;P&gt;DATA END OF STA.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF FUN OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_FUNT.                       "rel 4&lt;/P&gt;&lt;P&gt;DATA END OF FUN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Menus&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF MEN OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_MEN.   "rel 4.0&lt;/P&gt;&lt;P&gt;DATA END OF MEN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Menus (texts)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF MTX OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_MNLT.  "rel 4.0&lt;/P&gt;&lt;P&gt;DATA END OF MTX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Action Bar&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF ACT OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_ACT.   "rel 4.0&lt;/P&gt;&lt;P&gt;DATA END OF ACT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Push Buttons&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF BUT OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_BUT.   "rel 4.0&lt;/P&gt;&lt;P&gt;DATA END OF BUT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    PF-Keys&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF PFK OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_PFK.   "rel 4.0&lt;/P&gt;&lt;P&gt;DATA END OF PFK.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Function sets&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF SET OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_STAF.  "rel 4.0&lt;/P&gt;&lt;P&gt;DATA END OF SET.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Documentation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF DOC OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_ATRT.  "rel 4.0&lt;/P&gt;&lt;P&gt;DATA END OF DOC.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Title codes with text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF TIT OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPE_TITT.  "rel 4.0&lt;/P&gt;&lt;P&gt;DATA: END OF TIT.&lt;/P&gt;&lt;P&gt;DATA BEGIN OF FTX OCCURS 0.            "rel 4.0&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSMPTEXTS.&lt;/P&gt;&lt;P&gt;DATA END OF FTX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       rel 3.1 CUA components.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Status&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_STA OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_GEN.   " rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_STA.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Functions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_FUN OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_FUN.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_FUN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Menus&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_MEN OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_MEN.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_MEN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Menus (texts)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_MTX OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_TXM.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_MTX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Action Bar&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_ACT OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_ACT.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_ACT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Push Buttons&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_BUT OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_BUT.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_BUT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    PF-Keys&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_PFK OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_PFK.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_PFK.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Function sets&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_SET OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_SET.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_SET.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Documentation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF OLD_DOC OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_ETM.   "rel 3.1&lt;/P&gt;&lt;P&gt;DATA END OF OLD_DOC.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Title codes with text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: BEGIN OF OLD_TIT OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE TITLE.       "rel 3.1&lt;/P&gt;&lt;P&gt;DATA: END OF OLD_TIT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;dynamic function text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF FDN OCCURS 1.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_FDYN.  "not req for rel 4.&lt;/P&gt;&lt;P&gt;DATA END OF FDN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Icons&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF FIN OCCURS 1.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_ICON.  "not req for rel 4&lt;/P&gt;&lt;P&gt;DATA END OF FIN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;dynamic menu texts&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF MDN OCCURS 1.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_MDYN.  "not req for rel 4.&lt;/P&gt;&lt;P&gt;DATA END OF MDN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Symbol list&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF SYM OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_SYMB.&lt;/P&gt;&lt;P&gt;DATA END OF SYM.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Status Short text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF STX OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_CTX.&lt;/P&gt;&lt;P&gt;DATA END OF STX.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Attributes for function key settings (menu bars)  Rel 3.0&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF ATT OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_HAT.&lt;/P&gt;&lt;P&gt;DATA END OF ATT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Include-Menus&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF INC OCCURS 3.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_INC.&lt;/P&gt;&lt;P&gt;DATA END OF INC.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Last used numbers&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA BEGIN OF LAST.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE RSEU1_LST.&lt;/P&gt;&lt;P&gt;DATA END OF LAST.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  data for call transaction (SE41 to re-generate the CUA)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF T_BDC_TAB OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE BDCDATA.     "BDC data&lt;/P&gt;&lt;P&gt;DATA: END OF T_BDC_TAB.&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF T_MESSTAB OCCURS 0.&lt;/P&gt;&lt;P&gt;        INCLUDE STRUCTURE BDCDATA.&lt;/P&gt;&lt;P&gt;DATA: END OF T_MESSTAB.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Program data                                               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;DATA: NUMBER(4)               TYPE N,&lt;/P&gt;&lt;P&gt;      OLDNUM(4)               TYPE N,&lt;/P&gt;&lt;P&gt;      FILESIZE                TYPE I,&lt;/P&gt;&lt;P&gt;      NR_OF_BYTES             TYPE I,&lt;/P&gt;&lt;P&gt;      I(3)                    TYPE P,&lt;/P&gt;&lt;P&gt;      IX(3)                   TYPE P,&lt;/P&gt;&lt;P&gt;      J(3)                    TYPE P,&lt;/P&gt;&lt;P&gt;      L(3)                    TYPE P,&lt;/P&gt;&lt;P&gt;      CUA-FLAG(1)             TYPE C,&lt;/P&gt;&lt;P&gt;      CUA_RETURN(10)          TYPE C,&lt;/P&gt;&lt;P&gt;      DYNPRO_MESSAGE(160)     TYPE C,&lt;/P&gt;&lt;P&gt;      DYNPRO_LINE             TYPE P,&lt;/P&gt;&lt;P&gt;      DYNPRO_WORD(30)         TYPE C,&lt;/P&gt;&lt;P&gt;      NUM(3)                  TYPE N,&lt;/P&gt;&lt;P&gt;      DYNNAME(44)             TYPE C,&lt;/P&gt;&lt;P&gt;      FN1(128)                TYPE C,&lt;/P&gt;&lt;P&gt;      FN2(128)                TYPE C,&lt;/P&gt;&lt;P&gt;      FN3(128)                TYPE C,&lt;/P&gt;&lt;P&gt;      W_ITERATE(1)            TYPE C,&lt;/P&gt;&lt;P&gt;      MAIN(1)                 TYPE C,&lt;/P&gt;&lt;P&gt;      FUNC(1)                 TYPE C,&lt;/P&gt;&lt;P&gt;      OLDNAME(40)             TYPE C,&lt;/P&gt;&lt;P&gt;      OLD-FUNC(8)             TYPE C,&lt;/P&gt;&lt;P&gt;      NEW-FUNC(8)             TYPE C,&lt;/P&gt;&lt;P&gt;      FOUND(1)                TYPE C,&lt;/P&gt;&lt;P&gt;      LANGUAGE                LIKE SY-LANGU,&lt;/P&gt;&lt;P&gt;      FIRST-TIME(1)           TYPE C VALUE 'Y',&lt;/P&gt;&lt;P&gt;      OK-CODE(5)              TYPE C,&lt;/P&gt;&lt;P&gt;      NAME(40)                TYPE C,                       "rel 4&lt;/P&gt;&lt;P&gt;      TXLINE(70)              TYPE C,&lt;/P&gt;&lt;P&gt;      LINE(132)               TYPE C.&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;      UL_FILE(128)          TYPE C,&lt;/P&gt;&lt;P&gt;      DL_FILE(128)          TYPE C,&lt;/P&gt;&lt;P&gt;      DOSLINE(72)           TYPE C.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: BEGIN OF DOSDIR OCCURS 0,&lt;/P&gt;&lt;P&gt;        TEXT(72),&lt;/P&gt;&lt;P&gt;      END OF DOSDIR.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_PROG OCCURS 0,&lt;/P&gt;&lt;P&gt;      NAME(40),&lt;/P&gt;&lt;P&gt;      END OF I_PROG.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_PROGT OCCURS 0,&lt;/P&gt;&lt;P&gt;      NAME(40),&lt;/P&gt;&lt;P&gt;      END OF I_PROGT.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_INCLUDE OCCURS 0,&lt;/P&gt;&lt;P&gt;      NAME(40),&lt;/P&gt;&lt;P&gt;      HANDLED(1)   TYPE C,&lt;/P&gt;&lt;P&gt;      END OF I_INCLUDE.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_INCL OCCURS 0,&lt;/P&gt;&lt;P&gt;      NAME(40),&lt;/P&gt;&lt;P&gt;      END OF I_INCL.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: BUFFER(1024).&lt;/P&gt;&lt;P&gt;DATA: WINSYS(3).&lt;/P&gt;&lt;P&gt;DATA: GLOBAL_FILEMASK_MASK(20), GLOBAL_FILEMASK_TEXT(20).&lt;/P&gt;&lt;P&gt;DATA: GLOBAL_FILEMASK_ALL(80).&lt;/P&gt;&lt;P&gt;DATA: T_FILENAME(128),&lt;/P&gt;&lt;P&gt;      TMP_FILENAME(128),&lt;/P&gt;&lt;P&gt;      T_MODE(1),&lt;/P&gt;&lt;P&gt;      FIELDLN     TYPE I.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DEFINE_TABLE I_DYNPFIELDS DYNPREAD 0.  "dynpro fields to be updated&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: I_FLDS LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS: &amp;lt;F&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Parameters                                                 */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN SKIP 1.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS REPID FOR TRDIR-NAME OBLIGATORY .&lt;/P&gt;&lt;P&gt;PARAMETERS:&lt;/P&gt;&lt;P&gt;      FUNCTION(1)       TYPE C OBLIGATORY,  "Function&lt;/P&gt;&lt;P&gt;      DSNAME(40)        TYPE C,        "Data set name&lt;/P&gt;&lt;P&gt;      INCLUDES(1)       TYPE C DEFAULT 'N', "Resolve Includes&lt;/P&gt;&lt;P&gt;      IMASK(40)         TYPE C,        "Include Mask&lt;/P&gt;&lt;P&gt;      CLASS             LIKE TRDIR-CLAS,&lt;/P&gt;&lt;P&gt;      AUTHOR            LIKE TRDIR-CNAM,          "Author&lt;/P&gt;&lt;P&gt;      APPL              LIKE TRDIR-APPL,&lt;/P&gt;&lt;P&gt;      PATH(88)          TYPE C DEFAULT 'A:\',&lt;/P&gt;&lt;P&gt;      REL3(1)           TYPE C.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN SKIP 1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(70) TEXT-004.&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 1(70) TEXT-005.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN SKIP 1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN COMMENT 1(70) TEXT-002.&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 1(70) TEXT-003.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF LINE.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END  OF BLOCK A1.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Check users workstation is running WINDOWS,        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          WINDOWS 95, or WINDOWS NT. OS/2 no good for        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          this application.                                  */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;CALL FUNCTION 'WS_QUERY'&lt;/P&gt;&lt;P&gt;     EXPORTING&lt;/P&gt;&lt;P&gt;          QUERY  = 'WS'&lt;/P&gt;&lt;P&gt;     IMPORTING&lt;/P&gt;&lt;P&gt;          RETURN = WINSYS.&lt;/P&gt;&lt;P&gt;IF WINSYS(2) NE 'WN'.                  "Win 3.X no good either&lt;/P&gt;&lt;P&gt;  WRITE: / 'Windows NT or Windows 95/98 is required'.&lt;/P&gt;&lt;P&gt;  EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Get names of programs to be handled.               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Name can be a single value, many values or ranges  */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          as per standard SELECT-OPTIONS on selection screen */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; On Download read TRDIR and store program names in a table   */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; as per selection options.                                   */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; On upload read the specified directory for all files of     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  type .EEE from specified directory                         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  compare file names with selection criteria                 */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;MOVE FUNCTION TO FUNC.&lt;/P&gt;&lt;P&gt;MOVE 'Y' TO MAIN.&lt;/P&gt;&lt;P&gt;CASE FUNC.&lt;/P&gt;&lt;P&gt;  WHEN 'U'.                            "Upload required&lt;/P&gt;&lt;P&gt;    PERFORM READ_DOS_DIRECTORY.&lt;/P&gt;&lt;P&gt;    PERFORM GET_RANGE_UL.              "Get list of progs to process&lt;/P&gt;&lt;P&gt;  WHEN 'D'.                            "Download required&lt;/P&gt;&lt;P&gt;    PERFORM GET_RANGE_DL.              "Get list of progs to process&lt;/P&gt;&lt;P&gt;  WHEN OTHERS.&lt;/P&gt;&lt;P&gt;    WRITE: / 'Function not performed due to user request'.&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;SORT I_PROG.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM I_PROG.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For download INCLUDE handling can be resolved via function&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;module call.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;All Includes within Includes are also resolved by the function&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;module call.&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;Note that this method does not work if program itself is of type&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;I (it's an include)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;In this case we can still search the source.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;IF FUNC = 'D'.&lt;/P&gt;&lt;P&gt;  IF INCLUDES = 'Y'.&lt;/P&gt;&lt;P&gt;    PERFORM GET_INCLUDES_DL.&lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_INCLUDES_DL.&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;Program list from selection criteria i.e excluding INCLUDES found&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;LOOP AT I_PROG.&lt;/P&gt;&lt;P&gt;  MOVE I_PROG-NAME TO R1-NAME.&lt;/P&gt;&lt;P&gt;  APPEND R1.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE R1 LINES I.&lt;/P&gt;&lt;P&gt;  WHILE I NE 0.&lt;/P&gt;&lt;P&gt;    PERFORM EXECUTE-FUNCTION.&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;P&gt;  REFRESH R1.&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 need to check now for INCLUDES on DOWNLOAD when the INCLUDE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; program itself is of type I. In this case the function call&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; will not return the INCLUDES. For example we could be&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; downloading ZTESTTOP (an Include itself) which as an include&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ZTEST01.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The process fortunately is the same as the UPLOAD function&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;except of course we need to read the library instead of the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DOS directory&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;process INCLUDE modules for Upload&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;On upload the procedure is more complex as Includes within&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Includes can only be resolved by scanning the code and&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;searching if the program exists in the directory.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;To get all INCLUDES within INCLUDES entries in table I_INCL&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;that do not exist in I_INCLUDE are copied to table I_INCLUDE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;after each entire pass of table i_INCLUDE and table is then&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;re-looped through. Programs in table I_INCLUDE that have already&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;been processed have a "Y" indicator set in I_INCLUDE-AVAIL.&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;if  func = 'U'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF INCLUDES = 'Y'.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE I_INCL LINES I.&lt;/P&gt;&lt;P&gt;  IF I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    W_ITERATE = 'Y'.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    W_ITERATE = ' '.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  WHILE W_ITERATE = 'Y'.&lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_INCLUDES_UL.&lt;/P&gt;&lt;P&gt;    PERFORM LOOP_THROUGH.&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE I_INCL LINES I.&lt;/P&gt;&lt;P&gt;    IF I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;      W_ITERATE = 'Y'.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      W_ITERATE = ' '.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;DESCRIBE TABLE I_INCLUDE LINES I.&lt;/P&gt;&lt;P&gt;IF I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;  SKIP 1.&lt;/P&gt;&lt;P&gt;  WRITE: / ' Included Programs found'.&lt;/P&gt;&lt;P&gt;  SKIP 1.&lt;/P&gt;&lt;P&gt;  LOOP AT I_INCLUDE.&lt;/P&gt;&lt;P&gt;    WRITE I_INCLUDE-NAME TO LINE(40).&lt;/P&gt;&lt;P&gt;    CONDENSE LINE.&lt;/P&gt;&lt;P&gt;    WRITE: / LINE(80).&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       Table R contains ABAP names to up / download.            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       Loop through table R and perform up / download           */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       for each program.                                        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       Table R1 contains INCLUDE names found (if any)           */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       As each                                                  */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM EXECUTE-FUNCTION.&lt;/P&gt;&lt;P&gt;  LOOP AT R1.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING R1 TO R.&lt;/P&gt;&lt;P&gt;    APPEND R.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  REFRESH R1.&lt;/P&gt;&lt;P&gt;  LOOP AT R.&lt;/P&gt;&lt;P&gt;    REFRESH : T, E1, H1, F1, S, U.&lt;/P&gt;&lt;P&gt;    PERFORM PROCESS.&lt;/P&gt;&lt;P&gt;    MOVE 'N' TO MAIN.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  REFRESH R.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE R1 LINES I.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Build file names for UP/DOWNLOAD                           */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     3 files are generated per ABAP.                            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       1) ABAP    Path\PROGNAME.EEE (ABAP, Attr,Texts)          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Logic   Path\PROGNAME.EEE (Dynpro Source Logic)       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          CUA     Path\PROGNAME.EEE (CUA components - keys etc) */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       2) Header  Path\PROGNAME.HHH (Dynpro Header)             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;       3) Fields  Path\PROGNAME.FFF (Dynpro Field definitions  )*/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; ( If alternate file name specified -DSNAME- this will          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   be used instead. This is only valid for the main program.    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   INCLUDED programs will have file names as specified          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   above).                                                      */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  By using this scheme it saves the user from having to         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  be prompted for 3 file names.                                 */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  If you want multiple copies / versions on disk either         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  rename the old versions or specify a different directory in   */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  the path parameter.                                           */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM PROCESS.&lt;/P&gt;&lt;P&gt;  MOVE PATH TO FN1.&lt;/P&gt;&lt;P&gt;  CASE MAIN.&lt;/P&gt;&lt;P&gt;    WHEN 'Y'.&lt;/P&gt;&lt;P&gt;      IF DSNAME NE SPACE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE DSNAME TO FN1+66.                             "rel 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         CONCATENATE FN1 DSNAME INTO FN1.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE R-NAME TO FN1+66.                             "rel 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         CONCATENATE FN1 R-NAME INTO FN1.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WRITE R-NAME TO FN1+66.                               "rel 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       CONCATENATE FN1 R-NAME INTO FN1.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  MOVE FN1 TO FN2.&lt;/P&gt;&lt;P&gt;  MOVE FN1 TO FN3.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; WRITE '.HHH' TO FN1+124(4).                               "rel 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; WRITE '.FFF' TO FN2+124(4).                               "rel 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; WRITE '.EEE' TO FN3+124(4).                               "rel 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CONCATENATE FN1 '.HHH' INTO FN1.&lt;/P&gt;&lt;P&gt;  CONCATENATE FN2 '.FFF' INTO FN2.&lt;/P&gt;&lt;P&gt;  CONCATENATE FN3 '.EEE' INTO FN3.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CONDENSE FN1 NO-GAPS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CONDENSE FN2 NO-GAPS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CONDENSE FN3 NO-GAPS.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  NAME   = R-NAME.&lt;/P&gt;&lt;P&gt;  CASE FUNC.&lt;/P&gt;&lt;P&gt;    WHEN 'D'.&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_OBJECTS.&lt;/P&gt;&lt;P&gt;      CLEAR LINE.&lt;/P&gt;&lt;P&gt;      WRITE : 'ABAP : ' TO LINE.&lt;/P&gt;&lt;P&gt;      WRITE R-NAME TO LINE+8.&lt;/P&gt;&lt;P&gt;      WRITE 'has been unloaded' TO LINE+55.&lt;/P&gt;&lt;P&gt;      CONDENSE LINE.&lt;/P&gt;&lt;P&gt;      WRITE: / LINE.&lt;/P&gt;&lt;P&gt;      DESCRIBE TABLE T LINES I.&lt;/P&gt;&lt;P&gt;      IF I = 0.&lt;/P&gt;&lt;P&gt;        WRITE: / 'No Dynpros were found for unload function'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        WRITE: / 'The following Dynpros have been unloaded : '.&lt;/P&gt;&lt;P&gt;        PERFORM LOOP_THROUGH_T.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN 'U'.&lt;/P&gt;&lt;P&gt;      PERFORM UPLOAD_OBJECTS.&lt;/P&gt;&lt;P&gt;      DESCRIBE TABLE T LINES I.&lt;/P&gt;&lt;P&gt;      CASE I.&lt;/P&gt;&lt;P&gt;        WHEN 0.&lt;/P&gt;&lt;P&gt;          WRITE:  / 'No Dynpros were found for restore function'.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;          WRITE: / 'The following Dynpros have been restored : '.&lt;/P&gt;&lt;P&gt;          PERFORM LOOP_THROUGH_T.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      IF MAIN EQ 'Y'.&lt;/P&gt;&lt;P&gt;        CASE OLDNAME.&lt;/P&gt;&lt;P&gt;          WHEN SPACE.&lt;/P&gt;&lt;P&gt;            CLEAR LINE.&lt;/P&gt;&lt;P&gt;            WRITE : 'ABAP : ' TO LINE.&lt;/P&gt;&lt;P&gt;            WRITE R-NAME TO LINE+8.&lt;/P&gt;&lt;P&gt;            WRITE 'has been restored' TO LINE+55.&lt;/P&gt;&lt;P&gt;            CONDENSE LINE.&lt;/P&gt;&lt;P&gt;            WRITE: / LINE.&lt;/P&gt;&lt;P&gt;          WHEN OTHERS.&lt;/P&gt;&lt;P&gt;            CLEAR LINE.&lt;/P&gt;&lt;P&gt;            WRITE : 'ABAP : ' TO LINE.&lt;/P&gt;&lt;P&gt;            WRITE R-NAME TO LINE+8.&lt;/P&gt;&lt;P&gt;            WRITE 'has been restored - original name :'&lt;/P&gt;&lt;P&gt;               TO LINE+55.&lt;/P&gt;&lt;P&gt;            WRITE OLDNAME TO LINE+92.&lt;/P&gt;&lt;P&gt;            CONDENSE LINE.&lt;/P&gt;&lt;P&gt;            WRITE: / LINE.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CLEAR LINE.&lt;/P&gt;&lt;P&gt;        WRITE : 'ABAP : ' TO LINE.&lt;/P&gt;&lt;P&gt;        WRITE R-NAME TO LINE+8.&lt;/P&gt;&lt;P&gt;        WRITE 'has been restored' TO LINE+55.&lt;/P&gt;&lt;P&gt;        CONDENSE LINE.&lt;/P&gt;&lt;P&gt;        WRITE: / LINE.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;      print progname + dynpro nrs that have been processed.     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM LOOP_THROUGH_T.&lt;/P&gt;&lt;P&gt;  LOOP AT T.&lt;/P&gt;&lt;P&gt;    CLEAR LINE.&lt;/P&gt;&lt;P&gt;    WRITE R-NAME TO LINE.&lt;/P&gt;&lt;P&gt;    WRITE T-NUMBER TO LINE+50.&lt;/P&gt;&lt;P&gt;    CONDENSE LINE.&lt;/P&gt;&lt;P&gt;    WRITE: / LINE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;            Download Objects                                    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM DOWNLOAD_OBJECTS.&lt;/P&gt;&lt;P&gt;  PERFORM UNLOAD_ABAP.                 "ABAP source, texts, attr&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM TRDIR&lt;/P&gt;&lt;P&gt;   WHERE NAME EQ R-NAME.&lt;/P&gt;&lt;P&gt;  IF TRDIR-SUBC = 'I'.&lt;/P&gt;&lt;P&gt;    CASE INCLUDES.                     "Included file wanted&lt;/P&gt;&lt;P&gt;      WHEN 'Y'.&lt;/P&gt;&lt;P&gt;        PERFORM SCAN4-INCLUDES.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  PERFORM UNLOAD_CUA.                  "CUA stuff&lt;/P&gt;&lt;P&gt;  PERFORM DOWNLOAD_DATA.               "Download EEE file to PC&lt;/P&gt;&lt;P&gt;  PERFORM BUILD_T.        "Build table of all dynpros in ABAP&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE T LINES I.&lt;/P&gt;&lt;P&gt;  CASE I.&lt;/P&gt;&lt;P&gt;    WHEN 0.            "if no dynpros exist then cannot download any&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_DATA.           "Download EEE file to PC&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      PERFORM UNLOAD_DYNPROS.          "Get Raw dynpros from SAP&lt;/P&gt;&lt;P&gt;      PERFORM UNLOAD_DYNPRO_COMPONENTS."Convert to table&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_DATA.           "Download ABAP etc. to PC&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_BIN_H1.         "Download dynpro header&lt;/P&gt;&lt;P&gt;      PERFORM DOWNLOAD_BIN_F1.         "Download dynpro fields&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  Split ABAP up into its component parts                        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                           A) Program source (72)               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                           B) Texts          (132)              */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                           C) Attributes     (117)              */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                           D) CUA stuff      (Various)          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UNLOAD_ABAP.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;    Get ABAP language. Only required on download.               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM TRDIR&lt;/P&gt;&lt;P&gt;    WHERE NAME EQ R-NAME.&lt;/P&gt;&lt;P&gt;  MOVE TRDIR-RLOAD TO R-LANGUAGE.&lt;/P&gt;&lt;P&gt;  READ REPORT R-NAME INTO S.           "Get source into table S&lt;/P&gt;&lt;P&gt;  MOVE '????SRCE' TO S-TXT.&lt;/P&gt;&lt;P&gt;  INSERT  S INDEX 1.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;    Text elements, Numbered texts, headings, selection texts    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;    Read text elements with logon language. If they don't       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;    exist read with the value taken from TRDIR.                 */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;  READ TEXTPOOL R-NAME INTO U LANGUAGE SY-LANGU.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;    READ TEXTPOOL R-NAME INTO U LANGUAGE R-LANGUAGE.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE U LINES I.&lt;/P&gt;&lt;P&gt;  CASE I.&lt;/P&gt;&lt;P&gt;    WHEN 0.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      MOVE '????TEXT' TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;      LOOP AT U.&lt;/P&gt;&lt;P&gt;        MOVE U-ID TO S-TXT(1).&lt;/P&gt;&lt;P&gt;        MOVE U-KEY TO S-TXT+1(8).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       CONDENSE U-ENTRY.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        MOVE U-ENTRY TO S-TXT+9(171).&lt;/P&gt;&lt;P&gt;        APPEND S.&lt;/P&gt;&lt;P&gt;        DELETE U.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;    Retrieve Attributes from TRDIR and add to table S           */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;    Change language to logged on language                       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;  MOVE '????ATTR' TO S-TXT.&lt;/P&gt;&lt;P&gt;  APPEND S.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM TRDIR&lt;/P&gt;&lt;P&gt;         WHERE NAME EQ R-NAME.&lt;/P&gt;&lt;P&gt;  MOVE SY-LANGU TO TRDIR-RLOAD.&lt;/P&gt;&lt;P&gt;  MOVE-CORRESPONDING TRDIR TO DIR.&lt;/P&gt;&lt;P&gt;  MOVE DIR TO S-TXT.&lt;/P&gt;&lt;P&gt;  APPEND S.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;             retrieve CUA stuff and append to table S.          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UNLOAD_CUA.&lt;/P&gt;&lt;P&gt;  MOVE R-NAME TO EU_KEY-NAME.          "Program name for CUA&lt;/P&gt;&lt;P&gt;  MOVE 'D' TO EU_KEY-SPRSL.            "CUA seems to want D as lang&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MOVE R-LANGUAGE TO EU_KEY-SPRSL.     "Language              "rel 2.2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IMPORT STA FUN MEN MTX ACT BUT PFK SET LAST INC STX DOC    "rel 2.2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IMPORT STA STX FUN MEN MTX ACT BUT PFK SET LAST INC DOC     "rel 3.0&lt;/P&gt;&lt;P&gt;         ATT FDN MDN SYM FIN           "rel 3.0&lt;/P&gt;&lt;P&gt;          FROM DATABASE EUDB(CU) ID EU_KEY.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC NE 0.                    "No statuses&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;read titles in logged on language. If not present use&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;language from TRDIR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CASE REL3.&lt;/P&gt;&lt;P&gt;    WHEN SPACE.                        "(rel 4)&lt;/P&gt;&lt;P&gt;      SELECT * FROM RSMPTEXTS WHERE PROGNAME EQ R-NAME&lt;/P&gt;&lt;P&gt;                        AND SPRSL = SY-LANGU.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING RSMPTEXTS TO FTX.&lt;/P&gt;&lt;P&gt;        APPEND FTX.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;        SELECT * FROM RSMPTEXTS WHERE PROGNAME EQ R-NAME&lt;/P&gt;&lt;P&gt;                          AND SPRSL = R-LANGUAGE.&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING RSMPTEXTS TO FTX.&lt;/P&gt;&lt;P&gt;          APPEND FTX.&lt;/P&gt;&lt;P&gt;        ENDSELECT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      DESCRIBE TABLE FTX LINES I.&lt;/P&gt;&lt;P&gt;      IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;        MOVE '????FTXT' TO S-TXT.&lt;/P&gt;&lt;P&gt;        APPEND S.&lt;/P&gt;&lt;P&gt;        LOOP AT FTX.&lt;/P&gt;&lt;P&gt;          MOVE FTX TO S-TXT.&lt;/P&gt;&lt;P&gt;          APPEND S.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      SELECT * FROM TITLE WHERE PROGNAME   EQ R-NAME&lt;/P&gt;&lt;P&gt;                          AND   DDLANGUAGE EQ SY-LANGU.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING TITLE TO TIT.&lt;/P&gt;&lt;P&gt;        APPEND TIT.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;        SELECT * FROM TITLE WHERE PROGNAME   EQ R-NAME&lt;/P&gt;&lt;P&gt;                            AND   DDLANGUAGE EQ R-LANGUAGE.&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING TITLE TO TIT.&lt;/P&gt;&lt;P&gt;          APPEND TIT.&lt;/P&gt;&lt;P&gt;        ENDSELECT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE STA LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????STAT' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT STA.&lt;/P&gt;&lt;P&gt;      MOVE STA TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE FUN LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????FUNC' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT FUN.&lt;/P&gt;&lt;P&gt;      MOVE FUN TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE MEN LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????MEN1' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT MEN.&lt;/P&gt;&lt;P&gt;      MOVE MEN TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE MTX LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????MTX1' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT MTX.&lt;/P&gt;&lt;P&gt;      MOVE MTX TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE ACT LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????ACTN' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT ACT.&lt;/P&gt;&lt;P&gt;      MOVE ACT TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE BUT LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????BUTN' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT BUT.&lt;/P&gt;&lt;P&gt;      MOVE BUT TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE PFK LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????PFKY' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT PFK.&lt;/P&gt;&lt;P&gt;      MOVE PFK TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE SET LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????SETS' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT SET.&lt;/P&gt;&lt;P&gt;      MOVE SET TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF LAST NE SPACE.&lt;/P&gt;&lt;P&gt;    MOVE '????LIST' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    MOVE LAST TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE INC LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????INCL' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT INC.&lt;/P&gt;&lt;P&gt;      MOVE INC TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE STX LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????STXT' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT STX.&lt;/P&gt;&lt;P&gt;      MOVE STX TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE DOC LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????DOCN' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT DOC.&lt;/P&gt;&lt;P&gt;      MOVE DOC TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE TIT LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????TITL' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT TIT.&lt;/P&gt;&lt;P&gt;      MOVE TIT TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Next 5 tables are rel 3.0 specific  (ATT, FDN, MDN, SYM, FIN)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DESCRIBE TABLE ATT LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????VATT' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT ATT.&lt;/P&gt;&lt;P&gt;      MOVE ATT TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE FDN LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????VFDN' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT FDN.&lt;/P&gt;&lt;P&gt;      MOVE FDN TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE MDN LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????VMDN' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT MDN.&lt;/P&gt;&lt;P&gt;      MOVE MDN TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE SYM LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????VSYM' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT SYM.&lt;/P&gt;&lt;P&gt;      MOVE SYM TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE FIN LINES I.&lt;/P&gt;&lt;P&gt;  IF   I &amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MOVE '????VFIN' TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    LOOP AT FIN.&lt;/P&gt;&lt;P&gt;      MOVE FIN TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;            Upload Objects.                                     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UPLOAD_OBJECTS.&lt;/P&gt;&lt;P&gt;  PERFORM UPLOAD_EEE.                  "ABAP,texts,attr dynpro logic&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE E1 LINES I.&lt;/P&gt;&lt;P&gt;  IF I &amp;gt; 0.                            "Do dynpro components exist&lt;/P&gt;&lt;P&gt;    PERFORM UPLOAD_HHH.                "dynpro header&lt;/P&gt;&lt;P&gt;    PERFORM UPLOAD_FFF.                "dynpro fields.&lt;/P&gt;&lt;P&gt;    PERFORM RECONSTRUCT_DYNPROS.       "load + gen dynpros&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;            Build table containing dynpro names and numbers     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM BUILD_T.&lt;/P&gt;&lt;P&gt;  SELECT * FROM D020S WHERE PROG EQ R-NAME.&lt;/P&gt;&lt;P&gt;    T-NUMBER = D020S-DNUM.&lt;/P&gt;&lt;P&gt;    T-NAME   = D020S-PROG.&lt;/P&gt;&lt;P&gt;    APPEND T.&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  Split dynpros into constituent parts.                         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UNLOAD_DYNPROS.&lt;/P&gt;&lt;P&gt;  MOVE 'Y' TO FIRST-TIME.&lt;/P&gt;&lt;P&gt;  LOOP AT T.&lt;/P&gt;&lt;P&gt;    REFRESH: F, E.&lt;/P&gt;&lt;P&gt;    CLEAR: H, F, E.&lt;/P&gt;&lt;P&gt;    PERFORM BUILD_HHH.                 "Dynpro Header&lt;/P&gt;&lt;P&gt;    PERFORM BUILD_FFF.                 "Dynpro Fields&lt;/P&gt;&lt;P&gt;    PERFORM BUILD_EEE_DYNP.            "Dynpro Logic&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   Header    H length 284.                                      */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM BUILD_HHH.&lt;/P&gt;&lt;P&gt;  MOVE T-NAME TO DYNNAME(40).          "rel 4.&lt;/P&gt;&lt;P&gt;  MOVE T-NUMBER TO DYNNAME+40(4).      "rel 4.&lt;/P&gt;&lt;P&gt;  IMPORT DYNPRO H F E M ID DYNNAME.&lt;/P&gt;&lt;P&gt;  MOVE T-NAME TO H1-NAME.&lt;/P&gt;&lt;P&gt;  MOVE T-NUMBER TO H1-NUMBER.&lt;/P&gt;&lt;P&gt;  MOVE-CORRESPONDING H TO H1.&lt;/P&gt;&lt;P&gt;  APPEND H1.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   Fields    D021S Len 87.                                      */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM BUILD_FFF.&lt;/P&gt;&lt;P&gt;  MOVE T-NAME TO F1-NAME.&lt;/P&gt;&lt;P&gt;  MOVE T-NUMBER TO F1-NUMBER.&lt;/P&gt;&lt;P&gt;  LOOP AT F.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING F TO F1.&lt;/P&gt;&lt;P&gt;    APPEND F1.&lt;/P&gt;&lt;P&gt;    DELETE F.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   Dynpro Logic  D022S          E                               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM BUILD_EEE_DYNP.&lt;/P&gt;&lt;P&gt;  MOVE T-NAME TO E1-NAME.&lt;/P&gt;&lt;P&gt;  MOVE T-NUMBER TO E1-NUMBER.&lt;/P&gt;&lt;P&gt;  LOOP AT E.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING E TO E1.&lt;/P&gt;&lt;P&gt;    APPEND E1.&lt;/P&gt;&lt;P&gt;    DELETE E.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;        Unload Constituent parts of dynpro.                     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UNLOAD_DYNPRO_COMPONENTS.&lt;/P&gt;&lt;P&gt;  MOVE '????LOGC' TO S-TXT.&lt;/P&gt;&lt;P&gt;  APPEND S.&lt;/P&gt;&lt;P&gt;  LOOP AT E1.&lt;/P&gt;&lt;P&gt;    MOVE E1 TO S-TXT.&lt;/P&gt;&lt;P&gt;    APPEND S.&lt;/P&gt;&lt;P&gt;    DELETE E1.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  FREE E1.&lt;/P&gt;&lt;P&gt;  LOOP AT T.&lt;/P&gt;&lt;P&gt;    MOVE 'N' TO FOUND.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE * FROM D020T         "use logged on language&lt;/P&gt;&lt;P&gt;           WHERE  PROG EQ T-NAME&lt;/P&gt;&lt;P&gt;            AND   DYNR EQ T-NUMBER&lt;/P&gt;&lt;P&gt;            AND   LANG EQ SY-LANGU.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC NE 0.                  "try original language.&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM D020T&lt;/P&gt;&lt;P&gt;             WHERE  PROG EQ T-NAME&lt;/P&gt;&lt;P&gt;              AND   DYNR EQ T-NUMBER&lt;/P&gt;&lt;P&gt;              AND   LANG EQ R-LANGUAGE.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC EQ 0.&lt;/P&gt;&lt;P&gt;      IF FOUND = 'N'.&lt;/P&gt;&lt;P&gt;        MOVE '????DTIT' TO S-TXT.&lt;/P&gt;&lt;P&gt;        APPEND S.&lt;/P&gt;&lt;P&gt;        MOVE 'Y' TO FOUND.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MOVE T-NAME TO S-TXT.&lt;/P&gt;&lt;P&gt;      WRITE T-NUMBER TO S-TXT+8(4).&lt;/P&gt;&lt;P&gt;      WRITE D020T-DTXT TO S-TXT+12(60).&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MOVE 'N' TO FOUND.&lt;/P&gt;&lt;P&gt;    SELECT  * FROM D021T&lt;/P&gt;&lt;P&gt;           WHERE  PROG EQ T-NAME&lt;/P&gt;&lt;P&gt;            AND   DYNR EQ T-NUMBER&lt;/P&gt;&lt;P&gt;            AND   LANG EQ SY-LANGU.    "logged on language&lt;/P&gt;&lt;P&gt;      IF FOUND = 'N'.&lt;/P&gt;&lt;P&gt;        MOVE '????DTXT' TO S-TXT.&lt;/P&gt;&lt;P&gt;        APPEND S.&lt;/P&gt;&lt;P&gt;        MOVE 'Y' TO FOUND.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING D021T TO DTXT.&lt;/P&gt;&lt;P&gt;      MOVE DTXT TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;    CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;      WHEN 0.&lt;/P&gt;&lt;P&gt;      WHEN OTHERS.                     "try original language&lt;/P&gt;&lt;P&gt;        SELECT  * FROM D021T&lt;/P&gt;&lt;P&gt;               WHERE  PROG EQ T-NAME&lt;/P&gt;&lt;P&gt;                AND   DYNR EQ T-NUMBER&lt;/P&gt;&lt;P&gt;                AND   LANG EQ R-LANGUAGE.&lt;/P&gt;&lt;P&gt;          IF FOUND = 'N'.&lt;/P&gt;&lt;P&gt;            MOVE '????DTXT' TO S-TXT.&lt;/P&gt;&lt;P&gt;            APPEND S.&lt;/P&gt;&lt;P&gt;            MOVE 'Y' TO FOUND.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING D021T TO DTXT.&lt;/P&gt;&lt;P&gt;          MOVE DTXT TO S-TXT.&lt;/P&gt;&lt;P&gt;          APPEND S.&lt;/P&gt;&lt;P&gt;        ENDSELECT.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Build the original dynpro component tables.                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Table H1 contains 1 entry for each dynpro. H1 contains     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     the header for the dynpro prefixed by the program name     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     and dynpro number.                                         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     By looping round this table we can re-build the F          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     (Fields) and E (Logic) components. By stripping off the    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     program name and dynpro number the original tables are     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     re-created. (Tables F1 and E1 also have a prefix of        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Program name and dynpro nr).                               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     After the original set of tables has been re-created we    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     use R3 - SYSTEM-CALL (rel 2.2)  to generate the screen     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     and then get the next entry in table H1 to build the       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     next screen. For releases 3.0 and higher use generate      */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     dynpro.                                                    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM RECONSTRUCT_DYNPROS.&lt;/P&gt;&lt;P&gt;  LOOP AT H1.&lt;/P&gt;&lt;P&gt;    CASE MAIN.&lt;/P&gt;&lt;P&gt;      WHEN 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      if h1-name ne repid.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF H1-NAME NE R1-NAME.&lt;/P&gt;&lt;P&gt;          MOVE H1-NAME TO OLDNAME.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;    PERFORM RECONSTRUCT_F.&lt;/P&gt;&lt;P&gt;    PERFORM RECONSTRUCT_E.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING H1 TO H.&lt;/P&gt;&lt;P&gt;    IF MAIN = 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   move repid to h-prog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE R1-NAME TO H-PROG.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   move repid to dynname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      MOVE R1-NAME TO DYNNAME.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      MOVE H1-NAME TO H-PROG.&lt;/P&gt;&lt;P&gt;      MOVE H1-NAME TO DYNNAME.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MOVE H1-NUMBER TO H-DNUM.&lt;/P&gt;&lt;P&gt;    WRITE H1-NUMBER TO DYNNAME+40(4).&lt;/P&gt;&lt;P&gt;    EXPORT DYNPRO H F E M ID DYNNAME.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SYSTEM-CALL GENERATE-SCREEN DYNNAME.          "Up to rel 2.2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    GENERATE DYNPRO H F E M ID DYNNAME "R 3.0, 4.0, 4.5&lt;/P&gt;&lt;P&gt;                        MESSAGE DYNPRO_MESSAGE&lt;/P&gt;&lt;P&gt;                        LINE    DYNPRO_LINE&lt;/P&gt;&lt;P&gt;                        WORD    DYNPRO_WORD.&lt;/P&gt;&lt;P&gt;    REFRESH: M, F, E.&lt;/P&gt;&lt;P&gt;    CLEAR: M, H, F, E.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;               Re-build Fields table                            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM RECONSTRUCT_F.&lt;/P&gt;&lt;P&gt;  LOOP AT F1  WHERE NAME EQ H1-NAME AND&lt;/P&gt;&lt;P&gt;              NUMBER EQ H1-NUMBER.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING F1 TO F.&lt;/P&gt;&lt;P&gt;    APPEND F.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;               Re-build Logic table                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM RECONSTRUCT_E.&lt;/P&gt;&lt;P&gt;  LOOP AT E1  WHERE NAME EQ H1-NAME AND&lt;/P&gt;&lt;P&gt;              NUMBER EQ H1-NUMBER.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING E1 TO E.&lt;/P&gt;&lt;P&gt;    APPEND E.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         scan for included files  (Upload)                      */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM SCAN4-INCLUDES.&lt;/P&gt;&lt;P&gt;  IF FUNC = 'D'.    "Downloads - whole table needs to be scanned&lt;/P&gt;&lt;P&gt;    LOOP AT S.&lt;/P&gt;&lt;P&gt;      PERFORM SEARCH-FUNC.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt; IF FUNC = 'U'.  "On upload scan line by line as we are re-building abap&lt;/P&gt;&lt;P&gt;    PERFORM SEARCH-FUNC.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         scan for text INCLUDE xxxxxxxx                         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         reject INCLUDE STRUCTURE as structure not a valid      */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         program name                                           */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM SEARCH-FUNC.&lt;/P&gt;&lt;P&gt;  CONDENSE S-TXT.&lt;/P&gt;&lt;P&gt;  SEARCH S-TXT FOR '.INCLUDE .'.&lt;/P&gt;&lt;P&gt;  CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;    WHEN 0.&lt;/P&gt;&lt;P&gt;      IF S-TXT+8(9) EQ 'STRUCTURE'&lt;/P&gt;&lt;P&gt;      OR S-TXT+8(9) EQ 'structure'&lt;/P&gt;&lt;P&gt;       OR S-TXT+8(6) EQ '&amp;lt;ICON&amp;gt;'       "rel 3.0c 3.0d&lt;/P&gt;&lt;P&gt;       OR S-TXT+8(6) EQ '&amp;lt;icon&amp;gt;'&lt;/P&gt;&lt;P&gt;       OR S-TXT+8(6) EQ '&amp;lt;type&amp;gt;'&lt;/P&gt;&lt;P&gt;       OR S-TXT+8(6) EQ '&amp;lt;TYPE&amp;gt;'&lt;/P&gt;&lt;P&gt;       OR S-TXT+8(9) EQ '&amp;lt;methods&amp;gt;'&lt;/P&gt;&lt;P&gt;       OR S-TXT+8(9) EQ '&amp;lt;METHODS&amp;gt;'.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    IF SY-FDPOS EQ 0.  "INCLUDE must be in pos 1 (by reason of condense)&lt;/P&gt;&lt;P&gt;        PERFORM VALIDATE_INCLUDE.&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;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  Validate INCLUDES                   .                         */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM VALIDATE_INCLUDE.&lt;/P&gt;&lt;P&gt;  SEARCH S-TXT FOR '...' STARTING AT 9 ENDING AT 39.&lt;/P&gt;&lt;P&gt;  CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;    WHEN 0.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      SEARCH S-TXT FOR '. .' STARTING AT 9 ENDING AT 38.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  IX = SY-FDPOS.&lt;/P&gt;&lt;P&gt;  ASSIGN S-TXT+8(IX) TO &amp;lt;F&amp;gt;.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Now check for Include Mask   for example if include mask was set to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Z* then only include programs whose first letter starts with a Z.&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;  1) get length of the INCLUDE program name. Must be less than or&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     equal 40.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  2) Compare it with the Include mask.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  3) If Ok add include program name to include table&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;clear i_include.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;move &amp;lt;f&amp;gt; to i_include-name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR I_INCL.&lt;/P&gt;&lt;P&gt;  SEARCH IMASK FOR '.*.'.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    CONDENSE IMASK.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  IF ( &amp;lt;F&amp;gt; CP IMASK  OR  IMASK = ' ' ).&lt;/P&gt;&lt;P&gt;    READ TABLE I_INCL WITH KEY = &amp;lt;F&amp;gt;.&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;      MOVE &amp;lt;F&amp;gt; TO I_INCL-NAME.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  move 1 to i_include-count.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  collect i_include.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      APPEND I_INCL.&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;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Download table S.                                     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM DOWNLOAD_DATA.&lt;/P&gt;&lt;P&gt;  CLEAR TXLINE.&lt;/P&gt;&lt;P&gt;  WRITE 'Downloading ' TO TXLINE.&lt;/P&gt;&lt;P&gt;  WRITE R1-NAME TO TXLINE+12.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        PERCENTAGE = 0&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            TEXT       = TXLINE&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; CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILENAME = FN3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILETYPE = 'ASC'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           DATA_TAB = S.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: L_FILE TYPE STRING.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;MOVE FN3 TO L_FILE.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BIN_FILESIZE                    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    FILENAME                        = L_FILE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILETYPE                        = 'ASC'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  APPEND                          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                          = '00'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  TRUNC_TRAILING_BLANKS           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_LF                        = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  COL_SELECT                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  COL_SELECT_MASK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DAT_MODE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CONFIRM_OVERWRITE               = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_AUTH_CHECK                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                     = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                     = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_BOM                       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  TRUNC_TRAILING_BLANKS_EOL       = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_N_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_N_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_T_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_T_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TABLES&lt;/P&gt;&lt;P&gt;    DATA_TAB                        = S&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FIELDNAMES                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; EXCEPTIONS&lt;/P&gt;&lt;P&gt;   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;   OTHERS                          = 22.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Download Binary files H1                              */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM DOWNLOAD_BIN_H1.&lt;/P&gt;&lt;P&gt;  DESCRIBE FIELD H1 LENGTH J IN BYTE MODE.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE H1 LINES I.&lt;/P&gt;&lt;P&gt;  NR_OF_BYTES = I * J.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILENAME     = FN1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILETYPE     = 'BIN'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           BIN_FILESIZE = NR_OF_BYTES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILELENGTH   = FILESIZE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           DATA_TAB     = H1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: L_FILE TYPE STRING.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;MOVE FN1 TO L_FILE.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BIN_FILESIZE                    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    FILENAME                        = L_FILE&lt;/P&gt;&lt;P&gt;   FILETYPE                        = 'BIN'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  APPEND                          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                          = '00'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  TRUNC_TRAILING_BLANKS           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_LF                        = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  COL_SELECT                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  COL_SELECT_MASK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DAT_MODE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CONFIRM_OVERWRITE               = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_AUTH_CHECK                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                     = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                     = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_BOM                       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  TRUNC_TRAILING_BLANKS_EOL       = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_N_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_N_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_T_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_T_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TABLES&lt;/P&gt;&lt;P&gt;    DATA_TAB                        = H1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FIELDNAMES                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; EXCEPTIONS&lt;/P&gt;&lt;P&gt;   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;   OTHERS                          = 22.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Download Binary files F1                              */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM DOWNLOAD_BIN_F1.&lt;/P&gt;&lt;P&gt;  DESCRIBE FIELD F1 LENGTH J IN BYTE MODE.&lt;/P&gt;&lt;P&gt;  DESCRIBE TABLE F1 LINES I.&lt;/P&gt;&lt;P&gt;  NR_OF_BYTES = I * J.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILENAME     = FN2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILETYPE     = 'BIN'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           BIN_FILESIZE = NR_OF_BYTES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILELENGTH   = FILESIZE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           DATA_TAB     = F1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: L_FILE TYPE STRING.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;MOVE FN2 TO L_FILE.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BIN_FILESIZE                    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    FILENAME                        = L_FILE&lt;/P&gt;&lt;P&gt;   FILETYPE                        = 'BIN'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  APPEND                          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                          = '00'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  TRUNC_TRAILING_BLANKS           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_LF                        = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  COL_SELECT                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  COL_SELECT_MASK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DAT_MODE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CONFIRM_OVERWRITE               = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_AUTH_CHECK                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                     = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                     = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WRITE_BOM                       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  TRUNC_TRAILING_BLANKS_EOL       = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_N_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_N_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_T_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  WK1_T_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TABLES&lt;/P&gt;&lt;P&gt;    DATA_TAB                        = F1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FIELDNAMES                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; EXCEPTIONS&lt;/P&gt;&lt;P&gt;   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;   OTHERS                          = 22.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Upload data from file .EEE                            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UPLOAD_EEE.&lt;/P&gt;&lt;P&gt;  CLEAR TXLINE.&lt;/P&gt;&lt;P&gt;  WRITE 'Uploading ' TO TXLINE.&lt;/P&gt;&lt;P&gt;  WRITE R1-NAME TO TXLINE+10.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        PERCENTAGE = 0&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            TEXT       = TXLINE&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS     = 1.&lt;/P&gt;&lt;P&gt;  MOVE 'Y' TO FIRST-TIME.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILENAME   = FN3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILETYPE   = 'ASC'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           DATA_TAB   = S1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: L_FILE TYPE STRING.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;MOVE FN3 TO L_FILE.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt;    FILENAME                      = L_FILE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILETYPE                      = 'ASC'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HAS_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TABLES&lt;/P&gt;&lt;P&gt;    DATA_TAB                      = S1&lt;/P&gt;&lt;P&gt; EXCEPTIONS&lt;/P&gt;&lt;P&gt;   FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;P&gt;   FILE_READ_ERROR               = 2&lt;/P&gt;&lt;P&gt;   NO_BATCH                      = 3&lt;/P&gt;&lt;P&gt;   GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;P&gt;   INVALID_TYPE                  = 5&lt;/P&gt;&lt;P&gt;   NO_AUTHORITY                  = 6&lt;/P&gt;&lt;P&gt;   UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;P&gt;   BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;P&gt;   HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;P&gt;   SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;P&gt;   HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;P&gt;   UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;P&gt;   ACCESS_DENIED                 = 13&lt;/P&gt;&lt;P&gt;   DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;P&gt;   DISK_FULL                     = 15&lt;/P&gt;&lt;P&gt;   DP_TIMEOUT                    = 16&lt;/P&gt;&lt;P&gt;   OTHERS                        = 17.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  LOOP AT S1.&lt;/P&gt;&lt;P&gt;    IF S1-TXT(4) = '????'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT(8) TO NEW-FUNC.&lt;/P&gt;&lt;P&gt;      IF FIRST-TIME = 'Y'.&lt;/P&gt;&lt;P&gt;        MOVE S1-TXT(8) TO OLD-FUNC.&lt;/P&gt;&lt;P&gt;        MOVE 'N' TO FIRST-TIME.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        PERFORM STORE_COMPONENT.&lt;/P&gt;&lt;P&gt;        MOVE NEW-FUNC TO OLD-FUNC.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    IF S1-TXT(4) NE '????'.&lt;/P&gt;&lt;P&gt;      PERFORM REBUILD-COMPONENT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  PERFORM STORE_COMPONENT.         "last component still to be processed&lt;/P&gt;&lt;P&gt;  PERFORM REBUILD-CUA.                 "re-build CUA, statuses, pfk etc&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Upload Dynpro headers (HHH) and fields (FFF)          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          titles and dynpro logic is contained in file .EEE     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          and has already been processed.                       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UPLOAD_HHH.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: L_FILE TYPE STRING.&lt;/P&gt;&lt;P&gt;  CASE REL3.&lt;/P&gt;&lt;P&gt;    WHEN 'X'.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILENAME   = FN1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILETYPE   = 'BIN'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               DATA_TAB   = H2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;      CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;      MOVE FN1 TO L_FILE.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          FILENAME                      = L_FILE&lt;/P&gt;&lt;P&gt;         FILETYPE                      = 'BIN'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        HAS_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        TABLES&lt;/P&gt;&lt;P&gt;          DATA_TAB                      = H2&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;         FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;P&gt;         FILE_READ_ERROR               = 2&lt;/P&gt;&lt;P&gt;         NO_BATCH                      = 3&lt;/P&gt;&lt;P&gt;         GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;P&gt;         INVALID_TYPE                  = 5&lt;/P&gt;&lt;P&gt;         NO_AUTHORITY                  = 6&lt;/P&gt;&lt;P&gt;         UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;P&gt;         BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;P&gt;         HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;P&gt;         SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;P&gt;         HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;P&gt;         UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;P&gt;         ACCESS_DENIED                 = 13&lt;/P&gt;&lt;P&gt;         DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;P&gt;         DISK_FULL                     = 15&lt;/P&gt;&lt;P&gt;         DP_TIMEOUT                    = 16&lt;/P&gt;&lt;P&gt;         OTHERS                        = 17.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;      LOOP AT H2.&lt;/P&gt;&lt;P&gt;        MOVE H2-CNAME TO H1-NAME.&lt;/P&gt;&lt;P&gt;        MOVE H2-CNUM  TO H1-NUMBER.&lt;/P&gt;&lt;P&gt;        MOVE H2-NNAME TO H1-PROG.&lt;/P&gt;&lt;P&gt;        MOVE H2-NNUM  TO H1-DNUM.&lt;/P&gt;&lt;P&gt;        MOVE H2-CTIM TO H1-TGEN.&lt;/P&gt;&lt;P&gt;        WRITE '19' TO H1-DGEN(2).&lt;/P&gt;&lt;P&gt;        WRITE H2-CDAT TO H1-DGEN+2(6).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL TO H1+88(39).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        WRITE H2-FILL(1) TO H1-TYPE.&lt;/P&gt;&lt;P&gt;        WRITE H2-FILL+1(4) TO H1-FNUM.&lt;/P&gt;&lt;P&gt;        WRITE H2-FILL+5(4) TO H1-DGRP.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+9(3) TO H1-BZMX.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       MOVE H2-FILL+9(3) TO H1-BZMX.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+12(3) TO H1-BZBR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+15(3) TO H1-MILI.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+18(3) TO H1-MICO.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+21(3) TO H1-MALI.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+24(3) TO H1-MACO.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+27(3) TO H1-NOLI.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+30(3) TO H1-NOCO.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       WRITE H2-FILL+33(3) TO H1-VALP.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        MOVE H2-FILL+9(3) TO H1-BZMX.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+12(3) TO H1-BZBR.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+15(3) TO H1-MILI.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+18(3) TO H1-MICO.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+21(3) TO H1-MALI.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+24(3) TO H1-MACO.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+27(3) TO H1-NOLI.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+30(3) TO H1-NOCO.&lt;/P&gt;&lt;P&gt;        MOVE H2-FILL+33(3) TO H1-VALP.&lt;/P&gt;&lt;P&gt;        WRITE H2-FILL+36(1) TO H1-CUAN.&lt;/P&gt;&lt;P&gt;        WRITE H2-FILL+37(1) TO H1-HDAT.&lt;/P&gt;&lt;P&gt;        WRITE H2-FILL+38(1) TO H1-SPRA.&lt;/P&gt;&lt;P&gt;        APPEND H1.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILENAME   = FN1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILETYPE   = 'BIN'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               DATA_TAB   = H1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;       MOVE FN1 TO L_FILE.&lt;/P&gt;&lt;P&gt;       CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           FILENAME                      = L_FILE&lt;/P&gt;&lt;P&gt;          FILETYPE                      = 'BIN'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         HAS_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;           DATA_TAB                      = H1&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;P&gt;          FILE_READ_ERROR               = 2&lt;/P&gt;&lt;P&gt;          NO_BATCH                      = 3&lt;/P&gt;&lt;P&gt;          GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;P&gt;          INVALID_TYPE                  = 5&lt;/P&gt;&lt;P&gt;          NO_AUTHORITY                  = 6&lt;/P&gt;&lt;P&gt;          UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;P&gt;          BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;P&gt;          HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;P&gt;          SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;P&gt;          HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;P&gt;          UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;P&gt;          ACCESS_DENIED                 = 13&lt;/P&gt;&lt;P&gt;          DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;P&gt;          DISK_FULL                     = 15&lt;/P&gt;&lt;P&gt;          DP_TIMEOUT                    = 16&lt;/P&gt;&lt;P&gt;          OTHERS                        = 17.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  LOOP AT H1.&lt;/P&gt;&lt;P&gt;    MOVE H1-NAME TO T-NAME.&lt;/P&gt;&lt;P&gt;    MOVE H1-NUMBER TO T-NUMBER.&lt;/P&gt;&lt;P&gt;    APPEND T.&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;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;           Upload Binary file F1 - Dynpro fields                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UPLOAD_FFF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;DATA: L_FILE TYPE STRING.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CASE REL3.&lt;/P&gt;&lt;P&gt;    WHEN 'X'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILENAME   = FN2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILETYPE   = 'BIN'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               DATA_TAB   = F2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;      CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;      MOVE FN2 TO L_FILE.&lt;/P&gt;&lt;P&gt;      CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;        EXPORTING&lt;/P&gt;&lt;P&gt;          FILENAME                      = L_FILE&lt;/P&gt;&lt;P&gt;         FILETYPE                      = 'BIN'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        HAS_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        TABLES&lt;/P&gt;&lt;P&gt;          DATA_TAB                      = F2&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;         FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;P&gt;         FILE_READ_ERROR               = 2&lt;/P&gt;&lt;P&gt;         NO_BATCH                      = 3&lt;/P&gt;&lt;P&gt;         GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;P&gt;         INVALID_TYPE                  = 5&lt;/P&gt;&lt;P&gt;         NO_AUTHORITY                  = 6&lt;/P&gt;&lt;P&gt;         UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;P&gt;         BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;P&gt;         HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;P&gt;         SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;P&gt;         HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;P&gt;         UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;P&gt;         ACCESS_DENIED                 = 13&lt;/P&gt;&lt;P&gt;         DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;P&gt;         DISK_FULL                     = 15&lt;/P&gt;&lt;P&gt;         DP_TIMEOUT                    = 16&lt;/P&gt;&lt;P&gt;         OTHERS                        = 17.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;      LOOP AT F2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       OLD_F1 = F2.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        MOVE F2(8) TO OLD_F1-NAME.&lt;/P&gt;&lt;P&gt;        MOVE F2+8(4) TO OLD_F1-NUMBER.&lt;/P&gt;&lt;P&gt;        MOVE F2+12(30) TO OLD_F1-FNAM.&lt;/P&gt;&lt;P&gt;        MOVE F2+42(2) TO OLD_F1-DIDX.&lt;/P&gt;&lt;P&gt;        MOVE F2+44(1) TO OLD_F1-FLG1.&lt;/P&gt;&lt;P&gt;        MOVE F2+45(1) TO OLD_F1-FLG2.&lt;/P&gt;&lt;P&gt;        MOVE F2+46(1) TO OLD_F1-FLG3.&lt;/P&gt;&lt;P&gt;        MOVE F2+47(1) TO OLD_F1-FILL.&lt;/P&gt;&lt;P&gt;        MOVE F2+48(1) TO OLD_F1-FMB1.&lt;/P&gt;&lt;P&gt;        MOVE F2+49(1) TO OLD_F1-FMB2.&lt;/P&gt;&lt;P&gt;        MOVE F2+50(1) TO OLD_F1-COLR.&lt;/P&gt;&lt;P&gt;        MOVE F2+51(1) TO OLD_F1-LENG.&lt;/P&gt;&lt;P&gt;        MOVE F2+52(1) TO OLD_F1-LINE.&lt;/P&gt;&lt;P&gt;        MOVE F2+53(1) TO OLD_F1-COLN.&lt;/P&gt;&lt;P&gt;        MOVE F2+54(1) TO OLD_F1-LTYP.&lt;/P&gt;&lt;P&gt;        MOVE F2+55(1) TO OLD_F1-LANF.&lt;/P&gt;&lt;P&gt;        MOVE F2+56(1) TO OLD_F1-LBLK.&lt;/P&gt;&lt;P&gt;        MOVE F2+57(1) TO OLD_F1-LREP.&lt;/P&gt;&lt;P&gt;        MOVE F2+58(3) TO OLD_F1-FMKY.&lt;/P&gt;&lt;P&gt;        MOVE F2+61(3) TO OLD_F1-PAID.&lt;/P&gt;&lt;P&gt;        MOVE F2+64(5) TO OLD_F1-UCNV.&lt;/P&gt;&lt;P&gt;        MOVE F2+69(4) TO OLD_F1-TYPE.&lt;/P&gt;&lt;P&gt;        MOVE F2+73(3) TO OLD_F1-AUTH.&lt;/P&gt;&lt;P&gt;        MOVE F2+76(30) TO OLD_F1-WNAM.&lt;/P&gt;&lt;P&gt;        MOVE F2+106(31) TO OLD_F1-DMAC.&lt;/P&gt;&lt;P&gt;        MOVE F2+137(3) TO OLD_F1-GRP1.&lt;/P&gt;&lt;P&gt;        MOVE F2+140(3) TO OLD_F1-GRP2.&lt;/P&gt;&lt;P&gt;        MOVE F2+143(3) TO OLD_F1-GRP3.&lt;/P&gt;&lt;P&gt;        MOVE F2+146(3) TO OLD_F1-GRP4.&lt;/P&gt;&lt;P&gt;        MOVE F2+149(1) TO OLD_F1-ITYP.&lt;/P&gt;&lt;P&gt;        MOVE F2+150(1) TO OLD_F1-AGLT.&lt;/P&gt;&lt;P&gt;        MOVE F2+151(1) TO OLD_F1-ADEZ.&lt;/P&gt;&lt;P&gt;        MOVE F2+152(132) TO OLD_F1-STXT.&lt;/P&gt;&lt;P&gt;        APPEND OLD_F1.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;      LOOP AT OLD_F1.&lt;/P&gt;&lt;P&gt;        MOVE-CORRESPONDING OLD_F1 TO F1.&lt;/P&gt;&lt;P&gt;        APPEND F1.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILENAME   = FN2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILETYPE   = 'BIN'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;               DATA_TAB   = F1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;       CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;       MOVE FN2 TO L_FILE.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;       CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           FILENAME                      = L_FILE&lt;/P&gt;&lt;P&gt;          FILETYPE                      = 'BIN'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         HAS_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;           DATA_TAB                      = F1&lt;/P&gt;&lt;P&gt;        EXCEPTIONS&lt;/P&gt;&lt;P&gt;          FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;P&gt;          FILE_READ_ERROR               = 2&lt;/P&gt;&lt;P&gt;          NO_BATCH                      = 3&lt;/P&gt;&lt;P&gt;          GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;P&gt;          INVALID_TYPE                  = 5&lt;/P&gt;&lt;P&gt;          NO_AUTHORITY                  = 6&lt;/P&gt;&lt;P&gt;          UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;P&gt;          BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;P&gt;          HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;P&gt;          SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;P&gt;          HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;P&gt;          UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;P&gt;          ACCESS_DENIED                 = 13&lt;/P&gt;&lt;P&gt;          DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;P&gt;          DISK_FULL                     = 15&lt;/P&gt;&lt;P&gt;          DP_TIMEOUT                    = 16&lt;/P&gt;&lt;P&gt;          OTHERS                        = 17.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  Re-construct data from file .EEE                              */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM REBUILD-COMPONENT.&lt;/P&gt;&lt;P&gt;  CASE OLD-FUNC.&lt;/P&gt;&lt;P&gt;    WHEN '????LOGC'.                   "Dynpro LOGIC.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          SHIFT S1-TXT+8 RIGHT BY 32 PLACES.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO E1.&lt;/P&gt;&lt;P&gt;      APPEND E1.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         Load ABAP Source code, CUA, pfkeys etc to int tables   */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;    WHEN '????SRCE'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO S-TXT.&lt;/P&gt;&lt;P&gt;      APPEND S.&lt;/P&gt;&lt;P&gt;      CASE INCLUDES.                   "Included file wanted&lt;/P&gt;&lt;P&gt;        WHEN 'Y'.&lt;/P&gt;&lt;P&gt;          PERFORM SCAN4-INCLUDES.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if restoring / uploading rel 3.1 or lower different cua tables&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;are used. At generate CUA time these will be converted by the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;system to rel 4.0&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;    WHEN '????STAT'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_STA.&lt;/P&gt;&lt;P&gt;          APPEND OLD_STA.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO STA.&lt;/P&gt;&lt;P&gt;          APPEND STA.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????FUNC'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_FUN.&lt;/P&gt;&lt;P&gt;          APPEND OLD_FUN.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO FUN.&lt;/P&gt;&lt;P&gt;          APPEND FUN.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????MEN1'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_MEN.&lt;/P&gt;&lt;P&gt;          APPEND OLD_MEN.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO MEN.&lt;/P&gt;&lt;P&gt;          APPEND MEN.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????MTX1'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_MTX.&lt;/P&gt;&lt;P&gt;          APPEND OLD_MTX.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO MTX.&lt;/P&gt;&lt;P&gt;          APPEND MTX.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????ACTN'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_ACT.&lt;/P&gt;&lt;P&gt;          APPEND OLD_ACT.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO ACT.&lt;/P&gt;&lt;P&gt;          APPEND ACT.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????BUTN'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_BUT.&lt;/P&gt;&lt;P&gt;          APPEND OLD_BUT.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO BUT.&lt;/P&gt;&lt;P&gt;          APPEND BUT.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????PFKY'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_PFK.&lt;/P&gt;&lt;P&gt;          APPEND OLD_PFK.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO PFK.&lt;/P&gt;&lt;P&gt;          APPEND PFK.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????SETS'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_SET.&lt;/P&gt;&lt;P&gt;          APPEND OLD_SET.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO SET.&lt;/P&gt;&lt;P&gt;          APPEND SET.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????DOCN'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_DOC.&lt;/P&gt;&lt;P&gt;          APPEND OLD_DOC.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO DOC.&lt;/P&gt;&lt;P&gt;          APPEND DOC.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????TITL'.&lt;/P&gt;&lt;P&gt;      CASE REL3.&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO OLD_TIT.&lt;/P&gt;&lt;P&gt;          APPEND OLD_TIT.&lt;/P&gt;&lt;P&gt;          MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;        WHEN SPACE.&lt;/P&gt;&lt;P&gt;          MOVE S1-TXT TO TIT.&lt;/P&gt;&lt;P&gt;          APPEND TIT.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????LIST'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO LAST.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????INCL'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO INC.&lt;/P&gt;&lt;P&gt;      APPEND INC.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????STXT'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO STX.&lt;/P&gt;&lt;P&gt;      APPEND STX.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????FTXT'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO FTX.&lt;/P&gt;&lt;P&gt;      APPEND FTX.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;next 5 tables (ATT FDN MDN SYM and FIN) are rel 3.0 specific&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHEN '????VATT'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO ATT.&lt;/P&gt;&lt;P&gt;      APPEND ATT.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????VFDN'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO FDN.&lt;/P&gt;&lt;P&gt;      APPEND FDN.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????VMDN'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO MDN.&lt;/P&gt;&lt;P&gt;      APPEND MDN.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????VSYM'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO SYM.&lt;/P&gt;&lt;P&gt;      APPEND SYM.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;    WHEN '????VFIN'.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO FIN.&lt;/P&gt;&lt;P&gt;      APPEND FIN.&lt;/P&gt;&lt;P&gt;      MOVE 'Y' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         Load ABAP Text elements (Max length 132 - the system   */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         allows 255 but this program handles 132 only)          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;    WHEN '????TEXT'.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;      MOVE: S1-TXT(1) TO U-ID,&lt;/P&gt;&lt;P&gt;            S1-TXT+1(8) TO U-KEY,&lt;/P&gt;&lt;P&gt;            S1-TXT+9(171) TO U-ENTRY.&lt;/P&gt;&lt;P&gt;      APPEND U.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;         Update ABAP's Attributes.                              */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   Ensure Attribute updated before dynpro text or language      */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   may be wrong. If language field is blank then default        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   (logon) language will be used                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;    WHEN '????ATTR'.&lt;/P&gt;&lt;P&gt;      CASE REL3.                       "uploading rel 3&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          SHIFT S1-TXT+8 RIGHT BY 32 PLACES.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO DIR.&lt;/P&gt;&lt;P&gt;      MOVE SY-MANDT TO NUM.&lt;/P&gt;&lt;P&gt;      MOVE NUM TO DIR-RMAND.           "Ensure uploaded to cor. client&lt;/P&gt;&lt;P&gt;      CASE MAIN.&lt;/P&gt;&lt;P&gt;        WHEN 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        if repid ne dir-name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF R1-NAME NE DIR-NAME.&lt;/P&gt;&lt;P&gt;            MOVE DIR-NAME TO OLDNAME.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        move repid to dir-name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          MOVE R1-NAME TO DIR-NAME.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      PERFORM UPDATE_TRDIR.&lt;/P&gt;&lt;P&gt;    WHEN '????DTIT'.                   "Dynpro title&lt;/P&gt;&lt;P&gt;      CASE REL3.                       "uploading rel 3&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          SHIFT S1-TXT+8 RIGHT BY 32 PLACES.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      CLEAR TRDIR.&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM TRDIR WHERE NAME EQ R-NAME.&lt;/P&gt;&lt;P&gt;      CASE MAIN.&lt;/P&gt;&lt;P&gt;        WHEN 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        write repid to d020t-prog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          WRITE R1-NAME TO D020T-PROG.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;          IF REL3 = ' '.&lt;/P&gt;&lt;P&gt;            WRITE S1-TXT(40) TO D020T-PROG.&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            WRITE S1-TXT(8) TO D020T-PROG.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      WRITE S1-TXT+40(4) TO D020T-DYNR.&lt;/P&gt;&lt;P&gt;      IF TRDIR-RLOAD EQ SPACE.&lt;/P&gt;&lt;P&gt;        MOVE SY-LANGU TO TRDIR-RLOAD.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      MOVE TRDIR-RLOAD TO D020T-LANG.&lt;/P&gt;&lt;P&gt;      WRITE S1-TXT+44(60) TO D020T-DTXT.&lt;/P&gt;&lt;P&gt;      MODIFY D020T.&lt;/P&gt;&lt;P&gt;    WHEN '????DTXT'.&lt;/P&gt;&lt;P&gt;      CASE REL3.                       "uploading rel 3&lt;/P&gt;&lt;P&gt;        WHEN 'X'.&lt;/P&gt;&lt;P&gt;          SHIFT S1-TXT+8 RIGHT BY 32 PLACES.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MOVE S1-TXT TO DTXT.&lt;/P&gt;&lt;P&gt;      MOVE-CORRESPONDING DTXT TO D021T.&lt;/P&gt;&lt;P&gt;      CASE MAIN.&lt;/P&gt;&lt;P&gt;        WHEN 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        write repid to d021t-prog.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          WRITE R1-NAME TO D021T-PROG.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;          IF REL3 =  'X'.&lt;/P&gt;&lt;P&gt;            WRITE S1-TXT(8) TO D021T-PROG.&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            WRITE S1-TXT(40) TO D021T-PROG.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      MODIFY D021T.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  Store re-constructed component of ABAP back on to the library */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  Note that any attribute found has already been stored back    */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;  on TRDIR.                                                     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM STORE_COMPONENT.&lt;/P&gt;&lt;P&gt;  CASE OLD-FUNC.                       "ABAP source.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Store ABAP source code back into the library               */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;    WHEN '????SRCE'.&lt;/P&gt;&lt;P&gt;      CASE MAIN.&lt;/P&gt;&lt;P&gt;        WHEN 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          insert report repid from s.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          INSERT REPORT R1-NAME FROM S.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;          INSERT REPORT R-NAME FROM S.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      REFRESH S.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;     Store ABAP Text Elements Back into Library                 */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;    WHEN '????TEXT'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CLEAR: U.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     MOVE: S-TXT(1) TO U-ID,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           S-TXT+1(8) TO U-KEY,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           S-TXT+9(171) TO U-ENTRY.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     CONDENSE U-ENTRY.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      CASE MAIN.&lt;/P&gt;&lt;P&gt;        WHEN 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          insert textpool repid from u language  sy-langu.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          INSERT TEXTPOOL R1-NAME FROM U LANGUAGE  SY-LANGU.&lt;/P&gt;&lt;P&gt;        WHEN OTHERS.&lt;/P&gt;&lt;P&gt;          INSERT TEXTPOOL R-NAME FROM U LANGUAGE  SY-LANGU.&lt;/P&gt;&lt;P&gt;      ENDCASE.&lt;/P&gt;&lt;P&gt;      REFRESH U.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;             Update Attributes                                  */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UPDATE_TRDIR.&lt;/P&gt;&lt;P&gt;  MOVE-CORRESPONDING DIR TO TRDIR.&lt;/P&gt;&lt;P&gt;  MODIFY TRDIR.&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM TADIR&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 = TRDIR-NAME.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;    MOVE 'R3TR' TO TADIR-PGMID.&lt;/P&gt;&lt;P&gt;    MOVE 'PROG' TO TADIR-OBJECT.&lt;/P&gt;&lt;P&gt;    MOVE TRDIR-NAME TO TADIR-OBJ_NAME.&lt;/P&gt;&lt;P&gt;    MOVE '$TMP' TO TADIR-DEVCLASS.&lt;/P&gt;&lt;P&gt;    MOVE 'L' TO TADIR-CPROJECT.&lt;/P&gt;&lt;P&gt;    MOVE SY-LANGU TO TADIR-MASTERLANG.&lt;/P&gt;&lt;P&gt;    MOVE SY-SYSID TO TADIR-SRCSYSTEM.&lt;/P&gt;&lt;P&gt;    INSERT TADIR.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   re-build the  CUA, update the title table (if any entries   */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   exist) and update EUDB                                       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;   Finally generate the CUA                                     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM REBUILD-CUA.&lt;/P&gt;&lt;P&gt;  IF CUA-FLAG = 'Y'.&lt;/P&gt;&lt;P&gt;    PERFORM LOAD_CUA USING R-NAME SY-LANGU.&lt;/P&gt;&lt;P&gt;    MOVE SY-LANGU TO TITLE-DDLANGUAGE.&lt;/P&gt;&lt;P&gt;    MOVE R-NAME TO TITLE-PROGNAME.&lt;/P&gt;&lt;P&gt;    CASE REL3.&lt;/P&gt;&lt;P&gt;      WHEN 'X'.&lt;/P&gt;&lt;P&gt;        LOOP AT TIT.&lt;/P&gt;&lt;P&gt;          MOVE-CORRESPONDING TIT TO TITLE.&lt;/P&gt;&lt;P&gt;          MODIFY TITLE.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;    MOVE 'N' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;          Load the CUA                                          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM LOAD_CUA USING PROGRAM LANGUAGE.&lt;/P&gt;&lt;P&gt;  EU_KEY-NAME  = PROGRAM.&lt;/P&gt;&lt;P&gt;  EU_KEY-SPRSL = LANGUAGE.&lt;/P&gt;&lt;P&gt;  EU_KEY-SPRSL = 'D'.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  DELETE FROM EUDB WHERE RELID = 'CU'&lt;/P&gt;&lt;P&gt;                       AND   NAME  = PROGRAM.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;create new EUDB table entry&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CLEAR EUDB.&lt;/P&gt;&lt;P&gt;  EUDB-LANGU = 'D'.&lt;/P&gt;&lt;P&gt;  EUDB-AUTOR = SY-UNAME.&lt;/P&gt;&lt;P&gt;  EUDB-DATUM = SY-DATUM.&lt;/P&gt;&lt;P&gt;  EUDB-ZEIT  = SY-UZEIT.&lt;/P&gt;&lt;P&gt;  EUDB-RELID = 'CU'.&lt;/P&gt;&lt;P&gt;  EUDB-SRTF2 = 0.&lt;/P&gt;&lt;P&gt;  EUDB-NAME  = R-NAME.&lt;/P&gt;&lt;P&gt;  EUDB-VAUTOR = SY-UNAME.&lt;/P&gt;&lt;P&gt;  EUDB-VDATUM = SY-DATUM.&lt;/P&gt;&lt;P&gt;  EUDB-VZEIT  = SY-UZEIT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;insert into table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  INSERT EUDB.&lt;/P&gt;&lt;P&gt;  CASE REL3.&lt;/P&gt;&lt;P&gt;    WHEN 'X'.&lt;/P&gt;&lt;P&gt;      PERFORM TEXTNR.&lt;/P&gt;&lt;P&gt;      SORT OLD_MTX.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXPORT STA STX FUN MEN MTX ACT BUT PFK SET INC LAST DOC    "rel 2.2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      EXPORT STA  FROM OLD_STA&lt;/P&gt;&lt;P&gt;             FUN  FROM OLD_FUN&lt;/P&gt;&lt;P&gt;             MEN  FROM OLD_MEN&lt;/P&gt;&lt;P&gt;             MTX  FROM OLD_MTX&lt;/P&gt;&lt;P&gt;             ACT  FROM OLD_ACT&lt;/P&gt;&lt;P&gt;             BUT  FROM OLD_BUT&lt;/P&gt;&lt;P&gt;             PFK  FROM OLD_PFK&lt;/P&gt;&lt;P&gt;             SET  FROM OLD_SET&lt;/P&gt;&lt;P&gt;             DOC  FROM OLD_DOC&lt;/P&gt;&lt;P&gt;             TIT  FROM OLD_TIT&lt;/P&gt;&lt;P&gt;              STX&lt;/P&gt;&lt;P&gt;              LAST&lt;/P&gt;&lt;P&gt;              INC&lt;/P&gt;&lt;P&gt;              ATT FDN MDN SYM FIN      "rel 3.0&lt;/P&gt;&lt;P&gt;             TO DATABASE EUDB(CU) ID EU_KEY.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;REL 4.0 converts old CUA (3.1 and lower) to rel 4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;    WHEN SPACE.&lt;/P&gt;&lt;P&gt;      SORT MTX.&lt;/P&gt;&lt;P&gt;      EXPORT STA FUN MEN MTX ACT BUT PFK SET DOC&lt;/P&gt;&lt;P&gt;             TO DATABASE EUDB(CU) ID EU_KEY.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;only entry with sprsl = D allowed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  DELETE FROM EUDB WHERE RELID = 'CU'&lt;/P&gt;&lt;P&gt;       AND NAME = PROGRAM&lt;/P&gt;&lt;P&gt;       AND SPRSL  = ' '.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set release in EUDB to ver 4.0 if appropriate. Rel 3.1G and earlier&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;will be handled and converted by the system&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  IF REL3 = ' '.&lt;/P&gt;&lt;P&gt;    SELECT * FROM EUDB WHERE RELID = 'CU'&lt;/P&gt;&lt;P&gt;         AND NAME = PROGRAM&lt;/P&gt;&lt;P&gt;         AND SPRSL  = 'D'.&lt;/P&gt;&lt;P&gt;      MOVE '000040' TO EUDB-VERSION.&lt;/P&gt;&lt;P&gt;      UPDATE EUDB.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    SELECT * FROM EUDB WHERE RELID = 'CU'&lt;/P&gt;&lt;P&gt;         AND NAME = PROGRAM&lt;/P&gt;&lt;P&gt;         AND SPRSL  = 'D'.&lt;/P&gt;&lt;P&gt;      MOVE ' ' TO EUDB-VERSION.&lt;/P&gt;&lt;P&gt;      UPDATE EUDB.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  LOOP AT FTX.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING FTX TO RSMPTEXTS.&lt;/P&gt;&lt;P&gt;    CASE MAIN.&lt;/P&gt;&lt;P&gt;      WHEN 'Y'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; move repid to rsmptexts-progname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        MOVE R1-NAME TO RSMPTEXTS-PROGNAME.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;    MODIFY RSMPTEXTS.&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;  call transaction se41 to generate the user interface&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  REFRESH T_BDC_TAB.&lt;/P&gt;&lt;P&gt;  PERFORM BLD_DYNPRO USING:&lt;/P&gt;&lt;P&gt;         'X' 'SAPMSMPE' '100',&lt;/P&gt;&lt;P&gt;         ' ' 'RSMPE-PROGRAM' PROGRAM,&lt;/P&gt;&lt;P&gt;         ' ' 'RSMPE-B_STATEXT' 'X',&lt;/P&gt;&lt;P&gt;         ' ' 'BDC_OKCODE ' 'CHNG'.&lt;/P&gt;&lt;P&gt;  PERFORM BLD_DYNPRO USING:&lt;/P&gt;&lt;P&gt;         'X' 'SAPMSSY0' '120',&lt;/P&gt;&lt;P&gt;         ' ' 'BDC_OKCODE ' 'GENR'.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  PERFORM BLD_DYNPRO USING:&lt;/P&gt;&lt;P&gt;         'X' 'SAPMSSY0' '120',&lt;/P&gt;&lt;P&gt;         ' ' 'BDC_OKCODE ' '/3'.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  PERFORM BLD_DYNPRO USING:&lt;/P&gt;&lt;P&gt;         'X' 'SAPMSMPE' '100',&lt;/P&gt;&lt;P&gt;         ' ' 'RSMPE-PROGRAM' PROGRAM,&lt;/P&gt;&lt;P&gt;         ' ' 'RSMPE-B_STATEXT' 'X',&lt;/P&gt;&lt;P&gt;         ' ' 'BDC_OKCODE ' '/3'.&lt;/P&gt;&lt;P&gt;  CALL TRANSACTION 'SE41'&lt;/P&gt;&lt;P&gt;               USING T_BDC_TAB&lt;/P&gt;&lt;P&gt;               MODE 'E'&lt;/P&gt;&lt;P&gt;               UPDATE 'S'&lt;/P&gt;&lt;P&gt;               MESSAGES INTO T_MESSTAB.&lt;/P&gt;&lt;P&gt;  CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;    WHEN 0.&lt;/P&gt;&lt;P&gt;    WHEN OTHERS.&lt;/P&gt;&lt;P&gt;     WRITE: / 'Warning ---CUA for', PROGRAM, 'incorrect. RC=', SY-SUBRC.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  MOVE 'N' TO CUA-FLAG.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;           Handle CUA texts                                     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM TEXTNR.&lt;/P&gt;&lt;P&gt;  DATA: NO TYPE I.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;rel 3.1 and earlier&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  LOOP AT OLD_MTX.&lt;/P&gt;&lt;P&gt;    CHECK OLD_MTX-TEXTNR NE OLD_MTX-CODE.&lt;/P&gt;&lt;P&gt;    OLD_MTX-TEXTNR = OLD_MTX-CODE.&lt;/P&gt;&lt;P&gt;    MODIFY OLD_MTX.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  LOOP AT OLD_FUN.&lt;/P&gt;&lt;P&gt;    CHECK OLD_FUN-TEXTNR = SPACE.&lt;/P&gt;&lt;P&gt;    IF OLD_FUN-NO = '01' AND OLD_FUN-CODE CN '&amp;gt;0123456789'.&lt;/P&gt;&lt;P&gt;      OLD_FUN-TEXTNR = OLD_FUN-CODE.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      NO = LAST-TEXTNR + 1.&lt;/P&gt;&lt;P&gt;      UNPACK NO TO LAST-TEXTNR.&lt;/P&gt;&lt;P&gt;      OLD_FUN-TEXTNR = LAST-TEXTNR.&lt;/P&gt;&lt;P&gt;      OLD_FUN-TEXTNR(1) = '&amp;gt;'.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    MODIFY OLD_FUN.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;           Build data for BDC table (Call transaction SE41)     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM BLD_DYNPRO USING PU_DYNBEGIN TYPE ANY&lt;/P&gt;&lt;P&gt;                       PU_NAME     TYPE ANY&lt;/P&gt;&lt;P&gt;                       PU_VALUE    TYPE ANY.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CLEAR T_BDC_TAB.&lt;/P&gt;&lt;P&gt;  IF PU_DYNBEGIN = 'X'.&lt;/P&gt;&lt;P&gt;    MOVE: PU_DYNBEGIN TO T_BDC_TAB-DYNBEGIN,&lt;/P&gt;&lt;P&gt;          PU_NAME     TO T_BDC_TAB-PROGRAM,&lt;/P&gt;&lt;P&gt;          PU_VALUE    TO T_BDC_TAB-DYNPRO.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    MOVE: PU_NAME     TO T_BDC_TAB-FNAM,&lt;/P&gt;&lt;P&gt;          PU_VALUE    TO T_BDC_TAB-FVAL.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  APPEND T_BDC_TAB.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  To get path and file name via F4 or mouse click use a call to&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Windows via WS_FILENAME_GET.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Restriction is that a File must be selected to return any data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Program chops off the file name when a path is wanted so the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  function can also be used to find the path on upload.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Any valid file name can then be entered&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;  Note also that if a mouse click is done on program then the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  path is copied as well.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN&lt;/P&gt;&lt;P&gt;  ON VALUE-REQUEST FOR PATH.&lt;/P&gt;&lt;P&gt;  CLS I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  PERFORM QUERY_FILENAME USING T_FILENAME T_MODE.&lt;/P&gt;&lt;P&gt;  MOVE 'PATH' TO I_DYNPFIELDS-FIELDNAME.&lt;/P&gt;&lt;P&gt;  MOVE PATH TO I_DYNPFIELDS-FIELDVALUE.&lt;/P&gt;&lt;P&gt;  MOVE 0 TO I_DYNPFIELDS-STEPL.&lt;/P&gt;&lt;P&gt;  APPEND I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  PERFORM UPDATE_SEL_SCREEN.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN&lt;/P&gt;&lt;P&gt;  ON VALUE-REQUEST FOR REPID-LOW.&lt;/P&gt;&lt;P&gt;  PERFORM QUERY_FILENAME USING T_FILENAME T_MODE.&lt;/P&gt;&lt;P&gt;  CLS I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  MOVE 'REPID-LOW' TO I_DYNPFIELDS-FIELDNAME.&lt;/P&gt;&lt;P&gt;  MOVE REPID-LOW TO I_DYNPFIELDS-FIELDVALUE.&lt;/P&gt;&lt;P&gt;  MOVE 0 TO I_DYNPFIELDS-STEPL.&lt;/P&gt;&lt;P&gt;  APPEND I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  MOVE 'PATH' TO I_DYNPFIELDS-FIELDNAME.&lt;/P&gt;&lt;P&gt;  MOVE PATH TO I_DYNPFIELDS-FIELDVALUE.&lt;/P&gt;&lt;P&gt;  MOVE 0 TO I_DYNPFIELDS-STEPL.&lt;/P&gt;&lt;P&gt;  APPEND I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  PERFORM UPDATE_SEL_SCREEN.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN&lt;/P&gt;&lt;P&gt;  ON VALUE-REQUEST FOR REPID-HIGH.&lt;/P&gt;&lt;P&gt;  PERFORM QUERY_FILENAME USING T_FILENAME T_MODE.&lt;/P&gt;&lt;P&gt;  CLS I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  MOVE 'REPID-HIGH' TO I_DYNPFIELDS-FIELDNAME.&lt;/P&gt;&lt;P&gt;  MOVE REPID-HIGH TO I_DYNPFIELDS-FIELDVALUE.&lt;/P&gt;&lt;P&gt;  MOVE 0 TO I_DYNPFIELDS-STEPL.&lt;/P&gt;&lt;P&gt;  APPEND I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  MOVE 'PATH' TO I_DYNPFIELDS-FIELDNAME.&lt;/P&gt;&lt;P&gt;  MOVE PATH TO I_DYNPFIELDS-FIELDVALUE.&lt;/P&gt;&lt;P&gt;  MOVE 0 TO I_DYNPFIELDS-STEPL.&lt;/P&gt;&lt;P&gt;  APPEND I_DYNPFIELDS.&lt;/P&gt;&lt;P&gt;  PERFORM UPDATE_SEL_SCREEN.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;           Get file names (Windows)                            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM QUERY_FILENAME USING DEF_PATH LIKE T_FILENAME&lt;/P&gt;&lt;P&gt;                          MODE     TYPE C.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  DATA: TMP_FILENAME LIKE T_FILENAME.&lt;/P&gt;&lt;P&gt;  DATA: TMP_MASK LIKE GLOBAL_FILEMASK_ALL.&lt;/P&gt;&lt;P&gt;  FIELD-SYMBOLS: &amp;lt;TMP_SYM&amp;gt;.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build Filter for Fileselector&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  IF GLOBAL_FILEMASK_MASK IS INITIAL.&lt;/P&gt;&lt;P&gt;    TMP_MASK = ',&lt;STRONG&gt;.&lt;/STRONG&gt;,&lt;STRONG&gt;.&lt;/STRONG&gt;.'.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    TMP_MASK = ','.&lt;/P&gt;&lt;P&gt;    WRITE GLOBAL_FILEMASK_TEXT TO TMP_MASK+1.&lt;/P&gt;&lt;P&gt;    WRITE ',' TO TMP_MASK+21.&lt;/P&gt;&lt;P&gt;    WRITE GLOBAL_FILEMASK_MASK TO TMP_MASK+22.&lt;/P&gt;&lt;P&gt;    WRITE '.' TO TMP_MASK+42.&lt;/P&gt;&lt;P&gt;    CONDENSE TMP_MASK NO-GAPS.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  IF NOT GLOBAL_FILEMASK_ALL IS INITIAL.&lt;/P&gt;&lt;P&gt;    TMP_MASK = GLOBAL_FILEMASK_ALL.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  FIELDLN = STRLEN( DEF_PATH ) - 1.&lt;/P&gt;&lt;P&gt;  ASSIGN DEF_PATH+FIELDLN(1) TO &amp;lt;TMP_SYM&amp;gt;.&lt;/P&gt;&lt;P&gt;  IF &amp;lt;TMP_SYM&amp;gt; = '/' OR &amp;lt;TMP_SYM&amp;gt; = '\'.&lt;/P&gt;&lt;P&gt;    CLEAR &amp;lt;TMP_SYM&amp;gt;.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_FILENAME_GET'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            DEF_FILENAME     = T_FILENAME&lt;/P&gt;&lt;P&gt;            DEF_PATH         = DEF_PATH&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          MASK             = ',&lt;STRONG&gt;.&lt;/STRONG&gt;,&lt;STRONG&gt;.&lt;/STRONG&gt;.'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            MASK             = TMP_MASK&lt;/P&gt;&lt;P&gt;            MODE             = MODE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          TITLE            = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            FILENAME         = TMP_FILENAME&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        RC               =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            INV_WINSYS       = 01&lt;/P&gt;&lt;P&gt;            NO_BATCH         = 02&lt;/P&gt;&lt;P&gt;            SELECTION_CANCEL = 03&lt;/P&gt;&lt;P&gt;            SELECTION_ERROR  = 04.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;    WHEN 3.                            "User has cancelled selection.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;  T_FILENAME = TMP_FILENAME.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Try and get path name.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  FIELDLN = STRLEN( T_FILENAME ).&lt;/P&gt;&lt;P&gt;  L =  FIELDLN - 1.&lt;/P&gt;&lt;P&gt;  ASSIGN  T_FILENAME+L(1) TO &amp;lt;TMP_SYM&amp;gt;.&lt;/P&gt;&lt;P&gt;  WHILE &amp;lt;TMP_SYM&amp;gt; NE '\'.&lt;/P&gt;&lt;P&gt;    L = L - 1.&lt;/P&gt;&lt;P&gt;    ASSIGN  T_FILENAME+L(1) TO &amp;lt;TMP_SYM&amp;gt;.&lt;/P&gt;&lt;P&gt;  ENDWHILE.&lt;/P&gt;&lt;P&gt;  L = L + 1.&lt;/P&gt;&lt;P&gt;  ASSIGN T_FILENAME(L) TO &amp;lt;TMP_SYM&amp;gt;.&lt;/P&gt;&lt;P&gt;  WRITE &amp;lt;TMP_SYM&amp;gt; TO PATH.&lt;/P&gt;&lt;P&gt;  I = FIELDLN - L - 4.&lt;/P&gt;&lt;P&gt;  SEARCH T_FILENAME FOR ' '.&lt;/P&gt;&lt;P&gt;  ASSIGN T_FILENAME+L(I) TO &amp;lt;TMP_SYM&amp;gt;.&lt;/P&gt;&lt;P&gt;  WRITE &amp;lt;TMP_SYM&amp;gt; TO REPID-LOW.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;      Update screen fields with value selected from table       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;FORM UPDATE_SEL_SCREEN.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'DYNP_VALUES_UPDATE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            DYNAME                 = SY-CPROG&lt;/P&gt;&lt;P&gt;            DYNUMB                 = SY-DYNNR&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            DYNPFIELDS             = I_DYNPFIELDS&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            INVALID_ABAPWORKAREA   = 1&lt;/P&gt;&lt;P&gt;            INVALID_DYNPROFIELD    = 2&lt;/P&gt;&lt;P&gt;            INVALID_DYNPRONAME     = 3&lt;/P&gt;&lt;P&gt;            INVALID_DYNPROW_NUMMER = 4&lt;/P&gt;&lt;P&gt;            INVALID_REQUEST        = 5&lt;/P&gt;&lt;P&gt;            NO_FIELDDESCRIPTION    = 6&lt;/P&gt;&lt;P&gt;            UNDEFIND_ERROR         = 7&lt;/P&gt;&lt;P&gt;            OTHERS                 = 8.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; fix selection so that for example ZAC* chhoses ALL progs&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; starting with ZAC.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM GET_RANGE_DL.&lt;/P&gt;&lt;P&gt;  SELECT * FROM TRDIR&lt;/P&gt;&lt;P&gt;    APPENDING CORRESPONDING FIELDS OF TABLE I_PROG&lt;/P&gt;&lt;P&gt;    WHERE NAME IN REPID.&lt;/P&gt;&lt;P&gt;  LOOP AT REPID.&lt;/P&gt;&lt;P&gt;    CASE REPID-OPTION.&lt;/P&gt;&lt;P&gt;      WHEN 'BT'.&lt;/P&gt;&lt;P&gt;        SEARCH REPID-HIGH FOR '.*.'.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;          TRANSLATE REPID-HIGH USING '*%'.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        IF REPID-SIGN = 'I'.&lt;/P&gt;&lt;P&gt;          SELECT * FROM TRDIR&lt;/P&gt;&lt;P&gt;          APPENDING CORRESPONDING FIELDS OF TABLE I_PROG&lt;/P&gt;&lt;P&gt;          WHERE NAME LIKE REPID-HIGH.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;get proper selection range for upload programs&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;e.g if you specify Z to ZZJ* you will get ALL&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;progs from Z to ZZJ* unlike the SAP BETWEEN clause.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM GET_RANGE_UL.&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROGT.&lt;/P&gt;&lt;P&gt;    IF I_PROGT-NAME IN REPID.&lt;/P&gt;&lt;P&gt;      I_PROG-NAME = I_PROGT-NAME.&lt;/P&gt;&lt;P&gt;      APPEND I_PROG.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  LOOP AT REPID.&lt;/P&gt;&lt;P&gt;    CASE REPID-OPTION.&lt;/P&gt;&lt;P&gt;      WHEN 'BT'.&lt;/P&gt;&lt;P&gt;        SEARCH REPID-HIGH FOR '.*.'.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;          TRANSLATE REPID-HIGH USING '*%'.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROGT.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;needs to be done like this owing to way the IN cluse is implemented&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT REPID.&lt;/P&gt;&lt;P&gt;      IF REPID-SIGN = 'I'&lt;/P&gt;&lt;P&gt;        AND REPID-OPTION = 'BT'.&lt;/P&gt;&lt;P&gt;        IF I_PROGT-NAME CP REPID-HIGH.&lt;/P&gt;&lt;P&gt;          I_PROG-NAME = I_PROGT-NAME.&lt;/P&gt;&lt;P&gt;          APPEND I_PROG.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; Build DOS batch file to read relevant directory             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; This might not work for W2K as native DOS is not            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; supported as such. The DIR command should work              */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; otherwise you will have to modify this code to call a       */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; Windows function to get a directory listing.                */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;FORM READ_DOS_DIRECTORY.&lt;/P&gt;&lt;P&gt;  MOVE 'ECHO Reading Disk directory - please wait' TO DOSDIR-TEXT.&lt;/P&gt;&lt;P&gt;  APPEND DOSDIR.&lt;/P&gt;&lt;P&gt;  MOVE 'C:\DIR.$$$' TO UL_FILE.&lt;/P&gt;&lt;P&gt;  MOVE 'C:\ABAP.BAT' TO DL_FILE.&lt;/P&gt;&lt;P&gt;  WRITE 'DIR' TO DOSLINE.&lt;/P&gt;&lt;P&gt;  WRITE PATH TO DOSLINE+4.&lt;/P&gt;&lt;P&gt;  WRITE '/B  &amp;gt; C:\DIR.$$$' TO DOSLINE+50.&lt;/P&gt;&lt;P&gt;  CONDENSE DOSLINE.&lt;/P&gt;&lt;P&gt;  MOVE DOSLINE TO DOSDIR-TEXT.&lt;/P&gt;&lt;P&gt;  APPEND DOSDIR.&lt;/P&gt;&lt;P&gt;  MOVE 'EXIT' TO DOSDIR-TEXT.&lt;/P&gt;&lt;P&gt;  APPEND DOSDIR.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; Download DOS batch file                                     */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;DATA: L_FILE TYPE STRING.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILENAME = DL_FILE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILETYPE = 'DAT'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           DATA_TAB = DOSDIR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;  MOVE DL_FILE TO L_FILE.&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    BIN_FILESIZE                    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      FILENAME                        = L_FILE&lt;/P&gt;&lt;P&gt;     FILETYPE                        = 'DAT'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    APPEND                          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WRITE_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    HEADER                          = '00'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TRUNC_TRAILING_BLANKS           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WRITE_LF                        = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    COL_SELECT                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    COL_SELECT_MASK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    DAT_MODE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    CONFIRM_OVERWRITE               = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    NO_AUTH_CHECK                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    CODEPAGE                        = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IGNORE_CERR                     = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    REPLACEMENT                     = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WRITE_BOM                       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    TRUNC_TRAILING_BLANKS_EOL       = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WK1_N_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WK1_N_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WK1_T_FORMAT                    = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    WK1_T_SIZE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FILELENGTH                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      DATA_TAB                        = DOSDIR&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FIELDNAMES                      =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;P&gt;     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;     OTHERS                          = 22.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; Execute it and pipe output to DIR.$$$ on C drive            */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'WS_EXECUTE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            COMMANDLINE = DL_FILE&lt;/P&gt;&lt;P&gt;            INFORM      = 'X'          "// synchronous&lt;/P&gt;&lt;P&gt;            PROGRAM     = 'C:\ABAP.BAT'.&lt;/P&gt;&lt;P&gt;  REFRESH DOSDIR.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; Upload directory listing to SAP                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILENAME = UL_FILE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           FILETYPE = 'DAT'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           DATA_TAB = DOSDIR.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CLEAR: L_FILE.&lt;/P&gt;&lt;P&gt;  MOVE UL_FILE TO L_FILE.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'GUI_UPLOAD'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      FILENAME                      = L_FILE&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FILETYPE                      = 'DAT'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    HAS_FIELD_SEPARATOR           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    HEADER_LENGTH                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    READ_BY_LINE                  = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    DAT_MODE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    CODEPAGE                      = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IGNORE_CERR                   = ABAP_TRUE&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    REPLACEMENT                   = '#'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    CHECK_BOM                     = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    FILELENGTH                    =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    HEADER                        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      DATA_TAB                      = DOSDIR&lt;/P&gt;&lt;P&gt;   EXCEPTIONS&lt;/P&gt;&lt;P&gt;     FILE_OPEN_ERROR               = 1&lt;/P&gt;&lt;P&gt;     FILE_READ_ERROR               = 2&lt;/P&gt;&lt;P&gt;     NO_BATCH                      = 3&lt;/P&gt;&lt;P&gt;     GUI_REFUSE_FILETRANSFER       = 4&lt;/P&gt;&lt;P&gt;     INVALID_TYPE                  = 5&lt;/P&gt;&lt;P&gt;     NO_AUTHORITY                  = 6&lt;/P&gt;&lt;P&gt;     UNKNOWN_ERROR                 = 7&lt;/P&gt;&lt;P&gt;     BAD_DATA_FORMAT               = 8&lt;/P&gt;&lt;P&gt;     HEADER_NOT_ALLOWED            = 9&lt;/P&gt;&lt;P&gt;     SEPARATOR_NOT_ALLOWED         = 10&lt;/P&gt;&lt;P&gt;     HEADER_TOO_LONG               = 11&lt;/P&gt;&lt;P&gt;     UNKNOWN_DP_ERROR              = 12&lt;/P&gt;&lt;P&gt;     ACCESS_DENIED                 = 13&lt;/P&gt;&lt;P&gt;     DP_OUT_OF_MEMORY              = 14&lt;/P&gt;&lt;P&gt;     DISK_FULL                     = 15&lt;/P&gt;&lt;P&gt;     DP_TIMEOUT                    = 16&lt;/P&gt;&lt;P&gt;     OTHERS                        = 17.&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;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;  LOOP AT DOSDIR.&lt;/P&gt;&lt;P&gt;    SEARCH DOSDIR-TEXT FOR '.EEE '.&lt;/P&gt;&lt;P&gt;    CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;      WHEN 0.&lt;/P&gt;&lt;P&gt;        ASSIGN DOSDIR-TEXT(SY-FDPOS) TO &amp;lt;F&amp;gt;.&lt;/P&gt;&lt;P&gt;        I_PROGT-NAME = &amp;lt;F&amp;gt;.&lt;/P&gt;&lt;P&gt;        APPEND I_PROGT.&lt;/P&gt;&lt;P&gt;      WHEN OTHERS.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; Get Include programs for upload via function module.        */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;FORM GET_INCLUDES_DL.&lt;/P&gt;&lt;P&gt;  REFRESH I_INCL.&lt;/P&gt;&lt;P&gt;  LOOP AT I_PROG.&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_GET_ALL_INCLUDES'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              PROGRAM             = I_PROG-NAME&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH_INACTIVE_INCLS = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;              INCLUDETAB          =  I_INCL&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              NOT_EXISTENT        = 1&lt;/P&gt;&lt;P&gt;              NO_PROGRAM          = 2&lt;/P&gt;&lt;P&gt;              OTHERS              = 3.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if function pool (SAPLxxxx) then always need the&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SAP generated include LxxxUXX  as well.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;    IF I_PROG(4) = 'SAPL'.             "Function Pool&lt;/P&gt;&lt;P&gt;      ASSIGN I_PROG-NAME+3(37) TO &amp;lt;F&amp;gt;.&lt;/P&gt;&lt;P&gt;      CONCATENATE &amp;lt;F&amp;gt; 'UXX' INTO I_INCL-NAME.&lt;/P&gt;&lt;P&gt;      APPEND I_INCL.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    LOOP AT I_INCL.&lt;/P&gt;&lt;P&gt;      SEARCH IMASK FOR '.*.'.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;        CONDENSE IMASK.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      IF ( I_INCL-NAME CP IMASK OR IMASK EQ ' ' ).&lt;/P&gt;&lt;P&gt;        READ TABLE I_INCLUDE WITH KEY NAME = I_INCL-NAME.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;          MOVE I_INCL-NAME TO I_INCLUDE-NAME.&lt;/P&gt;&lt;P&gt;          APPEND I_INCLUDE.&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;    REFRESH I_INCL.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt; Handle Include programs (download)                          */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;                                                             */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;FORM PROCESS_INCLUDES_DL.&lt;/P&gt;&lt;P&gt;  LOOP AT I_INCLUDE.     "Now handle all included programs found&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check included program has not already been down / up loaded&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check on download if INCLUDE program exists in Library&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;check on UPLOAD if INCLUDE exists in the directory&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;    READ TABLE I_PROG WITH KEY NAME = I_INCLUDE-NAME.&lt;/P&gt;&lt;P&gt;    CASE SY-SUBRC.&lt;/P&gt;&lt;P&gt;      WHEN 4.                          "Program not yet handled.&lt;/P&gt;&lt;P&gt;        SELECT SINGLE * FROM TRDIR&lt;/P&gt;&lt;P&gt;         WHERE NAME = I_INCLUDE-NAME.&lt;/P&gt;&lt;P&gt;        IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;          MOVE I_INCLUDE-NAME TO R1-NAME.&lt;/P&gt;&lt;P&gt;          MOVE 'Y' TO I_INCLUDE-HANDLED.&lt;/P&gt;&lt;P&gt;          MODIFY I_INCLUDE.&lt;/P&gt;&lt;P&gt;          APPEND R1.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE R1 LINES I.&lt;/P&gt;&lt;P&gt;    WHILE I NE 0.                                           "&lt;/P&gt;&lt;P&gt;      PERFORM EXECUTE-FUNCTION.&lt;/P&gt;&lt;P&gt;    ENDWHILE.&lt;/P&gt;&lt;P&gt;    REFRESH R1.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Look for Includes in uploaded programs or on download&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when handling INCLUDE programs themselves&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM PROCESS_INCLUDES_UL.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  LOOP AT I_INCL.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;is included file in the directory&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;The mask (e..g Z*) will have already been checked by the scan&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;process.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF FUNC = 'D'.&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM TRDIR WHERE NAME = I_INCL-NAME.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    IF FUNC = 'U'.&lt;/P&gt;&lt;P&gt;      READ TABLE I_PROGT WITH KEY NAME = I_INCL-NAME.&lt;/P&gt;&lt;P&gt;    ENDIF.&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; check if the include has already been processed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      READ TABLE I_INCLUDE WITH KEY NAME = I_INCL-NAME.&lt;/P&gt;&lt;P&gt;      IF SY-SUBRC = 4.&lt;/P&gt;&lt;P&gt;        MOVE I_INCL-NAME TO I_INCLUDE-NAME.&lt;/P&gt;&lt;P&gt;        MOVE ' ' TO I_INCLUDE-HANDLED.&lt;/P&gt;&lt;P&gt;        APPEND I_INCLUDE.&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;  REFRESH I_INCL.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; scan through included table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;FORM LOOP_THROUGH.&lt;/P&gt;&lt;P&gt;  LOOP AT I_INCLUDE      "Now handle all included programs found&lt;/P&gt;&lt;P&gt;        WHERE HANDLED = ' '.&lt;/P&gt;&lt;P&gt;    MOVE I_INCLUDE-NAME TO R1-NAME.&lt;/P&gt;&lt;P&gt;    APPEND R1.&lt;/P&gt;&lt;P&gt;    MOVE 'Y' TO I_INCLUDE-HANDLED.&lt;/P&gt;&lt;P&gt;    MODIFY I_INCLUDE.&lt;/P&gt;&lt;P&gt;    DESCRIBE TABLE R1 LINES I.&lt;/P&gt;&lt;P&gt;    WHILE I NE 0.                                           "&lt;/P&gt;&lt;P&gt;      PERFORM EXECUTE-FUNCTION.&lt;/P&gt;&lt;P&gt;    ENDWHILE.&lt;/P&gt;&lt;P&gt;    REFRESH R1.&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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;Reward points if this helps.&lt;/P&gt;&lt;P&gt;Manish&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 07 Nov 2007 12:27:54 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/download-modulepool-program/m-p/3013550#M712146</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-07T12:27:54Z</dc:date>
    </item>
  </channel>
</rss>

