<?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 hi experts in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/hi-experts/m-p/3373624#M810064</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;how to download sap module pool programs to our local system at a time .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 24 Jan 2008 05:23:31 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-01-24T05:23:31Z</dc:date>
    <item>
      <title>hi experts</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/hi-experts/m-p/3373624#M810064</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;how to download sap module pool programs to our local system at a time .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2008 05:23:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/hi-experts/m-p/3373624#M810064</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-24T05:23:31Z</dc:date>
    </item>
    <item>
      <title>Re: hi experts</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/hi-experts/m-p/3373625#M810065</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it will help you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Reward if help.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : LV_FNAME TYPE STRING.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;select * from vbap into table itab.&lt;/P&gt;&lt;P&gt;LV_FNAME = 'c:\testfile.csv'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-- Download the Error Records into a File.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;CALL FUNCTION 'GUI_DOWNLOAD'&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = LV_FNAME&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = I_tab&lt;/P&gt;&lt;P&gt;EXCEPTIONS&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;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;P&gt;WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pls refer:&lt;/P&gt;&lt;P&gt;&lt;A href="https://forums.sdn.sap.com/click.jspa?searchID=4274284&amp;amp;messageID=1658915" target="test_blank"&gt;https://forums.sdn.sap.com/click.jspa?searchID=4274284&amp;amp;messageID=1658915&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2008 05:26:18 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/hi-experts/m-p/3373625#M810065</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-24T05:26:18Z</dc:date>
    </item>
    <item>
      <title>Re: hi experts</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/hi-experts/m-p/3373626#M810066</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;code&lt;/P&gt;&lt;P&gt;PROGRAM ZDOWNLOAD_SAP&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;P&gt;&lt;/P&gt;&lt;P&gt;This program up / downloads from / to a local dataset &lt;/P&gt;&lt;P&gt;all the components of an ABAP - i.e TEXTS, the entire CUA &lt;/P&gt;&lt;P&gt;including statuses and menus, DYNPROS and source code. &lt;/P&gt;&lt;P&gt;Program documentation and variants are not handled. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INCLUDED programs are automatically handled both on upload &lt;/P&gt;&lt;P&gt;or download. INCLUDE selection can be excluded or generic &lt;/P&gt;&lt;P&gt;e.g only handle INCLUDES starting with ZIN* &lt;/P&gt;&lt;P&gt;INCLUDES within INCLUDES alos handled. &lt;/P&gt;&lt;P&gt;The only restriction is on UPLOAD the INCLUDED programs must come &lt;/P&gt;&lt;P&gt;from the same directory as the main program. &lt;/P&gt;&lt;P&gt;On Download of course the ABAP must exist in the library. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note for LINUX and BATCH users &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This program was originally designed as a one off tool for &lt;/P&gt;&lt;P&gt;getting ABAPS etc from a SAP R2 (IBM MVS mainframe system) into &lt;/P&gt;&lt;P&gt;an R3 test system minimising the need for a large amount of &lt;/P&gt;&lt;P&gt;mainframe sysprogs (anybody remember what they were !!) time &lt;/P&gt;&lt;P&gt;and support to say nothing of access problems from TSO /JES2 / &lt;/P&gt;&lt;P&gt;SAP R2. At that time network connections were patchy and the &lt;/P&gt;&lt;P&gt;transport systems largely incompatable and not very reliable. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This program was originally designed as a one off tool for &lt;/P&gt;&lt;P&gt;Must run on Windows front end -&lt;/P&gt;&lt;HR originaltext="---" /&gt;&lt;P&gt; If you are running SAP with &lt;/P&gt;&lt;P&gt;LINUX on your work station you will have to change the WS_UPLOAD &lt;/P&gt;&lt;P&gt;and WS_DOWNLOAD functions to reflect the Linux file system. The &lt;/P&gt;&lt;P&gt;contents of the data sets themseleves do not need to be changed &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Program can easily be modified to run in batch and store &lt;/P&gt;&lt;P&gt;the data on a UNIX host. Change the WS_UPLOAD and WS_DOWNLOAD &lt;/P&gt;&lt;P&gt;to read from and write to UNIX data sets (OPEN FILE etc). &lt;/P&gt;&lt;P&gt;You will also need to modify the parts of the program that get &lt;/P&gt;&lt;P&gt;the DOS directory and display the Windows file paths. &lt;/P&gt;&lt;P&gt;The actual abap data sets do not need to be changed. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rel 4.0 names can now be up to 40 bytes long &lt;/P&gt;&lt;P&gt;Dynpros and CUA have changed from rel 3.1 &lt;/P&gt;&lt;P&gt;Tabstrips now loaded and unloaded in dynpros &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please note restriction on 4.6 systems for users who &lt;/P&gt;&lt;P&gt;have ABAP names which include '/'s in their names. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rel 4.6b, 4.6c Abap names can include the '/' in their names &lt;/P&gt;&lt;P&gt;e.g /CUST1/CUST2/ORDER &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This causes problems when storing to a local file. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;a solution is to change the name to %CUST1%CUST2%ORDER i.e / will &lt;/P&gt;&lt;P&gt;be changed to %. On upload the % should be changed back to / &lt;/P&gt;&lt;P&gt;again. This change still needs to be implemented. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you don't use the / in the abap name then this is not a problem. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If file to be uploaded is in rel 3 format then names are only 8 &lt;/P&gt;&lt;P&gt;bytes long. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;program uses 3 datasets per abap &lt;/P&gt;&lt;P&gt;1) abapname.eee source, dynpr logic, texts, CUA stuff &lt;/P&gt;&lt;P&gt;2) abapname.hhh dynpr header &lt;/P&gt;&lt;P&gt;3) abapname.fff dynpro fields. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;because of varying lengths and contents 3 data sets are used. The &lt;/P&gt;&lt;P&gt;complexity of combining all these to 1 data set would make the &lt;/P&gt;&lt;P&gt;program far too complex. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: This version of the program can only be used on &lt;/P&gt;&lt;P&gt;release 4.0 or higher. Once an ABAP has been converted &lt;/P&gt;&lt;P&gt;to rel 4.0 it cannot be converted back to rel 3.0 &lt;/P&gt;&lt;P&gt;on a release 3/3.1 system. Release 4 CUA tables &lt;/P&gt;&lt;P&gt;are different. Use release 3 version of this program &lt;/P&gt;&lt;P&gt;for releases 3.0 and 3.1. Available on SAPFANS website. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that data to be uploaded must have been previously downloaded &lt;/P&gt;&lt;P&gt;by this program (any version since rel 2.0) - except for Initial &lt;/P&gt;&lt;P&gt;Load -- see end of these comments. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dynpros and CUA statuses have changed since rel 3.1 &lt;/P&gt;&lt;P&gt;This program will handle rel 3.1 format on upload but will &lt;/P&gt;&lt;P&gt;download in rel 4.0 format. To upload 3.1 format specify an 'X' &lt;/P&gt;&lt;P&gt;in the rel3 parameter. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have downloaded components in rel 4.0 format and you &lt;/P&gt;&lt;P&gt;want to re-load to a 3.1 system you will have to load &lt;/P&gt;&lt;P&gt;the source via standard upload and re-create dynpros and the CUA &lt;/P&gt;&lt;P&gt;manually. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As names can now be longer than 8 characters you can only &lt;/P&gt;&lt;P&gt;use this program if the SAP front end (SAPGUI) supports &lt;/P&gt;&lt;P&gt;long file names (WIN 95/98 or WIN NT). Windows 3.x will not &lt;/P&gt;&lt;P&gt;work as the underlying DOS system cannot handle long file names. &lt;/P&gt;&lt;P&gt;UPLOAD function and DOS directory. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When an ABAP is selected for UPLOAD then the DOS &lt;/P&gt;&lt;P&gt;directory is read into a table. A file called ABAP.BAT is created, &lt;/P&gt;&lt;P&gt;and down loaded to the 'C' drive and executed. &lt;/P&gt;&lt;P&gt;This file executes a DOS DIR command and pipes the output &lt;/P&gt;&lt;P&gt;into a dataset which is then uploaded into an internal &lt;/P&gt;&lt;P&gt;table on SAP. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note on running DOS commands from ABAP &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The first time this procedure is executed you will see a DOS window &lt;/P&gt;&lt;P&gt;which you will have to close manually. To get round this &lt;/P&gt;&lt;P&gt;use windows explorer to select the file ABAP.BAT and then &lt;/P&gt;&lt;P&gt;right mouse click on the file name. Select the &lt;/P&gt;&lt;P&gt;properties window. From this click the CLOSE on EXIT box. This &lt;/P&gt;&lt;P&gt;will then automatically close the DOS function after it has &lt;/P&gt;&lt;P&gt;executed. (Windows restriction). &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The DOS function has not been tested using Windows 2000 so &lt;/P&gt;&lt;P&gt;it might not work. OK on W95,W98,WME and Windows NT (No Thanks) &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If INCLUDE programs are wanted on UPLOAD only the specified &lt;/P&gt;&lt;P&gt;directory is searched. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead of entering path name manually you can click on &lt;/P&gt;&lt;P&gt;the path parameter. Because of Windows restriction you will &lt;/P&gt;&lt;P&gt;have to select ANY file in the relevant directory. &lt;/P&gt;&lt;P&gt;The path will then be copied on to the selection screen. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To do still : Merge 3 files to one and compress output to .ZIP file &lt;/P&gt;&lt;P&gt;fix 4.5 4.6 problem of abaps containing '/' in the name &lt;/P&gt;&lt;P&gt;possibility to automatically up / download referenced &lt;/P&gt;&lt;P&gt;function modules with selection criteria like INCLUDES &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To load the ist time into a system. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create program with ABAP editor and Upload the .EEE file. &lt;/P&gt;&lt;P&gt;Delete ist line (????SRCE) in the ABAP EDITOR --NOT THE DISK FILE &lt;/P&gt;&lt;P&gt;Delete all the source from the line that starts ????TEXT (towards &lt;/P&gt;&lt;P&gt;the end file) till the end so the last line in your source is ENDFORM. &lt;/P&gt;&lt;P&gt;DO NOT ALTER THE DISK FILE. DO THESE CHANGES IN THE ABAP EDITOR. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Save file and execute &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Use following parameters (Note the ist time you won't get proper &lt;/P&gt;&lt;P&gt;text on the selection screen). &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Function U &lt;/P&gt;&lt;P&gt;Path full dos path containing source e.g c:\abaps\ &lt;/P&gt;&lt;P&gt;NOTE YOU MUST ENTER THE FINAL \ as above. &lt;/P&gt;&lt;P&gt;REPID the program name. e.g ZZJIMHXX &lt;/P&gt;&lt;P&gt;note that on the DISK you will see 3 files &lt;/P&gt;&lt;P&gt;ZZJIMHXX.EEE, ZZJIMHXX.FFF, ZZJIMHXX.HHH &lt;/P&gt;&lt;P&gt;just use the name before the dos qualifier - the &lt;/P&gt;&lt;P&gt;program will do the rest &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ignore other parameters &lt;/P&gt;&lt;P&gt;The program will then load itself with all the texts etc. &lt;/P&gt;&lt;P&gt;It should now be ready for use. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Macros &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;end of macros &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ SAP standard tables */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Work tables to hold ABAP source etc, and dynpro */&lt;/P&gt;&lt;P&gt;/ contents. */&lt;/P&gt;&lt;P&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;DATA: BEGIN OF U OCCURS 100, "Text elements&lt;/P&gt;&lt;P&gt;TXT(180) TYPE C, " rel 4 was 132&lt;/P&gt;&lt;P&gt;END OF U.&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;/P&gt;&lt;P&gt;/ This data contains all the components of the */&lt;/P&gt;&lt;P&gt;/ CUA such as menus, statuses, Pfkeys */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ As from rel 4.5 Tabstrips are automatically copied as well */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ The rel3 parameter must be set however to load the */&lt;/P&gt;&lt;P&gt;/ correct version of the CUA tables if uploading rel 3 */&lt;/P&gt;&lt;P&gt;/ data to a rel 4 system. */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ Rel 4.0B can convert 3.1 and earlier CUA's */&lt;/P&gt;&lt;P&gt;/ This could change later however. */&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;/P&gt;&lt;P&gt;CUA Tables. &lt;/P&gt;&lt;P&gt;Key of CUA tables in EUDB data set. Name is len 40 in rel 4.0 &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Status &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Functions &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Menus &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Menus (texts) &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Action Bar &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Push Buttons &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;PF-Keys &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Function sets &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Documentation &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Title codes with text &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;rel 3.1 CUA components. &lt;/P&gt;&lt;P&gt;Status &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Functions &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Menus &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Menus (texts) &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Action Bar &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Push Buttons &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;PF-Keys &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Function sets &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Documentation &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Title codes with text &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;dynamic function text &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Icons &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;dynamic menu texts &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Symbol list &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Status Short text &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Attributes for function key settings (menu bars) Rel 3.0 &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Include-Menus &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Last used numbers &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;data for call transaction (SE41 to re-generate the CUA) &lt;/P&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;/P&gt;&lt;P&gt;/ Program data */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Parameters */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Check users workstation is running WINDOWS, */&lt;/P&gt;&lt;P&gt;/ WINDOWS 95, or WINDOWS NT. OS/2 no good for */&lt;/P&gt;&lt;P&gt;/ this application. */&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;/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;/P&gt;&lt;P&gt;/ Get names of programs to be handled. */&lt;/P&gt;&lt;P&gt;/ Name can be a single value, many values or ranges */&lt;/P&gt;&lt;P&gt;/ as per standard SELECT-OPTIONS on selection screen */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ On Download read TRDIR and store program names in a table */&lt;/P&gt;&lt;P&gt;/ as per selection options. */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ On upload read the specified directory for all files of */&lt;/P&gt;&lt;P&gt;/ type .EEE from specified directory */&lt;/P&gt;&lt;P&gt;/ compare file names with selection criteria */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;For download INCLUDE handling can be resolved via function &lt;/P&gt;&lt;P&gt;module call. &lt;/P&gt;&lt;P&gt;All Includes within Includes are also resolved by the function &lt;/P&gt;&lt;P&gt;module call. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note that this method does not work if program itself is of type &lt;/P&gt;&lt;P&gt;I (it's an include) &lt;/P&gt;&lt;P&gt;In this case we can still search the source. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Program list from selection criteria i.e excluding INCLUDES found &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;We need to check now for INCLUDES on DOWNLOAD when the INCLUDE &lt;/P&gt;&lt;P&gt;program itself is of type I. In this case the function call &lt;/P&gt;&lt;P&gt;will not return the INCLUDES. For example we could be &lt;/P&gt;&lt;P&gt;downloading ZTESTTOP (an Include itself) which as an include &lt;/P&gt;&lt;P&gt;ZTEST01. &lt;/P&gt;&lt;P&gt;The process fortunately is the same as the UPLOAD function &lt;/P&gt;&lt;P&gt;except of course we need to read the library instead of the &lt;/P&gt;&lt;P&gt;DOS directory &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;process INCLUDE modules for Upload &lt;/P&gt;&lt;P&gt;On upload the procedure is more complex as Includes within &lt;/P&gt;&lt;P&gt;Includes can only be resolved by scanning the code and &lt;/P&gt;&lt;P&gt;searching if the program exists in the directory. &lt;/P&gt;&lt;P&gt;To get all INCLUDES within INCLUDES entries in table I_INCL &lt;/P&gt;&lt;P&gt;that do not exist in I_INCLUDE are copied to table I_INCLUDE &lt;/P&gt;&lt;P&gt;after each entire pass of table i_INCLUDE and table is then &lt;/P&gt;&lt;P&gt;re-looped through. Programs in table I_INCLUDE that have already &lt;/P&gt;&lt;P&gt;been processed have a "Y" indicator set in I_INCLUDE-AVAIL. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if func = 'U'. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;endif. &lt;/P&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;/P&gt;&lt;P&gt;/ Table R contains ABAP names to up / download. */&lt;/P&gt;&lt;P&gt;/ Loop through table R and perform up / download */&lt;/P&gt;&lt;P&gt;/ for each program. */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ Table R1 contains INCLUDE names found (if any) */&lt;/P&gt;&lt;P&gt;/ As each */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Build file names for UP/DOWNLOAD */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ 3 files are generated per ABAP. */&lt;/P&gt;&lt;P&gt;/ 1) ABAP Path\PROGNAME.EEE (ABAP, Attr,Texts) */&lt;/P&gt;&lt;P&gt;/ Logic Path\PROGNAME.EEE (Dynpro Source Logic) */&lt;/P&gt;&lt;P&gt;/ CUA Path\PROGNAME.EEE (CUA components - keys etc) */&lt;/P&gt;&lt;P&gt;/ 2) Header Path\PROGNAME.HHH (Dynpro Header) */&lt;/P&gt;&lt;P&gt;/ 3) Fields Path\PROGNAME.FFF (Dynpro Field definitions )*/&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ ( If alternate file name specified -DSNAME- this will */&lt;/P&gt;&lt;P&gt;/ be used instead. This is only valid for the main program. */&lt;/P&gt;&lt;P&gt;/ INCLUDED programs will have file names as specified */&lt;/P&gt;&lt;P&gt;/ above). */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ By using this scheme it saves the user from having to */&lt;/P&gt;&lt;P&gt;/ be prompted for 3 file names. */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ If you want multiple copies / versions on disk either */&lt;/P&gt;&lt;P&gt;/ rename the old versions or specify a different directory in */&lt;/P&gt;&lt;P&gt;/ the path parameter. */&lt;/P&gt;&lt;P&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;P&gt;WRITE DSNAME TO FN1+66. "rel 4&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;WRITE R-NAME TO FN1+66. "rel 4&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;WHEN OTHERS.&lt;/P&gt;&lt;P&gt;WRITE R-NAME TO FN1+66. "rel 4&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;P&gt;WRITE '.HHH' TO FN1+124(4). "rel 4&lt;/P&gt;&lt;P&gt;WRITE '.FFF' TO FN2+124(4). "rel 4&lt;/P&gt;&lt;P&gt;WRITE '.EEE' TO FN3+124(4). "rel 4&lt;/P&gt;&lt;P&gt;CONDENSE FN1 NO-GAPS.&lt;/P&gt;&lt;P&gt;CONDENSE FN2 NO-GAPS.&lt;/P&gt;&lt;P&gt;CONDENSE FN3 NO-GAPS.&lt;/P&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;/P&gt;&lt;P&gt;/ print progname + dynpro nrs that have been processed. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Download Objects */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Split ABAP up into its component parts */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ A) Program source (72) */&lt;/P&gt;&lt;P&gt;/ B) Texts (132) */&lt;/P&gt;&lt;P&gt;/ C) Attributes (117) */&lt;/P&gt;&lt;P&gt;/ D) CUA stuff (Various) */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Get ABAP language. Only required on download. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Text elements, Numbered texts, headings, selection texts */&lt;/P&gt;&lt;P&gt;/ Read text elements with logon language. If they don't */&lt;/P&gt;&lt;P&gt;/ exist read with the value taken from TRDIR. */&lt;/P&gt;&lt;P&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-TXT TO S-TXT.&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;/P&gt;&lt;P&gt;/ Retrieve Attributes from TRDIR and add to table S */&lt;/P&gt;&lt;P&gt;/ Change language to logged on language */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ retrieve CUA stuff and append to table S. */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;MOVE R-LANGUAGE TO EU_KEY-SPRSL. "Language "rel 2.2 &lt;/P&gt;&lt;P&gt;IMPORT STA FUN MEN MTX ACT BUT PFK SET LAST INC STX DOC "rel 2.2 &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;read titles in logged on language. If not present use &lt;/P&gt;&lt;P&gt;language from TRDIR. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Next 5 tables are rel 3.0 specific (ATT, FDN, MDN, SYM, FIN) &lt;/P&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;/P&gt;&lt;P&gt;/ Upload Objects. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Build table containing dynpro names and numbers */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Split dynpros into constituent parts. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Header H length 284. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Fields D021S Len 87. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Dynpro Logic D022S E */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Unload Constituent parts of dynpro. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Build the original dynpro component tables. */&lt;/P&gt;&lt;P&gt;/ Table H1 contains 1 entry for each dynpro. H1 contains */&lt;/P&gt;&lt;P&gt;/ the header for the dynpro prefixed by the program name */&lt;/P&gt;&lt;P&gt;/ and dynpro number. */&lt;/P&gt;&lt;P&gt;/ By looping round this table we can re-build the F */&lt;/P&gt;&lt;P&gt;/ (Fields) and E (Logic) components. By stripping off the */&lt;/P&gt;&lt;P&gt;/ program name and dynpro number the original tables are */&lt;/P&gt;&lt;P&gt;/ re-created. (Tables F1 and E1 also have a prefix of */&lt;/P&gt;&lt;P&gt;/ Program name and dynpro nr). */&lt;/P&gt;&lt;P&gt;/ After the original set of tables has been re-created we */&lt;/P&gt;&lt;P&gt;/ use R3 - SYSTEM-CALL (rel 2.2) to generate the screen */&lt;/P&gt;&lt;P&gt;/ and then get the next entry in table H1 to build the */&lt;/P&gt;&lt;P&gt;/ next screen. For releases 3.0 and higher use generate */&lt;/P&gt;&lt;P&gt;/ dynpro. */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;if h1-name ne repid. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;move repid to h-prog. &lt;/P&gt;&lt;P&gt;MOVE R1-NAME TO H-PROG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;move repid to dynname. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;SYSTEM-CALL GENERATE-SCREEN DYNNAME. "Up to rel 2.2 &lt;/P&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;/P&gt;&lt;P&gt;/ Re-build Fields table */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Re-build Logic table */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ scan for included files (Upload) */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ scan for text INCLUDE xxxxxxxx */&lt;/P&gt;&lt;P&gt;/ reject INCLUDE STRUCTURE as structure not a valid */&lt;/P&gt;&lt;P&gt;/ program name */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Validate INCLUDES . */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;Now check for Include Mask for example if include mask was set to &lt;/P&gt;&lt;P&gt;Z* then only include programs whose first letter starts with a Z. &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) get length of the INCLUDE program name. Must be less than or &lt;/P&gt;&lt;P&gt;equal 40. &lt;/P&gt;&lt;P&gt;2) Compare it with the Include mask. &lt;/P&gt;&lt;P&gt;3) If Ok add include program name to include table &lt;/P&gt;&lt;P&gt;clear i_include. &lt;/P&gt;&lt;P&gt;move &amp;lt;f&amp;gt; to i_include-name. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;move 1 to i_include-count. &lt;/P&gt;&lt;P&gt;collect i_include. &lt;/P&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;/P&gt;&lt;P&gt;/ Download table S. */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;PERCENTAGE = 0 &lt;/P&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;P&gt;CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN3&lt;/P&gt;&lt;P&gt;FILETYPE = 'ASC'&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = 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;/P&gt;&lt;P&gt;/ Download Binary files H1 */&lt;/P&gt;&lt;P&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.&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;CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN1&lt;/P&gt;&lt;P&gt;FILETYPE = 'BIN'&lt;/P&gt;&lt;P&gt;BIN_FILESIZE = NR_OF_BYTES&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILELENGTH = FILESIZE&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = H1.&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;/P&gt;&lt;P&gt;/ Download Binary files F1 */&lt;/P&gt;&lt;P&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.&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;P&gt;CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN2&lt;/P&gt;&lt;P&gt;FILETYPE = 'BIN'&lt;/P&gt;&lt;P&gt;BIN_FILESIZE = NR_OF_BYTES&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILELENGTH = FILESIZE&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = F1.&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;/P&gt;&lt;P&gt;/ Upload data from file .EEE */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;PERCENTAGE = 0 &lt;/P&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;CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN3&lt;/P&gt;&lt;P&gt;FILETYPE = 'ASC'&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = S1.&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;/P&gt;&lt;P&gt;/ Upload Dynpro headers (HHH) and fields (FFF) */&lt;/P&gt;&lt;P&gt;/ titles and dynpro logic is contained in file .EEE */&lt;/P&gt;&lt;P&gt;/ and has already been processed. */&lt;/P&gt;&lt;P&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;CASE REL3.&lt;/P&gt;&lt;P&gt;WHEN 'X'.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN1&lt;/P&gt;&lt;P&gt;FILETYPE = 'BIN'&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = H2.&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;P&gt;WRITE H2-FILL TO H1+88(39).&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;P&gt;CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN1&lt;/P&gt;&lt;P&gt;FILETYPE = 'BIN'&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = H1.&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;/P&gt;&lt;P&gt;/ Upload Binary file F1 - Dynpro fields */&lt;/P&gt;&lt;P&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;CASE REL3.&lt;/P&gt;&lt;P&gt;WHEN 'X'.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN2&lt;/P&gt;&lt;P&gt;FILETYPE = 'BIN'&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = F2.&lt;/P&gt;&lt;P&gt;LOOP AT F2.&lt;/P&gt;&lt;P&gt;OLD_F1 = F2.&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;P&gt;CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = FN2&lt;/P&gt;&lt;P&gt;FILETYPE = 'BIN'&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILELENGTH = NR_OF_BYTES&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = F1.&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;/P&gt;&lt;P&gt;/ Re-construct data from file .EEE */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Load ABAP Source code, CUA, pfkeys etc to int tables */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;if restoring / uploading rel 3.1 or lower different cua tables &lt;/P&gt;&lt;P&gt;are used. At generate CUA time these will be converted by the &lt;/P&gt;&lt;P&gt;system to rel 4.0 &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;next 5 tables (ATT FDN MDN SYM and FIN) are rel 3.0 specific &lt;/P&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;/P&gt;&lt;P&gt;/ Load ABAP Text elements (Max length 132 - the system */&lt;/P&gt;&lt;P&gt;/ allows 255 but this program handles 132 only) */&lt;/P&gt;&lt;P&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;MOVE S1-TXT TO U-TXT.&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;/P&gt;&lt;P&gt;/ Update ABAP's Attributes. */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ Ensure Attribute updated before dynpro text or language */&lt;/P&gt;&lt;P&gt;/ may be wrong. If language field is blank then default */&lt;/P&gt;&lt;P&gt;/ (logon) language will be used */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;if repid ne dir-name. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;move repid to dir-name. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;write repid to d020t-prog. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;write repid to d021t-prog. &lt;/P&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;/P&gt;&lt;P&gt;/ Store re-constructed component of ABAP back on to the library */&lt;/P&gt;&lt;P&gt;/ Note that any attribute found has already been stored back */&lt;/P&gt;&lt;P&gt;/ on TRDIR. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Store ABAP source code back into the library */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;insert report repid from s. &lt;/P&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;/P&gt;&lt;P&gt;/ Store ABAP Text Elements Back into Library */&lt;/P&gt;&lt;P&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;CASE MAIN.&lt;/P&gt;&lt;P&gt;WHEN 'Y'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;insert textpool repid from u language sy-langu. &lt;/P&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;/P&gt;&lt;P&gt;/ Update Attributes */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ re-build the CUA, update the title table (if any entries */&lt;/P&gt;&lt;P&gt;/ exist) and update EUDB */&lt;/P&gt;&lt;P&gt;/ Finally generate the CUA */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Load the CUA */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;create new EUDB table entry &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;insert into table &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;EXPORT STA STX FUN MEN MTX ACT BUT PFK SET INC LAST DOC "rel 2.2 &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;REL 4.0 converts old CUA (3.1 and lower) to rel 4. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;only entry with sprsl = D allowed &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;AND SPRSL = ' '.&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;set release in EUDB to ver 4.0 if appropriate. Rel 3.1G and earlier &lt;/P&gt;&lt;P&gt;will be handled and converted by the system &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;move repid to rsmptexts-progname. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;call transaction se41 to generate the user interface &lt;/P&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;STRONG&gt;/&lt;/STRONG&gt;*****************************************************************/&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;/ Handle CUA texts */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rel 3.1 and earlier &lt;/P&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;/P&gt;&lt;P&gt;/ Build data for BDC table (Call transaction SE41) */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;To get path and file name via F4 or mouse click use a call to &lt;/P&gt;&lt;P&gt;Windows via WS_FILENAME_GET. &lt;/P&gt;&lt;P&gt;Restriction is that a File must be selected to return any data &lt;/P&gt;&lt;P&gt;Program chops off the file name when a path is wanted so the &lt;/P&gt;&lt;P&gt;function can also be used to find the path on upload. &lt;/P&gt;&lt;P&gt;Any valid file name can then be entered &lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note also that if a mouse click is done on program then the &lt;/P&gt;&lt;P&gt;path is copied as well. &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 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;/P&gt;&lt;P&gt;/ Get file names (Windows) */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;Build Filter for Fileselector &lt;/P&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;/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;P&gt;&lt;/P&gt;&lt;P&gt;MASK = ',.,..' &lt;/P&gt;&lt;P&gt;MASK = TMP_MASK&lt;/P&gt;&lt;P&gt;MODE = MODE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TITLE = ' ' &lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;FILENAME = TMP_FILENAME&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RC = &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Try and get path name. &lt;/P&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;/P&gt;&lt;P&gt;/ Update screen fields with value selected from table */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;fix selection so that for example ZAC* chhoses ALL progs &lt;/P&gt;&lt;P&gt;starting with ZAC. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;get proper selection range for upload programs &lt;/P&gt;&lt;P&gt;e.g if you specify Z to ZZJ* you will get ALL &lt;/P&gt;&lt;P&gt;progs from Z to ZZJ* unlike the SAP BETWEEN clause. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;needs to be done like this owing to way the IN cluse is implemented &lt;/P&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;/P&gt;&lt;P&gt;/ Build DOS batch file to read relevant directory */&lt;/P&gt;&lt;P&gt;/ This might not work for W2K as native DOS is not */&lt;/P&gt;&lt;P&gt;/ supported as such. The DIR command should work */&lt;/P&gt;&lt;P&gt;/ otherwise you will have to modify this code to call a */&lt;/P&gt;&lt;P&gt;/ Windows function to get a directory listing. */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Download DOS batch file */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'WS_DOWNLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = DL_FILE&lt;/P&gt;&lt;P&gt;FILETYPE = 'DAT'&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = DOSDIR.&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;/P&gt;&lt;P&gt;/ Execute it and pipe output to DIR.$$$ on C drive */&lt;/P&gt;&lt;P&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;/P&gt;&lt;P&gt;/ Upload directory listing to SAP */&lt;/P&gt;&lt;P&gt;/ */&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;/&lt;/STRONG&gt;**************************************************************/&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'WS_UPLOAD'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;FILENAME = UL_FILE&lt;/P&gt;&lt;P&gt;FILETYPE = 'DAT'&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;DATA_TAB = DOSDIR.&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;/P&gt;&lt;P&gt;/ Get Include programs for upload via function module. */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;WITH_INACTIVE_INCLS = ' ' &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;if function pool (SAPLxxxx) then always need the &lt;/P&gt;&lt;P&gt;SAP generated include LxxxUXX as well. &lt;/P&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;/P&gt;&lt;P&gt;/ Handle Include programs (download) */&lt;/P&gt;&lt;P&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;P&gt;&lt;/P&gt;&lt;P&gt;check included program has not already been down / up loaded &lt;/P&gt;&lt;P&gt;Check on download if INCLUDE program exists in Library &lt;/P&gt;&lt;P&gt;check on UPLOAD if INCLUDE exists in the directory &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;Look for Includes in uploaded programs or on download &lt;/P&gt;&lt;P&gt;when handling INCLUDE programs themselves &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;is included file in the directory &lt;/P&gt;&lt;P&gt;The mask (e..g Z*) will have already been checked by the scan &lt;/P&gt;&lt;P&gt;process. &lt;/P&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;P&gt;&lt;/P&gt;&lt;P&gt;check if the include has already been processed &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 = 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;P&gt;&lt;/P&gt;&lt;P&gt;scan through included table &lt;/P&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;[/code]&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it works for you -:)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward if useful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2008 05:33:18 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/hi-experts/m-p/3373626#M810066</guid>
      <dc:creator>mahaboob_pathan</dc:creator>
      <dc:date>2008-01-24T05:33:18Z</dc:date>
    </item>
  </channel>
</rss>

