Download/upload abap objects to/from local PC

Hi all,
        I need to download objects of a tcode (like includes, reports etc) on to PC and  upload it to different server. Can anybody please send me the programs to upload and download objects.
Thanks in Advance

REPORT ZUPDOWNPROGRAMS LINE-SIZE 132 LINE-COUNT 62 NO STANDARD PAGE HEADING.
  This program up / downloads from / to a local dataset
  all the components of an ABAP - i.e TEXTS, the entire CUA
  including statuses and menus, DYNPROS and source code.
  Program documentation and variants are not handled.
  INCLUDED programs are automatically handled both on upload
  or download. INCLUDE selection can be excluded or generic
  e.g only handle INCLUDES starting with ZIN*
  INCLUDES within INCLUDES also handled.
  The only restriction is on UPLOAD the INCLUDED programs must come
  from the same directory as the main program.
  On Download of course the ABAP must exist in the library.
     Note for LINUX and BATCH users
  This program was originally designed as a one off tool for
  getting ABAPS etc from a SAP R2 (IBM MVS mainframe system) into
  an R3 test system minimising the need for a large amount of
  mainframe sysprogs (anybody remember what they were !!) time
  and support to say nothing of access problems from TSO /JES2 /
  SAP R2. At that time network connections were patchy and the
  transport systems largely incompatable and not very reliable.
  This program was originally designed as a one off tool for
  Must run on Windows front end ---- If you are running SAP with
  LINUX on your work station you will have to change the WS_UPLOAD
  and WS_DOWNLOAD functions to reflect the Linux file system. The
  contents of the data sets themseleves do not need to be changed
  Program can easily be modified to run in batch and store
  the data on a UNIX host. Change the WS_UPLOAD and WS_DOWNLOAD
  to read from and write to UNIX data sets (OPEN FILE etc).
  You will also need to modify the parts of the program that get
  the DOS directory and display the Windows file paths.
  The actual abap data sets do not need to be changed.
Rel 4.0   names can now be up to 40 bytes long
          Dynpros and CUA have changed from rel 3.1
          Tabstrips now loaded and unloaded in dynpros
   Please note restriction on 4.6 systems for users who
   have ABAP names which include '/'s in their names.
Rel 4.6b, 4.6c Abap names can include the '/' in their names
e.g /CUST1/CUST2/ORDER
This causes problems when storing to a local file.
a solution is to change the name to %CUST1%CUST2%ORDER i.e / will
be changed to %. On upload the % should be changed back to /
again.    This change still needs to be implemented.
If you don't use the / in the abap name then this is not a problem.
If file to be uploaded is in rel 3 format then names are only 8
bytes long.
  program uses 3 datasets per abap
     1) abapname.eee     source, dynpr logic, texts, CUA stuff
     2) abapname.hhh     dynpr header
     3) abapname.fff     dynpro fields.
because of varying lengths and contents 3 data sets are used. The
complexity of combining all these to 1 data set would make the
program far too complex.
  NOTE: This version of the program can only be used on
        release 4.0 or higher. Once an ABAP has been converted
        to rel 4.0 it cannot be converted back to rel 3.0
        on a release 3/3.1 system. Release 4 CUA tables
        are different.  Use release 3 version of this program
       for releases 3.0 and 3.1. Available on SAPFANS website.
  Note that data to be uploaded must have been previously downloaded
  by this program (any version since rel 2.0) - except for Initial
  Load -- see end of these comments.
         Dynpros and CUA statuses have changed since rel 3.1
   This program will handle rel 3.1 format on upload but will
   download in rel 4.0 format. To upload 3.1 format specify an 'X'
   in the rel3 parameter.
   If you have downloaded components in rel 4.0 format and you
   want to re-load to a 3.1 system  you will have to load
   the source via standard upload and re-create dynpros and the CUA
   manually.
   As names can now be longer than 8 characters you can only
   use this program if the SAP front end (SAPGUI) supports
   long file names (WIN 95/98 or WIN NT). Windows 3.x will not
   work as the underlying DOS system cannot handle long file names.
      UPLOAD function and DOS directory.
When an ABAP is selected for UPLOAD then the DOS
directory is read into a table. A file called ABAP.BAT is created,
and down loaded to the 'C' drive and executed.
This file executes a DOS DIR command and pipes the output
into a dataset which is then uploaded into an internal
table on SAP.
Note on running DOS commands from ABAP
The first time this procedure is executed you will see a DOS window
which you will have to close manually. To get round this
use windows explorer to select the file ABAP.BAT and then
right mouse click on the file name. Select the
properties window. From this click the CLOSE on EXIT box. This
will then automatically close the DOS function after it has
executed. (Windows restriction).
The DOS function has not been tested using Windows 2000 so
it might not work. OK on W95,W98,WME and Windows NT (No Thanks)
If INCLUDE programs are wanted on UPLOAD only the specified
directory is searched.
Instead of entering path name manually you can click on
the path parameter. Because of Windows restriction you will
have to select ANY file in the relevant directory.
The path will then be copied on to the selection screen.
To do still : Merge 3 files to one and compress output to .ZIP file
               fix 4.5 4.6 problem of abaps containing '/' in the name
               possibility to automatically up / download referenced
               function modules with selection criteria like INCLUDES
To load the ist time into a system.
Create program with ABAP editor and Upload the .EEE file.
Delete ist line  (????SRCE) in the ABAP EDITOR --NOT THE DISK FILE
Delete all the source from the line that starts ????TEXT (towards
the end file) till the end so the last line in your source is ENDFORM.
DO NOT ALTER THE DISK FILE. DO THESE CHANGES IN THE ABAP EDITOR.
Save file and execute
Use following parameters (Note the ist time you won't get proper
text on the selection screen).
Function      U
Path          full dos path containing source e.g c:\abaps\
               NOTE YOU MUST ENTER THE FINAL \ as above.
REPID         the program name. e.g ZZJIMHXX
               note that on the DISK you will see 3 files
               ZZJIMHXX.EEE, ZZJIMHXX.FFF, ZZJIMHXX.HHH
               just use the name before the dos qualifier - the
               program will do the rest
ignore other parameters
The program will then load itself with all the texts etc.
It should now be ready for use.
  Macros
DEFINE DEFINE_TABLE.
  DATA: &1 LIKE &2 OCCURS &3 WITH HEADER LINE.
END-OF-DEFINITION.
DEFINE CLS.
  REFRESH &1.
  CLEAR &1.
END-OF-DEFINITION.
DEFINE INIT.
  IF &1 NE SPACE.
    SEARCH &1 FOR '. .'.
    IF SY-SUBRC = 0.
      WRITE '*' TO &1+SY-FDPOS(1).
    ENDIF.
    TRANSLATE &1 USING '*%'.
  ELSE.
    MOVE '%' TO &1.
  ENDIF.
END-OF-DEFINITION.
end of macros
/     SAP standard tables                                        */
TABLES: D020S,                         "Dynpro header
        D020T,                         "Dynpro title
        D021T,                         "Screen field keyword texts
        TRDIR,                         "Attribute table
        TADIR,                         "Dev. class etc.
        EUDB,                          "CUA data
        TSTC,                          "transaction data
        TITLE,                         "CUA titles
        RSMPTEXTS.                     "Function texts (rel 4.0)
/     Work tables to hold ABAP source etc, and dynpro            */
/     contents.                                                  */
DATA: BEGIN OF H.                      "Header
        INCLUDE STRUCTURE D020S.
DATA: END OF H.
DATA: BEGIN OF H1 OCCURS 10,           "Header
      NAME(40)               TYPE C,                        "rel 4
      NUMBER(4)              TYPE N.
        INCLUDE STRUCTURE D020S.
DATA: END OF H1.
DATA: BEGIN OF H2 OCCURS 0,            "Rel 3  dynp. header
        CNAME(8)   TYPE C,
        CNUM(4)    TYPE C,
        NNAME(8)   TYPE C,
        NNUM(4)    TYPE C,
        FILL(51)   TYPE C,
        CDAT(6)    TYPE C,
        CTIM(6)    TYPE C,
      END OF H2.
DATA: BEGIN OF F OCCURS 250.           "Dynpro Fields
        INCLUDE STRUCTURE D021S.
DATA: END OF F.
DATA: BEGIN OF F1 OCCURS 500,          "Dynpro Fields
      NAME(40)               TYPE C,                        "rel 4
      NUMBER(4)              TYPE N.
        INCLUDE STRUCTURE D021S.
DATA: END OF F1.
DATA: BEGIN OF OLD_F1 OCCURS 0,        "Dynpro Fields (rel 3)
      NAME(8)    TYPE C,
      NUMBER(4)     TYPE C.
        INCLUDE STRUCTURE D021SE_OLD.
DATA: END OF OLD_F1.
DATA: BEGIN OF F2 OCCURS 0,            "Dynpro Fields (rel 3)
      TFIL(284)  TYPE C,
      END OF F2.
DATA: BEGIN OF M OCCURS 3.             "Match codes (if any)
        INCLUDE STRUCTURE D023S.
DATA: END OF M.
DATA: BEGIN OF E OCCURS 0.             "Dynpro Logic
        INCLUDE STRUCTURE D022S.
DATA: END OF E.
DATA: BEGIN OF E1 OCCURS 0,            "Dynpro Logic
      NAME(40)               TYPE C,                        "rel 4
      NUMBER(4)              TYPE N.
        INCLUDE STRUCTURE D022S.
DATA: END OF E1.
DATA: BEGIN OF T   OCCURS 0,           "prog name and dynpro nrs
      NAME(40)     TYPE C,                                  "rel 4
      NUMBER(4)    TYPE N,
END OF T.
DATA: BEGIN OF R   OCCURS 56,          "prog name and language
      NAME(40)     TYPE C,                                  "rel 4
      LANGUAGE(1)  TYPE C,
   END OF R.
DATA: BEGIN OF S OCCURS 3000,
      TXT(180)               TYPE C,   "rel 4   was 132
      END OF S.
DATA: BEGIN OF R1 OCCURS 50,           "for include programs
        NAME(40)             TYPE C,                        "rel 4
        INSTANCE(3)          TYPE P,
      END OF R1.
DATA: BEGIN OF S1 OCCURS 3000,
      TXT(180)               TYPE C,   "   rel 4  was 132
      END OF S1.
DATA: BEGIN OF U OCCURS 100,           "Text elements
      TXT(180)               TYPE C,   " rel 4   was 132
      END OF U.
DATA: BEGIN OF DIR.                    "ABAP Attributes
        INCLUDE STRUCTURE TRDIR.
DATA: END OF DIR.
DATA: BEGIN OF DTXT.                   "Dynpro field keyword texts
        INCLUDE STRUCTURE D021T.
DATA: END OF DTXT.
/     This data contains all the components of the               */
/     CUA such as menus, statuses, Pfkeys                        */
/     As from rel 4.5 Tabstrips are automatically copied as well */
/     The rel3 parameter must be set however to load the         */
/     correct version of the CUA tables if uploading rel 3       */
/     data to a rel 4 system.                                    */
/     Rel 4.0B can  convert 3.1 and earlier CUA's                */
/     This could change later however.                           */
CUA Tables.
Key of CUA tables in EUDB data set. Name is len 40 in rel 4.0
DATA BEGIN OF EU_KEY.
        INCLUDE STRUCTURE RSEU1_KEY.
DATA END OF EU_KEY.
    Status
DATA BEGIN OF STA OCCURS 0.
        INCLUDE STRUCTURE RSMPE_STAT.                       " rel 4
DATA END OF STA.
    Functions
DATA BEGIN OF FUN OCCURS 0.
        INCLUDE STRUCTURE RSMPE_FUNT.                       "rel 4
DATA END OF FUN.
    Menus
DATA BEGIN OF MEN OCCURS 0.
        INCLUDE STRUCTURE RSMPE_MEN.   "rel 4.0
DATA END OF MEN.
    Menus (texts)
DATA BEGIN OF MTX OCCURS 0.
        INCLUDE STRUCTURE RSMPE_MNLT.  "rel 4.0
DATA END OF MTX.
    Action Bar
DATA BEGIN OF ACT OCCURS 0.
        INCLUDE STRUCTURE RSMPE_ACT.   "rel 4.0
DATA END OF ACT.
    Push Buttons
DATA BEGIN OF BUT OCCURS 0.
        INCLUDE STRUCTURE RSMPE_BUT.   "rel 4.0
DATA END OF BUT.
    PF-Keys
DATA BEGIN OF PFK OCCURS 0.
        INCLUDE STRUCTURE RSMPE_PFK.   "rel 4.0
DATA END OF PFK.
    Function sets
DATA BEGIN OF SET OCCURS 0.
        INCLUDE STRUCTURE RSMPE_STAF.  "rel 4.0
DATA END OF SET.
    Documentation
DATA BEGIN OF DOC OCCURS 0.
        INCLUDE STRUCTURE RSMPE_ATRT.  "rel 4.0
DATA END OF DOC.
    Title codes with text
DATA: BEGIN OF TIT OCCURS 0.
        INCLUDE STRUCTURE RSMPE_TITT.  "rel 4.0
DATA: END OF TIT.
DATA BEGIN OF FTX OCCURS 0.            "rel 4.0
        INCLUDE STRUCTURE RSMPTEXTS.
DATA END OF FTX.
       rel 3.1 CUA components.
    Status
DATA BEGIN OF OLD_STA OCCURS 0.
        INCLUDE STRUCTURE RSEU1_GEN.   " rel 3.1
DATA END OF OLD_STA.
    Functions
DATA BEGIN OF OLD_FUN OCCURS 0.
        INCLUDE STRUCTURE RSEU1_FUN.   "rel 3.1
DATA END OF OLD_FUN.
    Menus
DATA BEGIN OF OLD_MEN OCCURS 0.
        INCLUDE STRUCTURE RSEU1_MEN.   "rel 3.1
DATA END OF OLD_MEN.
    Menus (texts)
DATA BEGIN OF OLD_MTX OCCURS 0.
        INCLUDE STRUCTURE RSEU1_TXM.   "rel 3.1
DATA END OF OLD_MTX.
    Action Bar
DATA BEGIN OF OLD_ACT OCCURS 0.
        INCLUDE STRUCTURE RSEU1_ACT.   "rel 3.1
DATA END OF OLD_ACT.
    Push Buttons
DATA BEGIN OF OLD_BUT OCCURS 0.
        INCLUDE STRUCTURE RSEU1_BUT.   "rel 3.1
DATA END OF OLD_BUT.
    PF-Keys
DATA BEGIN OF OLD_PFK OCCURS 0.
        INCLUDE STRUCTURE RSEU1_PFK.   "rel 3.1
DATA END OF OLD_PFK.
    Function sets
DATA BEGIN OF OLD_SET OCCURS 0.
        INCLUDE STRUCTURE RSEU1_SET.   "rel 3.1
DATA END OF OLD_SET.
    Documentation
DATA BEGIN OF OLD_DOC OCCURS 0.
        INCLUDE STRUCTURE RSEU1_ETM.   "rel 3.1
DATA END OF OLD_DOC.
    Title codes with text
DATA: BEGIN OF OLD_TIT OCCURS 0.
        INCLUDE STRUCTURE TITLE.       "rel 3.1
DATA: END OF OLD_TIT.
dynamic function text
DATA BEGIN OF FDN OCCURS 1.
        INCLUDE STRUCTURE RSEU1_FDYN.  "not req for rel 4.
DATA END OF FDN.
Icons
DATA BEGIN OF FIN OCCURS 1.
        INCLUDE STRUCTURE RSEU1_ICON.  "not req for rel 4
DATA END OF FIN.
dynamic menu texts
DATA BEGIN OF MDN OCCURS 1.
        INCLUDE STRUCTURE RSEU1_MDYN.  "not req for rel 4.
DATA END OF MDN.
    Symbol list
DATA BEGIN OF SYM OCCURS 0.
        INCLUDE STRUCTURE RSEU1_SYMB.
DATA END OF SYM.
    Status Short text
DATA BEGIN OF STX OCCURS 0.
        INCLUDE STRUCTURE RSEU1_CTX.
DATA END OF STX.
    Attributes for function key settings (menu bars)  Rel 3.0
DATA BEGIN OF ATT OCCURS 0.
        INCLUDE STRUCTURE RSEU1_HAT.
DATA END OF ATT.
    Include-Menus
DATA BEGIN OF INC OCCURS 3.
        INCLUDE STRUCTURE RSEU1_INC.
DATA END OF INC.
Last used numbers
DATA BEGIN OF LAST.
        INCLUDE STRUCTURE RSEU1_LST.
DATA END OF LAST.
  data for call transaction (SE41 to re-generate the CUA)
DATA: BEGIN OF T_BDC_TAB OCCURS 0.
        INCLUDE STRUCTURE BDCDATA.     "BDC data
DATA: END OF T_BDC_TAB.
DATA: BEGIN OF T_MESSTAB OCCURS 0.
        INCLUDE STRUCTURE BDCDATA.
DATA: END OF T_MESSTAB.
/     Program data                                               */
DATA: NUMBER(4)               TYPE N,
      OLDNUM(4)               TYPE N,
      FILESIZE                TYPE I,
      NR_OF_BYTES             TYPE I,
      I(3)                    TYPE P,
      IX(3)                   TYPE P,
      J(3)                    TYPE P,
      L(3)                    TYPE P,
      CUA-FLAG(1)             TYPE C,
      CUA_RETURN(10)          TYPE C,
      DYNPRO_MESSAGE(160)     TYPE C,
      DYNPRO_LINE             TYPE P,
      DYNPRO_WORD(30)         TYPE C,
      NUM(3)                  TYPE N,
      DYNNAME(44)             TYPE C,
      FN1(128)                TYPE C,
      FN2(128)                TYPE C,
      FN3(128)                TYPE C,
      W_ITERATE(1)            TYPE C,
      MAIN(1)                 TYPE C,
      FUNC(1)                 TYPE C,
      OLDNAME(40)             TYPE C,
      OLD-FUNC(8)             TYPE C,
      NEW-FUNC(8)             TYPE C,
      FOUND(1)                TYPE C,
      LANGUAGE                LIKE SY-LANGU,
      FIRST-TIME(1)           TYPE C VALUE 'Y',
      OK-CODE(5)              TYPE C,
      NAME(40)                TYPE C,                       "rel 4
      TXLINE(70)              TYPE C,
      LINE(132)               TYPE C.
DATA:
      UL_FILE(128)          TYPE C,
      DL_FILE(128)          TYPE C,
      DOSLINE(72)           TYPE C.
DATA: BEGIN OF DOSDIR OCCURS 0,
        TEXT(72),
      END OF DOSDIR.
DATA: BEGIN OF I_PROG OCCURS 0,
      NAME(40),
      END OF I_PROG.
DATA: BEGIN OF I_PROGT OCCURS 0,
      NAME(40),
      END OF I_PROGT.
DATA: BEGIN OF I_INCLUDE OCCURS 0,
      NAME(40),
      HANDLED(1)   TYPE C,
      END OF I_INCLUDE.
DATA: BEGIN OF I_INCL OCCURS 0,
      NAME(40),
      END OF I_INCL.
DATA: BUFFER(1024).
DATA: WINSYS(3).
DATA: GLOBAL_FILEMASK_MASK(20), GLOBAL_FILEMASK_TEXT(20).
DATA: GLOBAL_FILEMASK_ALL(80).
DATA: T_FILENAME(128),
      TMP_FILENAME(128),
      T_MODE(1),
      FIELDLN     TYPE I.
DEFINE_TABLE I_DYNPFIELDS DYNPREAD 0.  "dynpro fields to be updated
DATA: I_FLDS LIKE HELP_VALUE OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS: <F>.
/     Parameters                                                 */
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS REPID FOR TRDIR-NAME OBLIGATORY .
PARAMETERS:
      FUNCTION(1)       TYPE C OBLIGATORY,  "Function
      DSNAME(40)        TYPE C,        "Data set name
      INCLUDES(1)       TYPE C DEFAULT 'N', "Resolve Includes
      IMASK(40)         TYPE C,        "Include Mask
      CLASS             LIKE TRDIR-CLAS,
      AUTHOR            LIKE TRDIR-CNAM,          "Author
      APPL              LIKE TRDIR-APPL,
      PATH(88)          TYPE C DEFAULT 'A:\',
      REL3(1)           TYPE C.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(70) TEXT-004.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(70) TEXT-005.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(70) TEXT-002.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(70) TEXT-003.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END  OF BLOCK A1.
/          Check users workstation is running WINDOWS,        */
/          WINDOWS 95, or WINDOWS NT. OS/2 no good for        */
/          this application.                                  */
CALL FUNCTION 'WS_QUERY'
     EXPORTING
          QUERY  = 'WS'
     IMPORTING
          RETURN = WINSYS.
IF WINSYS(2) NE 'WN'.                  "Win 3.X no good either
  WRITE: / 'Windows NT or Windows 95/98 is required'.
  EXIT.
ENDIF.
/          Get names of programs to be handled.               */
/          Name can be a single value, many values or ranges  */
/          as per standard SELECT-OPTIONS on selection screen */
/ On Download read TRDIR and store program names in a table   */
/ as per selection options.                                   */
/ On upload read the specified directory for all files of     */
/  type .EEE from specified directory                         */
/  compare file names with selection criteria                 */
MOVE FUNCTION TO FUNC.
MOVE 'Y' TO MAIN.
CASE FUNC.
  WHEN 'U'.                            "Upload required
    PERFORM READ_DOS_DIRECTORY.
    PERFORM GET_RANGE_UL.              "Get list of progs to process
  WHEN 'D'.                            "Download required
    PERFORM GET_RANGE_DL.              "Get list of progs to process
  WHEN OTHERS.
    WRITE: / 'Function not performed due to user request'.
    EXIT.
ENDCASE.
SORT I_PROG.
DELETE ADJACENT DUPLICATES FROM I_PROG.
For download INCLUDE handling can be resolved via function
module call.
All Includes within Includes are also resolved by the function
module call.
Note that this method does not work if program itself is of type
I (it's an include)
In this case we can still search the source.
IF FUNC = 'D'.
  IF INCLUDES = 'Y'.
    PERFORM GET_INCLUDES_DL.
    PERFORM PROCESS_INCLUDES_DL.
  ENDIF.
ENDIF.
Program list from selection criteria i.e excluding INCLUDES found
LOOP AT I_PROG.
  MOVE I_PROG-NAME TO R1-NAME.
  APPEND R1.
  DESCRIBE TABLE R1 LINES I.
  WHILE I NE 0.
    PERFORM EXECUTE-FUNCTION.
  ENDWHILE.
  REFRESH R1.
ENDLOOP.
We need to check now for INCLUDES on DOWNLOAD when the INCLUDE
program itself is of type I. In this case the function call
will not return the INCLUDES. For example we could be
downloading ZTESTTOP (an Include itself) which as an include
ZTEST01.
The process fortunately is the same as the UPLOAD function
except of course we need to read the library instead of the
DOS directory
process INCLUDE modules for Upload
On upload the procedure is more complex as Includes within
Includes can only be resolved by scanning the code and
searching if the program exists in the directory.
To get all INCLUDES within INCLUDES entries in table I_INCL
that do not exist in I_INCLUDE are copied to table I_INCLUDE
after each entire pass of table i_INCLUDE and table is then
re-looped through. Programs in table I_INCLUDE that have already
been processed have a "Y" indicator set in I_INCLUDE-AVAIL.
if  func = 'U'.
IF INCLUDES = 'Y'.
  DESCRIBE TABLE I_INCL LINES I.
  IF I > 0.
    W_ITERATE = 'Y'.
  ELSE.
    W_ITERATE = ' '.
  ENDIF.
  WHILE W_ITERATE = 'Y'.
    PERFORM PROCESS_INCLUDES_UL.
    PERFORM LOOP_THROUGH.
    DESCRIBE TABLE I_INCL LINES I.
    IF I > 0.
      W_ITERATE = 'Y'.
    ELSE.
      W_ITERATE = ' '.
    ENDIF.
  ENDWHILE.
endif.
ENDIF.
DESCRIBE TABLE I_INCLUDE LINES I.
IF I > 0.
  SKIP 1.
  WRITE: / ' Included Programs found'.
  SKIP 1.
  LOOP AT I_INCLUDE.
    WRITE I_INCLUDE-NAME TO LINE(40).
    CONDENSE LINE.
    WRITE: / LINE(80).
  ENDLOOP.
ENDIF.
/       Table R contains ABAP names to up / download.            */
/       Loop through table R and perform up / download           */
/       for each program.                                        */
/       Table R1 contains INCLUDE names found (if any)           */
/       As each                                                  */
FORM EXECUTE-FUNCTION.
  LOOP AT R1.
    MOVE-CORRESPONDING R1 TO R.
    APPEND R.
  ENDLOOP.
  REFRESH R1.
  LOOP AT R.
    REFRESH : T, E1, H1, F1, S, U.
    PERFORM PROCESS.
    MOVE 'N' TO MAIN.
  ENDLOOP.
  REFRESH R.
  DESCRIBE TABLE R1 LINES I.
ENDFORM.
/     Build file names for UP/DOWNLOAD                           */
/     3 files are generated per ABAP.                            */
/       1) ABAP    Path\PROGNAME.EEE (ABAP, Attr,Texts)          */
/          Logic   Path\PROGNAME.EEE (Dynpro Source Logic)       */
/          CUA     Path\PROGNAME.EEE (CUA components - keys etc) */
/       2) Header  Path\PROGNAME.HHH (Dynpro Header)             */
/       3) Fields  Path\PROGNAME.FFF (Dynpro Field definitions  )*/
/ ( If alternate file name specified -DSNAME- this will          */
/   be used instead. This is only valid for the main program.    */
/   INCLUDED programs will have file names as specified          */
/   above).                                                      */
/  By using this scheme it saves the user from having to         */
/  be prompted for 3 file names.                                 */
/  If you want multiple copies / versions on disk either         */
/  rename the old versions or specify a different directory in   */
/  the path parameter.                                           */
FORM PROCESS.
  MOVE PATH TO FN1.
  CASE MAIN.
    WHEN 'Y'.
      IF DSNAME NE SPACE.
        WRITE DSNAME TO FN1+66.                             "rel 4
      ELSE.
        WRITE R-NAME TO FN1+66.                             "rel 4
      ENDIF.
    WHEN OTHERS.
      WRITE R-NAME TO FN1+66.                               "rel 4
  ENDCASE.
  MOVE FN1 TO FN2.
  MOVE FN1 TO FN3.
  WRITE '.HHH' TO FN1+124(4).                               "rel 4
  WRITE '.FFF' TO FN2+124(4).                               "rel 4
  WRITE '.EEE' TO FN3+124(4).                               "rel 4
  CONDENSE FN1 NO-GAPS.
  CONDENSE FN2 NO-GAPS.
  CONDENSE FN3 NO-GAPS.
  NAME   = R-NAME.
  CASE FUNC.
    WHEN 'D'.
      PERFORM DOWNLOAD_OBJECTS.
      CLEAR LINE.
      WRITE : 'ABAP : ' TO LINE.
      WRITE R-NAME TO LINE+8.
      WRITE 'has been unloaded' TO LINE+55.
      CONDENSE LINE.
      WRITE: / LINE.
      DESCRIBE TABLE T LINES I.
      IF I = 0.
        WRITE: / 'No Dynpros were found for unload function'.
      ELSE.
        WRITE: / 'The following Dynpros have been unloaded : '.
        PERFORM LOOP_THROUGH_T.
      ENDIF.
    WHEN 'U'.
      PERFORM UPLOAD_OBJECTS.
      DESCRIBE TABLE T LINES I.
      CASE I.
        WHEN 0.
          WRITE:  / 'No Dynpros were found for restore function'.
        WHEN OTHERS.
          WRITE: / 'The following Dynpros have been restored : '.
          PERFORM LOOP_THROUGH_T.
      ENDCASE.
      IF MAIN EQ 'Y'.
        CASE OLDNAME.
          WHEN SPACE.
            CLEAR LINE.
            WRITE : 'ABAP : ' TO LINE.
            WRITE R-NAME TO LINE+8.
            WRITE 'has been restored' TO LINE+55.
            CONDENSE LINE.
            WRITE: / LINE.
          WHEN OTHERS.
            CLEAR LINE.
            WRITE : 'ABAP : ' TO LINE.
            WRITE R-NAME TO LINE+8.
            WRITE 'has been restored - original name :'
               TO LINE+55.
            WRITE OLDNAME TO LINE+92.
            CONDENSE LINE.
            WRITE: / LINE.
        ENDCASE.
      ELSE.
        CLEAR LINE.
        WRITE : 'ABAP : ' TO LINE.
        WRITE R-NAME TO LINE+8.
        WRITE 'has been restored' TO LINE+55.
        CONDENSE LINE.
        WRITE: / LINE.
      ENDIF.
  ENDCASE.
ENDFORM.
/      print progname + dynpro nrs that have been processed.     */
FORM LOOP_THROUGH_T.
  LOOP AT T.
    CLEAR LINE.
    WRITE R-NAME TO LINE.
    WRITE T-NUMBER TO LINE+50.
    CONDENSE LINE.
    WRITE: / LINE.
  ENDLOOP.
ENDFORM.
/            Download Objects                                    */
FORM DOWNLOAD_OBJECTS.
  PERFORM UNLOAD_ABAP.                 "ABAP source, texts, attr
  SELECT SINGLE * FROM TRDIR
   WHERE NAME EQ R-NAME.
  IF TRDIR-SUBC = 'I'.
    CASE INCLUDES.                     "Included file wanted
      WHEN 'Y'.
        PERFORM SCAN4-INCLUDES.
    ENDCASE.
  ENDIF.
  PERFORM UNLOAD_CUA.                  "CUA stuff
  PERFORM DOWNLOAD_DATA.               "Download EEE file to PC
  PERFORM BUILD_T.        "Build table of all dynpros in ABAP
  DESCRIBE TABLE T LINES I.
  CASE I.
    WHEN 0.            "if no dynpros exist then cannot download any
      PERFORM DOWNLOAD_DATA.           "Download EEE file to PC
    WHEN OTHERS.
      PERFORM UNLOAD_DYNPROS.          "Get Raw dynpros from SAP
      PERFORM UNLOAD_DYNPRO_COMPONENTS."Convert to table
      PERFORM DOWNLOAD_DATA.           "Download ABAP etc. to PC
      PERFORM DOWNLOAD_BIN_H1.         "Download dynpro header
      PERFORM DOWNLOAD_BIN_F1.         "Download dynpro fields
  ENDCASE.
ENDFORM.
/  Split ABAP up into its component parts                        */
/                           A) Program source (72)               */
/                           B) Texts          (132)              */
/                           C) Attributes     (117)              */
/                           D) CUA stuff      (Various)          */
FORM UNLOAD_ABAP.
/    Get ABAP language. Only required on download.               */
  SELECT SINGLE * FROM TRDIR
    WHERE NAME EQ R-NAME.
  MOVE TRDIR-RLOAD TO R-LANGUAGE.
  READ REPORT R-NAME INTO S.           "Get source into table S
  MOVE '????SRCE' TO S-TXT.
  INSERT  S INDEX 1.
/    Text elements, Numbered texts, headings, selection texts    */
/    Read text elements with logon language. If they don't       */
/    exist read with the value taken from TRDIR.                 */
  READ TEXTPOOL R-NAME INTO U LANGUAGE SY-LANGU.
  IF SY-SUBRC NE 0.
    READ TEXTPOOL R-NAME INTO U LANGUAGE R-LANGUAGE.
  ENDIF.
  DESCRIBE TABLE U LINES I.
  CASE I.
    WHEN 0.
    WHEN OTHERS.
      MOVE '????TEXT' TO S-TXT.
      APPEND S.
      LOOP AT U.
        MOVE U-TXT TO S-TXT.
        APPEND S.
        DELETE U.
      ENDLOOP.
  ENDCASE.
/    Retrieve Attributes from TRDIR and add to table S           */
/    Change language to logged on language                       */
  MOVE '????ATTR' TO S-TXT.
  APPEND S.
  SELECT SINGLE * FROM TRDIR
         WHERE NAME EQ R-NAME.
  MOVE SY-LANGU TO TRDIR-RLOAD.
  MOVE-CORRESPONDING TRDIR TO DIR.
  MOVE DIR TO S-TXT.
  APPEND S.
ENDFORM.
/             retrieve CUA stuff and append to table S.          */
FORM UNLOAD_CUA.
  MOVE R-NAME TO EU_KEY-NAME.          "Program name for CUA
  MOVE 'D' TO EU_KEY-SPRSL.            "CUA seems to want D as lang
MOVE R-LANGUAGE TO EU_KEY-SPRSL.     "Language              "rel 2.2
IMPORT STA FUN MEN MTX ACT BUT PFK SET LAST INC STX DOC    "rel 2.2
  IMPORT STA STX FUN MEN MTX ACT BUT PFK SET LAST INC DOC     "rel 3.0
         ATT FDN MDN SYM FIN           "rel 3.0
          FROM DATABASE EUDB(CU) ID EU_KEY.
  IF SY-SUBRC NE 0.                    "No statuses
    EXIT.
  ENDIF.
read titles in logged on language. If not present use
language from TRDIR.
  CASE REL3.
    WHEN SPACE.                        "(rel 4)
      SELECT * FROM RSMPTEXTS WHERE PROGNAME EQ R-NAME
                        AND SPRSL = SY-LANGU.
        MOVE-CORRESPONDING RSMPTEXTS TO FTX.
        APPEND FTX.
      ENDSELECT.
      IF SY-SUBRC NE 0.
        SELECT * FROM RSMPTEXTS WHERE PROGNAME EQ R-NAME
                          AND SPRSL = R-LANGUAGE.
          MOVE-CORRESPONDING RSMPTEXTS TO FTX.
          APPEND FTX.
        ENDSELECT.
      ENDIF.
      DESCRIBE TABLE FTX LINES I.
      IF   I > 0.
        MOVE '????FTXT' TO S-TXT.
        APPEND S.
        LOOP AT FTX.
          MOVE FTX TO S-TXT.
          APPEND S.
        ENDLOOP.
      ENDIF.
    WHEN OTHERS.
      SELECT * FROM TITLE WHERE PROGNAME   EQ R-NAME
                          AND   DDLANGUAGE EQ SY-LANGU.
        MOVE-CORRESPONDING TITLE TO TIT.
        APPEND TIT.
      ENDSELECT.
      IF SY-SUBRC NE 0.
        SELECT * FROM TITLE WHERE PROGNAME   EQ R-NAME
                            AND   DDLANGUAGE EQ R-LANGUAGE.
          MOVE-CORRESPONDING TITLE TO TIT.
          APPEND TIT.
        ENDSELECT.
      ENDIF.
  ENDCASE.
  DESCRIBE TABLE STA LINES I.
  IF   I > 0.
    MOVE '????STAT' TO S-TXT.
    APPEND S.
    LOOP AT STA.
      MOVE STA TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE FUN LINES I.
  IF   I > 0.
    MOVE '????FUNC' TO S-TXT.
    APPEND S.
    LOOP AT FUN.
      MOVE FUN TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE MEN LINES I.
  IF   I > 0.
    MOVE '????MEN1' TO S-TXT.
    APPEND S.
    LOOP AT MEN.
      MOVE MEN TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE MTX LINES I.
  IF   I > 0.
    MOVE '????MTX1' TO S-TXT.
    APPEND S.
    LOOP AT MTX.
      MOVE MTX TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE ACT LINES I.
  IF   I > 0.
    MOVE '????ACTN' TO S-TXT.
    APPEND S.
    LOOP AT ACT.
      MOVE ACT TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE BUT LINES I.
  IF   I > 0.
    MOVE '????BUTN' TO S-TXT.
    APPEND S.
    LOOP AT BUT.
      MOVE BUT TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE PFK LINES I.
  IF   I > 0.
    MOVE '????PFKY' TO S-TXT.
    APPEND S.
    LOOP AT PFK.
      MOVE PFK TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE SET LINES I.
  IF   I > 0.
    MOVE '????SETS' TO S-TXT.
    APPEND S.
    LOOP AT SET.
      MOVE SET TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  IF LAST NE SPACE.
    MOVE '????LIST' TO S-TXT.
    APPEND S.
    MOVE LAST TO S-TXT.
    APPEND S.
  ENDIF.
  DESCRIBE TABLE INC LINES I.
  IF   I > 0.
    MOVE '????INCL' TO S-TXT.
    APPEND S.
    LOOP AT INC.
      MOVE INC TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE STX LINES I.
  IF   I > 0.
    MOVE '????STXT' TO S-TXT.
    APPEND S.
    LOOP AT STX.
      MOVE STX TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE DOC LINES I.
  IF   I > 0.
    MOVE '????DOCN' TO S-TXT.
    APPEND S.
    LOOP AT DOC.
      MOVE DOC TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE TIT LINES I.
  IF   I > 0.
    MOVE '????TITL' TO S-TXT.
    APPEND S.
    LOOP AT TIT.
      MOVE TIT TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
Next 5 tables are rel 3.0 specific  (ATT, FDN, MDN, SYM, FIN)
  DESCRIBE TABLE ATT LINES I.
  IF   I > 0.
    MOVE '????VATT' TO S-TXT.
    APPEND S.
    LOOP AT ATT.
      MOVE ATT TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE FDN LINES I.
  IF   I > 0.
    MOVE '????VFDN' TO S-TXT.
    APPEND S.
    LOOP AT FDN.
      MOVE FDN TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE MDN LINES I.
  IF   I > 0.
    MOVE '????VMDN' TO S-TXT.
    APPEND S.
    LOOP AT MDN.
      MOVE MDN TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE SYM LINES I.
  IF   I > 0.
    MOVE '????VSYM' TO S-TXT.
    APPEND S.
    LOOP AT SYM.
      MOVE SYM TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
  DESCRIBE TABLE FIN LINES I.
  IF   I > 0.
    MOVE '????VFIN' TO S-TXT.
    APPEND S.
    LOOP AT FIN.
      MOVE FIN TO S-TXT.
      APPEND S.
    ENDLOOP.
  ENDIF.
ENDFORM.
/

Similar Messages

  • Download ABAP Objects to a local directory

    Hi! Just want to ask if there's someone who knows any program that can download a copy of ABAP Objects to a local directory? Thanks a lot!!!

    Hi Jason.
    Find the Below code to download ABAP Source code to your local directory . Before downloading just create " :\source " directory.
    Hope this info Helps YOU.
    <i>Reward Points If It Helps YOU.</i>
    Regards,
    Raghav
    [code]*
    Download and Upload your ABAP program from/to your local harddisk.
    Allows individual or mass transfering of ABAP program.
    Before using, create a folder c:\Source
    REPORT ZDOWN_UP_LOAD
            NO STANDARD PAGE HEADING
            LINE-SIZE  255.
    Declare Database Objects
    tables:
       DOKIL,
       TRDIR.
    Constants
    CONSTANTS:
       MC_TRDIR_IDENTIFIER(72)  TYPE C VALUE '%&%& RDIR',
       MC_REPORT_IDENTIFIER(72) TYPE C VALUE '%&%& REPO',
       MC_TEXT_IDENTIFIER(72)   TYPE C VALUE '%&%& TEXP',
       MC_THEAD_IDENTIFIER(72)  TYPE C VALUE '%&%& HEAD',
       MC_DOC_IDENTIFIER(72)    TYPE C VALUE '%&%& DOKL',
       MC_TRDIR_SHORT(4)        TYPE C VALUE 'RDIR',
       MC_REPORT_SHORT(4)       TYPE C VALUE 'REPO',
       MC_TEXT_SHORT(4)         TYPE C VALUE 'TEXP',
       MC_THEAD_SHORT(4)        TYPE C VALUE 'HEAD',
       MC_DOC_SHORT(4)          TYPE C VALUE 'DOKP'.
    Declare Module level data structures
    DATA: BEGIN OF MTAB_PROGRAM_SOURCE OCCURS 0,
             LINE(72) TYPE C,
           END OF MTAB_PROGRAM_SOURCE.
    DATA: MTAB_PROGRAM_TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE.
    DATA: MTAB_PROGRAM_TEXTS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.
    DATA: MSTR_THEAD LIKE THEAD.
    DATA: BEGIN OF MTAB_PROGRAM_FILE OCCURS 0,
             LINE(275) TYPE C,
           END OF MTAB_PROGRAM_FILE.
    DATA: BEGIN OF MTAB_DIRECTORY OCCURS 0,
             NAME LIKE TRDIR-NAME,
             DESC(72) TYPE C,
             SAVENAME LIKE RLGRAP-FILENAME,
           END OF MTAB_DIRECTORY.
    DATA: BEGIN OF MTAB_PROGRAM_DOCUMENTATION OCCURS 0,
             LINE(255) TYPE C,
           END OF MTAB_PROGRAM_DOCUMENTATION.
    Selection Screen
    *-- Options for upload/download of programs
    SELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.
    PARAMETERS:
       RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'.       " Download reports
    SELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.
    SELECT-OPTIONS:
       S_NAME  FOR TRDIR-NAME,              " Program Name
       S_SUBC  FOR TRDIR-SUBC               " Program Type
               DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by default
       S_CNAM  FOR TRDIR-CNAM               " Created by
               DEFAULT SY-UNAME,
       S_UNAM  FOR TRDIR-UNAM,              " Last Changed by
       S_CDAT  FOR TRDIR-CDAT,              " Creation date
       S_UDAT  FOR TRDIR-UDAT.              " Last update date
    SELECTION-SCREEN END OF BLOCK FRM_TRDIR.
    *-- Options for uploading programs
    PARAMETERS:
       RB_UP   RADIOBUTTON GROUP UDL.       " Upload reports
    SELECTION-SCREEN BEGIN OF BLOCK FRM_UPLOAD WITH FRAME TITLE TEXT-UPL.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(29) TEXT-SNG.
    PARAMETERS:
       RB_FILE RADIOBUTTON GROUP HOW DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 33(42) TEXT-FNA.
    SELECTION-SCREEN END OF LINE.
    PARAMETERS:
       RB_LIST RADIOBUTTON GROUP HOW.
    SELECTION-SCREEN END OF BLOCK FRM_UPLOAD.
    SELECTION-SCREEN END OF BLOCK FRM_OPTIONS.
    *-- Options for up/downloading programs
    SELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.
    PARAMETERS:
       RB_DOS  RADIOBUTTON GROUP FIL DEFAULT 'X', " Save to local
       RB_UNIX RADIOBUTTON GROUP FIL,       " Save to UNIX
       P_PATH  LIKE RLGRAP-FILENAME         " Path to save files to
             DEFAULT 'c:\Source\'.
    SELECTION-SCREEN END OF BLOCK FRM_FILEN.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-LOW.
       CALL FUNCTION 'F4_PROGRAM'
            EXPORTING
                 OBJECT             = S_NAME-LOW
                 SUPPRESS_SELECTION = 'X'
            IMPORTING
                 RESULT             = S_NAME-LOW
            EXCEPTIONS
                 OTHERS             = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-HIGH.
       CALL FUNCTION 'F4_PROGRAM'
            EXPORTING
                 OBJECT             = S_NAME-HIGH
                 SUPPRESS_SELECTION = 'X'
            IMPORTING
                 RESULT             = S_NAME-HIGH
            EXCEPTIONS
                 OTHERS             = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-LOW.
       PERFORM GET_NAME USING 'S_UNAM-LOW'
                     CHANGING S_UNAM-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-HIGH.
       PERFORM GET_NAME USING 'S_UNAM-HIGH'
                     CHANGING S_UNAM-HIGH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-LOW.
       PERFORM GET_NAME USING 'S_CNAM-LOW'
                     CHANGING S_CNAM-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-HIGH.
       PERFORM GET_NAME USING 'S_CNAM-HIGH'
                     CHANGING S_CNAM-HIGH.
    TOP-OF-PAGE.
       IF RB_LIST = 'X'.
         FORMAT COLOR COL_HEADING.
         NEW-LINE.
         WRITE: AT 3 TEXT-H01,
                AT 15 TEXT-H03.
         FORMAT COLOR OFF.
       ENDIF.
    AT LINE-SELECTION.
       CHECK RB_LIST = 'X'.                 " only do in list mode
       READ LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.
    *-- Read file into an internal table
       PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
                                     USING  MTAB_DIRECTORY-SAVENAME.
    *-- Split table into TADIR entry, report lines, and report text
       PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
                                          MTAB_PROGRAM_SOURCE
                                          MTAB_PROGRAM_TEXTS
                                          MTAB_PROGRAM_DOCUMENTATION
                                 CHANGING TRDIR
                                          MSTR_THEAD.
    *-- Save all of the data
       PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
                                        MTAB_PROGRAM_TEXTS
                                        MTAB_PROGRAM_DOCUMENTATION
                                 USING  TRDIR
                                        MSTR_THEAD.
    Start of processing
    START-OF-SELECTION.
       FORMAT COLOR COL_NORMAL.
       IF RB_DOWN = 'X'.
         PERFORM DOWNLOAD_REPORTS.
       ELSEIF RB_UP = 'X'.
         PERFORM UPLOAD_REPORTS.
       ENDIF.
    END-OF-SELECTION.
       IF RB_DOWN = 'X'.
         CONCATENATE P_PATH
                     'directory.txt'
           INTO P_PATH.
         PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_DIRECTORY
                                    USING  P_PATH.
       ENDIF.
          FORM UPLOAD_REPORTS                                           *
    FORM UPLOAD_REPORTS.
    *-- Can upload a reports entered in selection criteria or
    *-- select from a list.  List can be from index.txt in same directory
    *-- (created by the download) or by reading the first line of each file
    *-- in the directory.
       IF RB_FILE = 'X'. " Upload single program from a file
    *-- Read file into an internal table
         PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
                                       USING  P_PATH.
    *-- Split table into TADIR entry, report lines, and report text
         PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
                                            MTAB_PROGRAM_SOURCE
                                            MTAB_PROGRAM_TEXTS
                                            MTAB_PROGRAM_DOCUMENTATION
                                   CHANGING TRDIR
                                            MSTR_THEAD.
    *-- Save all of the data
         PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
                                          MTAB_PROGRAM_TEXTS
                                          MTAB_PROGRAM_DOCUMENTATION
                                   USING  TRDIR
                                          MSTR_THEAD.
       ELSEIF RB_LIST = 'X'. " Show list for user to choose from
    *-- get list of report names/descriptions from directory text
         CONCATENATE P_PATH
                     'directory.txt'
         INTO P_PATH.
         PERFORM READ_REPORT_FROM_DISK TABLES MTAB_DIRECTORY
                                       USING  P_PATH.
         SORT MTAB_DIRECTORY.
    *-- Write out list of report names/descriptions
         LOOP AT MTAB_DIRECTORY.
           WRITE:
             / MTAB_DIRECTORY-NAME UNDER TEXT-H01,
               MTAB_DIRECTORY-DESC UNDER TEXT-H03,
               MTAB_DIRECTORY-SAVENAME.
         ENDLOOP.
    *-- Process user selections for reports to upload.
       ENDIF.
    ENDFORM.                               " upload_reports
          FORM DOWNLOAD_REPORTS                                         *
          From the user selections, get all programs that meet the      *
          criteria, and save them in ftab_program_directory.            *
          Also save the report to disk.                                 *
    FORM DOWNLOAD_REPORTS.
       DATA:
         LC_FULL_FILENAME LIKE RLGRAP-FILENAME.
    *-- The table is put into an internal table because the program will
    *-- abend if multiple transfers to a dataset occur within a SELECT/
    *-- ENDSELCT (tested on 3.1H)
       SELECT * FROM  TRDIR
              INTO TABLE MTAB_PROGRAM_TRDIR
              WHERE  NAME  IN S_NAME
              AND    SUBC  IN S_SUBC
              AND    CNAM  IN S_CNAM
              AND    UNAM  IN S_UNAM
              AND    CDAT  IN S_CDAT
              AND    UDAT  IN S_UDAT.
       LOOP AT MTAB_PROGRAM_TRDIR.
    *-- Clear out text and source code tables
         CLEAR:
           MTAB_PROGRAM_FILE,
           MTAB_PROGRAM_SOURCE,
           MTAB_PROGRAM_TEXTS,
           MTAB_PROGRAM_DOCUMENTATION.
         REFRESH:
           MTAB_PROGRAM_FILE,
           MTAB_PROGRAM_SOURCE,
           MTAB_PROGRAM_TEXTS,
           MTAB_PROGRAM_DOCUMENTATION.
    *-- Get the report
         READ REPORT MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_SOURCE.
    *-- Get the text for the report
         READ TEXTPOOL MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_TEXTS.
    *-- Get the documentation for the report
         CLEAR DOKIL.
         SELECT * UP TO 1 ROWS FROM DOKIL
                WHERE  ID          = 'RE'
                AND    OBJECT      = MTAB_PROGRAM_TRDIR-NAME
                AND    LANGU       = SY-LANGU
                AND    TYP         = 'E'
                ORDER BY VERSION DESCENDING.
         ENDSELECT.
    *-- Documentation exists for this object
         IF SY-SUBRC = 0.
           CALL FUNCTION 'DOCU_READ'
                EXPORTING
                     ID      = DOKIL-ID
                     LANGU   = DOKIL-LANGU
                     OBJECT  = DOKIL-OBJECT
                     TYP     = DOKIL-TYP
                     VERSION = DOKIL-VERSION
                IMPORTING
                     HEAD    = MSTR_THEAD
                TABLES
                     LINE    = MTAB_PROGRAM_DOCUMENTATION
                EXCEPTIONS
                     OTHERS  = 1.
         ENDIF.
    *-- Put the report code and texts into a single file
    *-- Put the identifier line in so that the start of the TRDIR line
    *-- is marked
         CONCATENATE MC_TRDIR_IDENTIFIER
         MTAB_PROGRAM_TRDIR-NAME
         INTO MTAB_PROGRAM_FILE-LINE.
         APPEND MTAB_PROGRAM_FILE.
    *-- Add the TRDIR line
         MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TRDIR.
         APPEND MTAB_PROGRAM_FILE.
    *-- Put the identifier line in so that the start of the report code
    *-- is marked
         CONCATENATE MC_REPORT_IDENTIFIER
                     MTAB_PROGRAM_TRDIR-NAME
           INTO MTAB_PROGRAM_FILE-LINE.
         APPEND MTAB_PROGRAM_FILE.
    *-- Add the report code
         LOOP AT MTAB_PROGRAM_SOURCE.
           MTAB_PROGRAM_FILE = MTAB_PROGRAM_SOURCE.
           APPEND MTAB_PROGRAM_FILE.
         ENDLOOP.
    *-- Put the identifier line in so that the start of the report text
    *-- is marked
         CONCATENATE MC_TEXT_IDENTIFIER
                     MTAB_PROGRAM_TRDIR-NAME
           INTO MTAB_PROGRAM_FILE-LINE.
         APPEND MTAB_PROGRAM_FILE.
    *-- Add the report texts
         LOOP AT MTAB_PROGRAM_TEXTS.
           MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TEXTS-ENTRY .
           APPEND MTAB_PROGRAM_FILE.
         ENDLOOP.
    *-- Put the identifier line in so that the start of the THEAD record
    *-- is marked
         CONCATENATE MC_THEAD_IDENTIFIER
                     MTAB_PROGRAM_TRDIR-NAME
           INTO MTAB_PROGRAM_FILE-LINE.
         APPEND MTAB_PROGRAM_FILE.
         MTAB_PROGRAM_FILE = MSTR_THEAD.
         APPEND MTAB_PROGRAM_FILE.
    *-- Put the identifier line in so that the start of the report
    *-- documentation is marked
         CONCATENATE MC_DOC_IDENTIFIER
                     MTAB_PROGRAM_TRDIR-NAME
           INTO MTAB_PROGRAM_FILE-LINE.
         APPEND MTAB_PROGRAM_FILE.
    *-- Add the report documentation
         LOOP AT MTAB_PROGRAM_DOCUMENTATION.
           MTAB_PROGRAM_FILE = MTAB_PROGRAM_DOCUMENTATION.
           APPEND MTAB_PROGRAM_FILE.
         ENDLOOP.
    *-- Make the fully pathed filename that report will be saved to
         CONCATENATE P_PATH
                     MTAB_PROGRAM_TRDIR-NAME
                     '.txt'
           INTO LC_FULL_FILENAME.
         PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_PROGRAM_FILE
                                    USING  LC_FULL_FILENAME.
    *-- Write out message with Program Name/Description
         READ TABLE MTAB_PROGRAM_TEXTS WITH KEY ID = 'R'.
         IF SY-SUBRC = 0.
           MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
           MTAB_DIRECTORY-DESC = MTAB_PROGRAM_TEXTS-ENTRY.
           MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
           APPEND MTAB_DIRECTORY.
           WRITE: / MTAB_PROGRAM_TRDIR-NAME,
                    MTAB_PROGRAM_TEXTS-ENTRY(65) COLOR COL_HEADING.
         ELSE.
           MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
           MTAB_DIRECTORY-DESC = 'No description available'.
           MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
           APPEND MTAB_DIRECTORY.
           WRITE: / MTAB_PROGRAM_TRDIR-NAME.
         ENDIF.
       ENDLOOP.
    ENDFORM.                               " BUILD_PROGRAM_DIRECTORY
          FORM SAVE_TABLE_TO_FILE                                       *
    -->  FTAB_TABLE                                                    *
    -->  F_FILENAME                                                    *
    FORM SAVE_TABLE_TO_FILE TABLES FTAB_TABLE
                             USING  F_FILENAME.
       IF RB_DOS = 'X'.                  " Save file to presentation server
         CALL FUNCTION 'WS_DOWNLOAD'
              EXPORTING
                   FILENAME = F_FILENAME
                   FILETYPE = 'ASC'
              TABLES
                   DATA_TAB = FTAB_TABLE
              EXCEPTIONS
                   OTHERS   = 4.
         IF SY-SUBRC NE 0.
           WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
                    F_FILENAME COLOR COL_NEGATIVE.
         ENDIF.
       ELSE.                                " Save file to application serve
         OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE encoding default.
         IF SY-SUBRC = 0.
           LOOP AT FTAB_TABLE.
             TRANSFER FTAB_TABLE TO F_FILENAME.
             IF SY-SUBRC NE 0.
               WRITE: / 'Error writing record to file;' COLOR COL_NEGATIVE,
                        F_FILENAME COLOR COL_NEGATIVE.
             ENDIF.
           ENDLOOP.
         ELSE.
           WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
                    F_FILENAME COLOR COL_NEGATIVE.
         ENDIF.
       ENDIF.                               " End RB_DOS
    ENDFORM.                               " SAVE_PROGRAM
          FORM READ_REPORT_FROM_DISK                                    *
          Read report into internal table.  Can read from local or      *
          remote computer                                               *
    FORM READ_REPORT_FROM_DISK TABLES FTAB_TABLE
                                USING  F_FILENAME.
       DATA:
          LC_MESSAGE(128) TYPE C.
       CLEAR   FTAB_TABLE.
       REFRESH FTAB_TABLE.
       IF RB_DOS = 'X'.
         TRANSLATE F_FILENAME USING '/\'.   " correct slash for Dos PC file
         CALL FUNCTION 'WS_UPLOAD'
              EXPORTING
                   FILENAME            = F_FILENAME
                   FILETYPE            = 'ASC'
              TABLES
                   DATA_TAB            = FTAB_TABLE
              EXCEPTIONS
                   CONVERSION_ERROR    = 1
                   FILE_OPEN_ERROR     = 2
                   FILE_READ_ERROR     = 3
                   INVALID_TABLE_WIDTH = 4
                   INVALID_TYPE        = 5
                   NO_BATCH            = 6
                   UNKNOWN_ERROR       = 7
                   OTHERS              = 8.
         IF SY-SUBRC >< 0.
           WRITE: / 'Error reading file from local PC' COLOR COL_NEGATIVE.
         ENDIF.
       ELSEIF RB_UNIX = 'X'.
         TRANSLATE F_FILENAME USING '\/'.   " correct slash for unix
         OPEN DATASET F_FILENAME FOR INPUT MESSAGE LC_MESSAGE IN TEXT MODE encoding default.
         IF SY-SUBRC = 0.
           DO.
             READ DATASET F_FILENAME INTO FTAB_TABLE.
             IF SY-SUBRC = 0.
               APPEND FTAB_TABLE.
             ELSE.
               EXIT.
             ENDIF.
           ENDDO.
           CLOSE DATASET F_FILENAME.
         ELSE.
           WRITE: / 'Error reading file from remote computer'
                           COLOR COL_NEGATIVE,
                  / LC_MESSAGE,
                  / F_FILENAME.
           SY-SUBRC = 4.
         ENDIF.
       ENDIF.
    ENDFORM.                               " READ_REPORT_FROM_DISK
          FORM SPLIT_INCOMING_FILE                                      *
    -->  FTAB_PROGRAM_FILE                                             *
    -->  FTAB_PROGRAM_SOURCE                                           *
    -->  `                                                             *
    -->  FTAB_PROGRAM_TEXTS                                            *
    FORM SPLIT_INCOMING_FILE TABLES FTAB_PROGRAM_FILE
                                          STRUCTURE MTAB_PROGRAM_FILE
                                     FTAB_PROGRAM_SOURCE
                                          STRUCTURE MTAB_PROGRAM_SOURCE
                                     FTAB_PROGRAM_TEXTS
                                          STRUCTURE MTAB_PROGRAM_TEXTS
                                     FTAB_PROGRAM_DOCUMENTATION
                                       STRUCTURE MTAB_PROGRAM_DOCUMENTATION
                            CHANGING FSTR_TRDIR
                                     FSTR_THEAD.
       DATA:
         LC_DATATYPE(4) TYPE C,             " Type of data, REPO, TEXP, RDIR
         LC_PROGRAM_FILE LIKE MTAB_PROGRAM_FILE.
       LOOP AT FTAB_PROGRAM_FILE.
         LC_PROGRAM_FILE = FTAB_PROGRAM_FILE.
         CASE LC_PROGRAM_FILE(9).
           WHEN MC_TRDIR_IDENTIFIER.
             LC_DATATYPE = MC_TRDIR_SHORT.
           WHEN MC_REPORT_IDENTIFIER.
             LC_DATATYPE = MC_REPORT_SHORT.
           WHEN MC_TEXT_IDENTIFIER.
             LC_DATATYPE = MC_TEXT_SHORT.
           WHEN MC_DOC_IDENTIFIER.
             LC_DATATYPE = MC_DOC_SHORT.
           WHEN MC_THEAD_IDENTIFIER.
             LC_DATATYPE = MC_THEAD_SHORT.
           WHEN OTHERS. " Actual contents of report, trdir, or text
             CASE LC_DATATYPE.
               WHEN MC_TRDIR_SHORT.
                 FSTR_TRDIR = FTAB_PROGRAM_FILE.
               WHEN MC_REPORT_SHORT.
                 FTAB_PROGRAM_SOURCE = FTAB_PROGRAM_FILE.
                 APPEND FTAB_PROGRAM_SOURCE.
               WHEN MC_TEXT_SHORT.
                 FTAB_PROGRAM_TEXTS-key = FTAB_PROGRAM_FILE-line.
                 APPEND FTAB_PROGRAM_TEXTS.
               WHEN MC_THEAD_SHORT.
                 FSTR_THEAD = FTAB_PROGRAM_FILE.
               WHEN MC_DOC_SHORT.
                 FTAB_PROGRAM_DOCUMENTATION = FTAB_PROGRAM_FILE.
                 APPEND FTAB_PROGRAM_DOCUMENTATION.
             ENDCASE.
         ENDCASE.
       ENDLOOP.
    ENDFORM.                               " SPLIT_INCOMING_FILE
          FORM INSERT_NEW_REPORT                                        *
    -->  FTAB_PROGRAM_SOURCE                                           *
    -->  FTAB_PROGRAM_TEXTS                                            *
    -->  F_TRDIR                                                       *
    FORM INSERT_NEW_REPORT TABLES FTAB_PROGRAM_SOURCE
                                       STRUCTURE MTAB_PROGRAM_SOURCE
                                   FTAB_PROGRAM_TEXTS
                                        STRUCTURE MTAB_PROGRAM_TEXTS
                                   FTAB_PROGRAM_DOCUMENTATION
                                        STRUCTURE MTAB_PROGRAM_DOCUMENTATION
                            USING  FSTR_TRDIR LIKE TRDIR
                                   FSTR_THEAD LIKE MSTR_THEAD.
       DATA:
         LC_OBJ_NAME LIKE E071-OBJ_NAME,
         LC_LINE2(40)     TYPE C,
         LC_ANSWER(1)     TYPE C.
    *-- read trdir to see if the report already exists, if it does, prompt
    *-- user to overwrite or abort.
       SELECT SINGLE * FROM TRDIR WHERE NAME = FSTR_TRDIR-NAME.
       IF SY-SUBRC = 0.                     " Already exists
         CONCATENATE 'want to overwrite report'
                     FSTR_TRDIR-NAME
           INTO LC_LINE2 SEPARATED BY SPACE.
         CONCATENATE LC_LINE2
           INTO LC_LINE2.
         CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
              EXPORTING
                  DEFAULTOPTION  = 'N'
                  TEXTLINE1   = 'The selected report already exists, do you'
                  TEXTLINE2      = LC_LINE2
                  TITEL          = 'Report already exists'
                  CANCEL_DISPLAY = SPACE
              IMPORTING
                   ANSWER         = LC_ANSWER
              EXCEPTIONS
                   OTHERS         = 1.
       ELSE.
         LC_ANSWER = 'J'.
       ENDIF.
       IF LC_ANSWER = 'J'.
    *-- Create the TADIR entry.  (TRDIR entry created by INSERT REPORT)
         LC_OBJ_NAME = TRDIR-NAME.
         CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'
              EXPORTING
                   WI_E071_PGMID     = 'R3TR'
                   WI_E071_OBJECT    = 'PROG'
                   WI_E071_OBJ_NAME  = LC_OBJ_NAME
                   WI_TADIR_DEVCLASS = '$TMP'
              EXCEPTIONS
                   EXIT              = 3
                   OTHERS            = 4.
         IF SY-SUBRC = 0.
    *-- Create Report
           INSERT REPORT FSTR_TRDIR-NAME FROM FTAB_PROGRAM_SOURCE.
    *-- Create Texts
           INSERT TEXTPOOL FSTR_TRDIR-NAME FROM FTAB_PROGRAM_TEXTS
                  LANGUAGE SY-LANGU.
    *-- Save Documentation
           CALL FUNCTION 'DOCU_UPDATE'
                EXPORTING
                     HEAD    = FSTR_THEAD
                     STATE   = 'A'
                     TYP     = 'E'
                     VERSION = '1'
                TABLES
                     LINE    = FTAB_PROGRAM_DOCUMENTATION
                EXCEPTIONS
                     OTHERS  = 1.
         ELSE.
           WRITE: / 'Error updating the TADIR entry' COLOR COL_NEGATIVE,
                    'Program' COLOR COL_NEGATIVE INTENSIFIED OFF,
                    FSTR_TRDIR-NAME, 'was not loaded into SAP.'
                       COLOR COL_NEGATIVE INTENSIFIED OFF.
         ENDIF.
       ELSE.
         WRITE: / FSTR_TRDIR-NAME COLOR COL_NEGATIVE,
                  'was not uploaded into SAP.  Action cancelled by user'
                      COLOR COL_NEGATIVE INTENSIFIED OFF.
       ENDIF.
    ENDFORM.                               " INSERT_NEW_REPORT
          FORM GET_NAME                                                 *
    -->  VALUE(F_FIELD)                                                *
    -->  F_NAME                                                        *
    FORM GET_NAME USING VALUE(F_FIELD)
                CHANGING F_NAME.
       DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
             LC_PROG LIKE D020S-PROG,
             LC_DNUM LIKE D020S-DNUM.
       TRANSLATE F_FIELD TO UPPER CASE.
       refresh ltab_fields.
       LTAB_FIELDS-FIELDNAME = F_FIELD.
       append ltab_fields.
       LC_PROG =  SY-REPID .
       LC_DNUM =  SY-DYNNR .
       CALL FUNCTION 'DYNP_VALUES_READ'
            EXPORTING
                 DYNAME     = LC_PROG
                 DYNUMB     = LC_DNUM
            TABLES
                 dynpfields = ltab_fields
            EXCEPTIONS
                 OTHERS     = 01.
       read table ltab_fields index 1.
       IF SY-SUBRC EQ 0.
         F_NAME = LTAB_FIELDS-FIELDVALUE.
         refresh ltab_fields.
       ENDIF.
       CALL FUNCTION 'F4_USER'
            EXPORTING
                 OBJECT = F_NAME
            IMPORTING
                 RESULT = F_NAME.
    ENDFORM.                               " GET_NAME
    *TEXPZKBPROGS
    IDIR     File Download Options (File Selection)
    IFIL     File Options
    IFNA     Enter filename below (under File Options)
    IH01     Prog Name
    IH03     Program Description
    ISNG     Upload a single file
    IUDL     Upload to SAP/Download from SAP
    IUPL     File Upload Options
    R        Backup/Restore program source code with texts
    P_PATH          Path to save programs to
    RB_DOS          Files on local computer
    RB_DOWN         Download Programs
    RB_FILE         Upload a single file
    RB_LIST         Select program(s) from a list
    RB_UNIX         Files on remote computer
    RB_UP           Upload Programs to SAP
    S_CDAT           Date Created
    S_CNAM          Created by UserID
    S_NAME          Program Name
    S_SUBC          Program Type
    S_UDAT          Date Changed
    S_UNAM          Last Changed by UserID
    *HEADZKBPROGS
    DOKU      ZHRBDC54
    *DOKLZKBPROGS
    *--- End of Program[/code]

  • Download/Upload ABAP Programs, screens, texts, etc

    Hi Experts,
    Is there any standard program or any tool by which we can download/ upload ABAP programs, sapscripts, Screens, text-elements, Webdynpro for ABAP applications to a local file????
    The Download to local server option in SE38 just gives a text copy of program without any screens, text eleemnts, etc which is not as per my requirement.
    Points will be rewarded.
    Regards,
    Mansi.

    use This
    REPORT  ZDOWNLOAD.
    *& Report  ZDOWNLAOD
                     I N F O R M A T I O N                            *
    Module             :
    FUNCTIONAL         :
    Developer          :
    Functional Spec#   :
    Date Of Creation   :
    Transport Request# :
    Program NAME       :
    Transaction Code   :
    DEVELOPMENT CLASS  :
    DESCRIPTION        :
                     Change History
    FUNCTIONAL         :
    Developer          :
    Functional Spec#   :
    Date Of Change     :
    Transport Request# :
    Change DESCRIPTION :
    *======================================================================================================================
    Direct Download Enterprise version 1.3.1.
    THIS SOFTWARE IS FOR PERSONAL USE ONLY.
    THIS PROGRAM IS FREEWARE AND IS PROVIDED ON AN AS-IS BASIS WITHOUT WARRANTY OF ANY KIND.
    THE PROVIDER SPECIFICALLY DISCLAIMS ANY OTHER WARRANTY, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY
    OR FITNESS FOR A PARTICULAR PURPOSE.
    IN NO EVENT SHALL THE PROVIDER BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, SPECIAL OR INCIDENTAL DAMAGES, EVEN IF PROVIDER
    HAS BEEN ADVISED BY CLIENT OF THE POSSIBILITY OF SUCH POTENTIAL LOSS OR DAMAGE.
    CLIENT AGREES TO HOLD PROVIDER HARMLESS FROM AND AGAINST ANY AND ALL CLAIMS, LOSSES, LIABILITIES AND EXPENSES.  BY
    INSTALLING OR RUNNING THIS PROGRAM YOU ARE AGREEING TO THE TERMS AND CONDITONS STATED ABOVE.
    PROGRAM DESCRIPTION & USE
    Allows a user to download programs, Functions, DD definitions, etc to the presentation server.  This version searches
    recursively for nested includes and function modules, and allows you to download the resulting code as standard text
    or HTML web pages within a suitable directory structure.
    You can either search by object name, using wildcards if you wish, or a combination of Author and object name.  If
    you want all objects returned for a particular author then select the author name and choose the most suitable
    radiobutton.  All objects will be returned if the fields to the right hand side of the radiobutton are left completely
    blank.
    Compatible with R/3 Enterprise only, for older versions of SAP you will need Direct Download version 5.xx.
    This version removes the programming limitations imposed by developing across SAP releases 3 to 4.6.
    In order to be able to download files to the SAP server you must first set up a logical filepath within transaction
    'FILE', or use an existing one.  You must also create a external operating system command in SM69 called ZMKDIR. This
    will then be used to create any directories needed on the SAP server
    This program is intended to allow a person to keep a visual representation of a program for backup purposes only as
    has not been designed to allow programs to be uploaded to SAP systems.
    author          : E.G.Mellodew
    program cont
    SAP Tables
    TABLES: TRDIR, SEOCLASS, TFDIR, ENLFDIR, DD02L.
    Types
    text element structure
    TYPES: TTEXTTABLE LIKE TEXTPOOL.
    GUI titles
    TYPES: TGUITITLE LIKE D347T.
    Message classes
    TYPES: BEGIN OF TMESSAGE,
             ARBGB LIKE T100-ARBGB,
             STEXT LIKE T100A-STEXT,
             MSGNR LIKE T100-MSGNR,
             TEXT  LIKE T100-TEXT,
           END OF TMESSAGE.
    Screen flow.
    TYPES: BEGIN OF TSCREENFLOW,
             SCREEN LIKE D020S-DNUM,
             CODE LIKE D022S-LINE,
           END OF TSCREENFLOW.
    Holds a table\structure definition
    TYPES: BEGIN OF TDICTTABLESTRUCTURE,
             FIELDNAME LIKE DD03L-FIELDNAME,
             POSITION  LIKE DD03L-POSITION,
             KEYFLAG   LIKE DD03L-KEYFLAG,
             ROLLNAME  LIKE DD03L-ROLLNAME,
             DOMNAME   LIKE DD03L-DOMNAME,
             DATATYPE  LIKE DD03L-DATATYPE,
             LENG      LIKE DD03L-LENG,
             DDTEXT    LIKE DD04T-DDTEXT,
           END OF TDICTTABLESTRUCTURE.
    Holds a tables attributes + its definition
    TYPES: BEGIN OF TDICTTABLE,
             TABLENAME    LIKE DD03L-TABNAME,
             TABLETITLE   LIKE DD02T-DDTEXT,
             ISTRUCTURE TYPE TDICTTABLESTRUCTURE OCCURS 0,
           END OF TDICTTABLE.
    Include program names
    TYPES: BEGIN OF TINCLUDE,
             INCLUDENAME LIKE TRDIR-NAME,
             INCLUDETITLE LIKE TFTIT-STEXT,
           END OF TINCLUDE.
    Exception class texts
    TYPES: BEGIN OF TCONCEPT,
             CONSTNAME TYPE STRING,
             CONCEPT TYPE SOTR_CONC,
           END OF TCONCEPT.
    Method
    TYPES: BEGIN OF TMETHOD,
             CMPNAME LIKE VSEOMETHOD-CMPNAME,
             DESCRIPT LIKE VSEOMETHOD-DESCRIPT,
             EXPOSURE LIKE VSEOMETHOD-EXPOSURE,
             METHODKEY TYPE STRING,
           END OF TMETHOD.
    Class
    TYPES: BEGIN OF TCLASS,
             SCANNED(1),
             CLSNAME LIKE VSEOCLASS-CLSNAME,
             DESCRIPT LIKE VSEOCLASS-DESCRIPT,
             MSG_ID LIKE VSEOCLASS-MSG_ID,
             EXPOSURE LIKE VSEOCLASS-EXPOSURE,
             STATE LIKE VSEOCLASS-STATE,
             CLSFINAL LIKE VSEOCLASS-CLSFINAL,
             R3RELEASE LIKE VSEOCLASS-R3RELEASE,
             IMETHODS TYPE TMETHOD OCCURS 0,
             IDICTSTRUCT TYPE TDICTTABLE OCCURS 0,
             ITEXTELEMENTS TYPE TTEXTTABLE OCCURS 0,
             IMESSAGES TYPE TMESSAGE OCCURS 0,
             ICONCEPTS TYPE TCONCEPT OCCURS 0,
             TEXTELEMENTKEY TYPE STRING,
             PUBLICCLASSKEY TYPE STRING,
             PRIVATECLASSKEY TYPE STRING,
             PROTECTEDCLASSKEY TYPE STRING,
             TYPESCLASSKEY TYPE STRING,
             EXCEPTIONCLASS TYPE I,
           END OF TCLASS.
    function modules
    TYPES: BEGIN OF TFUNCTION,
             FUNCTIONNAME LIKE TFDIR-FUNCNAME,
             FUNCTIONGROUP LIKE ENLFDIR-AREA,
             INCLUDENUMBER LIKE TFDIR-INCLUDE,
             FUNCTIONMAININCLUDE LIKE TFDIR-FUNCNAME,
             FUNCTIONTITLE LIKE TFTIT-STEXT,
             TOPINCLUDENAME LIKE TFDIR-FUNCNAME,
             PROGNAME LIKE TFDIR-PNAME,
             PROGRAMLINKNAME LIKE TFDIR-PNAME,
             MESSAGECLASS LIKE T100-ARBGB,
             ITEXTELEMENTS TYPE TTEXTTABLE OCCURS 0,
             ISELECTIONTEXTS TYPE TTEXTTABLE OCCURS 0,
             IMESSAGES TYPE TMESSAGE OCCURS 0,
             IINCLUDES TYPE TINCLUDE OCCURS 0,
             IDICTSTRUCT TYPE TDICTTABLE OCCURS 0,
             IGUITITLE TYPE TGUITITLE OCCURS 0,
             ISCREENFLOW TYPE TSCREENFLOW OCCURS 0,
           END OF TFUNCTION.
    TYPES: BEGIN OF TPROGRAM,
             PROGNAME LIKE TRDIR-NAME,
             PROGRAMTITLE LIKE TFTIT-STEXT,
             SUBC LIKE TRDIR-SUBC,
             MESSAGECLASS LIKE T100-ARBGB,
             IMESSAGES TYPE TMESSAGE OCCURS 0,
             ITEXTELEMENTS TYPE TTEXTTABLE OCCURS 0,
             ISELECTIONTEXTS TYPE TTEXTTABLE OCCURS 0,
             IGUITITLE TYPE TGUITITLE OCCURS 0,
             ISCREENFLOW TYPE TSCREENFLOW OCCURS 0,
             IINCLUDES TYPE TINCLUDE OCCURS 0,
             IDICTSTRUCT TYPE TDICTTABLE OCCURS 0,
           END OF TPROGRAM.
    Internal tables
    Dictionary object
    DATA: IDICTIONARY TYPE STANDARD TABLE OF TDICTTABLE WITH HEADER LINE.
    Function modules.
    DATA: IFUNCTIONS TYPE STANDARD TABLE OF TFUNCTION WITH HEADER LINE.
    Tree display structure.
    DATA: ITREEDISPLAY TYPE STANDARD TABLE OF SNODETEXT WITH HEADER LINE.
    Message class data
    DATA: IMESSAGES TYPE STANDARD TABLE OF TMESSAGE WITH HEADER LINE.
    Holds a single message class an all of its messages
    DATA: ISINGLEMESSAGECLASS TYPE STANDARD TABLE OF TMESSAGE WITH HEADER LINE.
    Holds program related data
    DATA: IPROGRAMS TYPE STANDARD TABLE OF TPROGRAM WITH HEADER LINE.
    Classes
    DATA: ICLASSES TYPE STANDARD TABLE OF TCLASS WITH HEADER LINE.
    Table of paths created on the SAP server
    DATA: ISERVERPATHS TYPE STANDARD TABLE OF STRING WITH HEADER LINE.
    Table prototypes
    DATA: DUMIDICTSTRUCTURE TYPE STANDARD TABLE OF TDICTTABLESTRUCTURE.
    DATA: DUMITEXTTAB TYPE STANDARD TABLE OF TTEXTTABLE.
    DATA: DUMIINCLUDES TYPE STANDARD TABLE OF TINCLUDE.
    DATA: DUMIHTML TYPE STANDARD TABLE OF STRING.
    DATA: DUMIHEADER TYPE STANDARD TABLE OF STRING .
    DATA: DUMISCREEN TYPE STANDARD TABLE OF TSCREENFLOW .
    DATA: DUMIGUITITLE TYPE STANDARD TABLE OF TGUITITLE.
    DATA: DUMIMETHODS TYPE STANDARD TABLE OF TMETHOD.
    DATA: DUMICONCEPTS TYPE STANDARD TABLE OF TCONCEPT.
      Global objects
    DATA: OBJFILE TYPE REF TO CL_GUI_FRONTEND_SERVICES.
    DATA: OBJRUNTIMEERROR TYPE REF TO CX_ROOT.
    Constants
    CONSTANTS: VERSIONNO TYPE STRING VALUE '1.3.1'.
    CONSTANTS: TABLES TYPE STRING VALUE 'TABLES'.
    CONSTANTS: TABLE TYPE STRING VALUE 'TABLE'.
    CONSTANTS: LIKE TYPE STRING VALUE 'LIKE'.
    CONSTANTS: TYPE TYPE STRING VALUE 'TYPE'.
    CONSTANTS: TYPEREFTO TYPE STRING VALUE 'TYPE REF TO'.
    CONSTANTS: STRUCTURE TYPE STRING VALUE 'STRUCTURE'.
    CONSTANTS: LOWSTRUCTURE TYPE STRING VALUE 'structure'.
    CONSTANTS: OCCURS TYPE STRING VALUE 'OCCURS'.
    CONSTANTS: FUNCTION TYPE STRING VALUE 'FUNCTION'.
    CONSTANTS: CALLFUNCTION TYPE STRING VALUE ' CALL FUNCTION'.
    CONSTANTS: MESSAGE TYPE STRING  VALUE 'MESSAGE'.
    CONSTANTS: INCLUDE TYPE STRING VALUE 'INCLUDE'.
    CONSTANTS: LOWINCLUDE TYPE STRING VALUE 'include'.
    CONSTANTS: DESTINATION TYPE STRING VALUE 'DESTINATION'.
    CONSTANTS: IS_TABLE TYPE STRING VALUE 'T'.
    CONSTANTS: IS_PROGRAM TYPE STRING VALUE 'P'.
    CONSTANTS: IS_SCREEN TYPE STRING VALUE 'S'.
    CONSTANTS: IS_GUITITLE TYPE STRING VALUE 'G'.
    CONSTANTS: IS_DOCUMENTATION TYPE STRING VALUE 'D'.
    CONSTANTS: IS_MESSAGECLASS TYPE STRING VALUE 'MC'.
    CONSTANTS: IS_FUNCTION TYPE STRING VALUE 'F'.
    CONSTANTS: IS_CLASS TYPE STRING VALUE 'C'.
    CONSTANTS: IS_METHOD TYPE STRING VALUE 'M'.
    CONSTANTS: ASTERIX TYPE STRING VALUE '*'.
    CONSTANTS: COMMA TYPE STRING VALUE ','.
    CONSTANTS: PERIOD TYPE STRING VALUE '.'.
    CONSTANTS: DASH TYPE STRING VALUE '-'.
    CONSTANTS: TRUE TYPE I VALUE 1.
    CONSTANTS: FALSE TYPE I VALUE 0.
    CONSTANTS: LT TYPE STRING VALUE '&lt;'.
    CONSTANTS: GT TYPE STRING VALUE '&gt;'.
    CONSTANTS: UNIX TYPE STRING VALUE 'UNIX'.
    CONSTANTS: NON_UNIX TYPE STRING VALUE 'not UNIX'.
    CONSTANTS: BACKGROUND_COLOUR TYPE STRING VALUE '#FFFFE0'.
    CONSTANTS: COLOUR_WHITE TYPE STRING VALUE '#FFFFFF'.
    CONSTANTS: COLOUR_BLACK TYPE STRING VALUE '#000000'.
    CONSTANTS: COLOUR_YELLOW TYPE STRING VALUE '#FFFF00'.
    CONSTANTS: COMMENT_COLOUR TYPE STRING VALUE '#0000FF'.
    CONSTANTS: HTMLEXTENSION TYPE STRING VALUE 'html'.
    CONSTANTS: TEXTEXTENSION TYPE STRING VALUE 'txt'.
    Global variables
    DATA: STATUSBARMESSAGE(100).
    DATA: FORCEDEXIT TYPE I VALUE 0.
    DATA: STARTTIME LIKE SY-UZEIT.
    DATA: RUNTIME LIKE SY-UZEIT.
    DATA: DOWNLOADFILEEXTENSION TYPE STRING.
    DATA: DOWNLOADFOLDER TYPE STRING.
    DATA: SERVERSLASHSEPARATOR TYPE STRING.
    DATA: FRONTENDSLASHSEPARATOR TYPE STRING.
    DATA: SLASHSEPARATORTOUSE TYPE STRING.
    DATA: SERVERFILESYSTEM TYPE FILESYS_D.
    DATA: SERVERFOLDER TYPE STRING.
    DATA: FRONTENDOPSYSTEM TYPE STRING.
    DATA: SERVEROPSYSTEM TYPE STRING.
    DATA: CUSTOMERNAMESPACE TYPE STRING.
    RANGES: SOPROGRAMNAME FOR TRDIR-NAME.
    RANGES: SOAUTHOR FOR USR02-BNAME.
    RANGES: SOTABLENAMES FOR DD02L-TABNAME.
    RANGES: SOFUNCTIONNAME  FOR TFDIR-FUNCNAME.
    RANGES: SOCLASSNAME FOR VSEOCLASS-CLSNAME.
    RANGES: SOFUNCTIONGROUP FOR ENLFDIR-AREA.
    FIELD-SYMBOLS: <WADICTSTRUCT> TYPE TDICTTABLE.
    Selection screen declaration
    Author
    SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TBLOCK1.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(23) TAUTH.
    PARAMETERS: PAUTH LIKE USR02-BNAME MEMORY ID MAUTH.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(36) TPMOD.
    PARAMETERS: PMOD AS CHECKBOX.
    SELECTION-SCREEN END OF LINE.
    Local objects
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(36) T$TMP.
    PARAMETERS: P$TMP AS CHECKBOX DEFAULT ''.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN: END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TBLOCK2.
    Tables
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: RTABLE RADIOBUTTON GROUP R1.
    SELECTION-SCREEN COMMENT 5(15) TRTABLE.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(15) TPTABLE.
    SELECT-OPTIONS: SOTABLE FOR DD02L-TABNAME.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(79) TTNOTE.
    SELECTION-SCREEN END OF LINE.
    Message classes
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: RMESS RADIOBUTTON GROUP R1.
    SELECTION-SCREEN COMMENT 5(18) TPMES.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(18) TMNAME.
    PARAMETERS: PMNAME LIKE T100-ARBGB MEMORY ID MMNAME.
    SELECTION-SCREEN END OF LINE.
    Function modules
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: RFUNC RADIOBUTTON GROUP R1.
    SELECTION-SCREEN COMMENT 5(30) TRFUNC.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(15) TPFNAME.
    SELECT-OPTIONS: SOFNAME FOR TFDIR-FUNCNAME.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(15) TFGROUP.
    SELECT-OPTIONS: SOFGROUP FOR ENLFDIR-AREA.
    SELECTION-SCREEN END OF LINE.
    Classes
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: RCLASS RADIOBUTTON GROUP R1.
    SELECTION-SCREEN COMMENT 5(30) TRCLASS.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(15) TPCNAME.
    SELECT-OPTIONS: SOCLASS FOR SEOCLASS-CLSNAME.
    SELECTION-SCREEN END OF LINE.
    Programs / includes
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: RPROG RADIOBUTTON GROUP R1 DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 5(18) TPROG.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 10(15) TRPNAME.
    SELECT-OPTIONS: SOPROG FOR TRDIR-NAME.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN SKIP.
    Language
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(18) TMLANG.
    PARAMETERS: PMLANG LIKE T100-SPRSL DEFAULT 'EN'.
    SELECTION-SCREEN END OF LINE.
    Package
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(18) TPACK.
    PARAMETERS: PPACK LIKE TADIV-DEVCLASS MEMORY ID MPACK.
    SELECTION-SCREEN END OF LINE.
    Customer objects
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(27) TCUST.
    PARAMETERS: PCUST AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 32(25) TNRANGE.
    PARAMETERS: PCNAME TYPE NAMESPACE MEMORY ID MNAMESPACE.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN: END OF BLOCK B2.
    Additional things to download.
    SELECTION-SCREEN: BEGIN OF BLOCK B3 WITH FRAME TITLE TBLOCK3.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TPTEXT.
    PARAMETERS: PTEXT AS CHECKBOX DEFAULT 'X' MEMORY ID MTEXT.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TMESS.
    PARAMETERS: PMESS AS CHECKBOX DEFAULT 'X' MEMORY ID MMESS.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TPINC.
    PARAMETERS: PINC AS CHECKBOX DEFAULT 'X' MEMORY ID MINC.
    SELECTION-SCREEN COMMENT 40(20) TRECC.
    PARAMETERS: PRECI AS CHECKBOX DEFAULT 'X' MEMORY ID MRECI.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TPFUNC.
    PARAMETERS: PFUNC AS CHECKBOX DEFAULT 'X' MEMORY ID MFUNC.
    SELECTION-SCREEN COMMENT 40(20) TRECF.
    PARAMETERS: PRECF AS CHECKBOX DEFAULT 'X' MEMORY ID MRECF.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TDOC.
    PARAMETERS: PDOC AS CHECKBOX DEFAULT 'X' MEMORY ID MDOC.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TPSCR.
    PARAMETERS: PSCR AS CHECKBOX DEFAULT 'X' MEMORY ID MSCR.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TPDICT.
    PARAMETERS: PDICT AS CHECKBOX DEFAULT 'X' MEMORY ID MDICT.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TSORTT.
    PARAMETERS: PSORTT AS CHECKBOX DEFAULT ' ' MEMORY ID MSORTT.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN: END OF BLOCK B3.
    File details
    SELECTION-SCREEN: BEGIN OF BLOCK B4 WITH FRAME TITLE TBLOCK4.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) TPHTML.
    PARAMETERS: PHTML RADIOBUTTON GROUP G1 DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(29) TCOMM.
    PARAMETERS: PCOMM AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 5(29) TBACK.
    PARAMETERS: PBACK AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(20) TPTXT.
    PARAMETERS: PTXT RADIOBUTTON GROUP G1.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN SKIP.
    Download to SAP server
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) TSERV.
    PARAMETERS: PSERV RADIOBUTTON GROUP G2.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 8(20) TSPATH.
    PARAMETERS: PLOGICAL LIKE FILENAME-FILEINTERN MEMORY ID MLOGICAL.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN COMMENT /28(60) TSDPATH.
    Download to PC
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) TPC.
    PARAMETERS: PPC RADIOBUTTON GROUP G2 DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 8(20) TPPATH.
    PARAMETERS: PFOLDER LIKE RLGRAP-FILENAME MEMORY ID MFOLDER.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN: END OF BLOCK B4.
    Display options
    SELECTION-SCREEN: BEGIN OF BLOCK B5 WITH FRAME TITLE TBLOCK5.
    Display final report
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TREP.
    PARAMETERS: PREP AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    Display progress messages
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(33) TPROMESS.
    PARAMETERS: PPROMESS AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN: END OF BLOCK B5.
    Display a directory picker window
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR PFOLDER.
      DATA: OBJFILE TYPE REF TO CL_GUI_FRONTEND_SERVICES.
      DATA: PICKEDFOLDER TYPE STRING.
      DATA: INITIALFOLDER TYPE STRING.
      IF SY-BATCH IS INITIAL.
        CREATE OBJECT OBJFILE.
        IF NOT PFOLDER IS INITIAL.
          INITIALFOLDER = PFOLDER.
        ELSE.
          OBJFILE->GET_TEMP_DIRECTORY( CHANGING TEMP_DIR = INITIALFOLDER
                                       EXCEPTIONS CNTL_ERROR = 1
                                                 ERROR_NO_GUI = 2
                                                 NOT_SUPPORTED_BY_GUI = 3 ).
        ENDIF.
        OBJFILE->DIRECTORY_BROWSE( EXPORTING INITIAL_FOLDER = INITIALFOLDER
                                   CHANGING SELECTED_FOLDER = PICKEDFOLDER
                                   EXCEPTIONS CNTL_ERROR = 1
                                              ERROR_NO_GUI = 2
                                              NOT_SUPPORTED_BY_GUI = 3 ).
        IF SY-SUBRC = 0.
          PFOLDER = PICKEDFOLDER.
        ELSE.
          WRITE: / 'An error has occured picking a folder'.
        ENDIF.
      ENDIF.
    AT SELECTION-SCREEN.
      CASE 'X'.
        WHEN PPC.
          IF PFOLDER IS INITIAL.
          User must enter a path to save to
            MESSAGE E000(OO) WITH 'You must enter a file path'.
          ENDIF.
        WHEN PSERV.
          IF PLOGICAL IS INITIAL.
          User must enter a logical path to save to
            MESSAGE E000(OO) WITH 'You must enter a logical file name'.
          ENDIF.
      ENDCASE.
    AT SELECTION-SCREEN ON PLOGICAL.
      IF NOT PSERV IS INITIAL.
        CALL FUNCTION 'FILE_GET_NAME'
          EXPORTING
            LOGICAL_FILENAME = PLOGICAL
          IMPORTING
            FILE_NAME        = SERVERFOLDER
          EXCEPTIONS
            FILE_NOT_FOUND   = 1
            OTHERS           = 2.
        IF SY-SUBRC = 0.
          IF SERVERFOLDER IS INITIAL.
            MESSAGE E000(OO) WITH 'No file path returned from logical filename'.
          ELSE.
          Path to display on the selection screen
            TSDPATH = SERVERFOLDER.
          Remove the trailing slash off the path as the subroutine buildFilename will add an extra one
            SHIFT SERVERFOLDER RIGHT DELETING TRAILING SERVERSLASHSEPARATOR.
            SHIFT SERVERFOLDER LEFT DELETING LEADING SPACE.
          ENDIF.
        ELSE.
          MESSAGE E000(OO) WITH 'Logical filename does not exist'.
        ENDIF.
      ENDIF.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOPROG-LOW.
      CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
        EXPORTING
          OBJECT_TYPE           = 'PROG'
          OBJECT_NAME           = SOPROG-LOW
          SUPPRESS_SELECTION    = 'X'
          USE_ALV_GRID          = ''
          WITHOUT_PERSONAL_LIST = ''
        IMPORTING
          OBJECT_NAME_SELECTED  = SOPROG-LOW
        EXCEPTIONS
          CANCEL                = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOPROG-HIGH.
      CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
        EXPORTING
          OBJECT_TYPE           = 'PROG'
          OBJECT_NAME           = SOPROG-HIGH
          SUPPRESS_SELECTION    = 'X'
          USE_ALV_GRID          = ''
          WITHOUT_PERSONAL_LIST = ''
        IMPORTING
          OBJECT_NAME_SELECTED  = SOPROG-HIGH
        EXCEPTIONS
          CANCEL                = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOCLASS-LOW.
      CALL FUNCTION 'F4_DD_ALLTYPES'
        EXPORTING
          OBJECT               = SOCLASS-LOW
          SUPPRESS_SELECTION   = 'X'
          DISPLAY_ONLY         = ''
          ONLY_TYPES_FOR_CLIFS = 'X'
        IMPORTING
          RESULT               = SOCLASS-LOW.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOCLASS-HIGH.
      CALL FUNCTION 'F4_DD_ALLTYPES'
        EXPORTING
          OBJECT               = SOCLASS-HIGH
          SUPPRESS_SELECTION   = 'X'
          DISPLAY_ONLY         = ''
          ONLY_TYPES_FOR_CLIFS = 'X'
        IMPORTING
          RESULT               = SOCLASS-HIGH.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFNAME-LOW.
      CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
        EXPORTING
          OBJECT_TYPE           = 'FUNC'
          OBJECT_NAME           = SOFNAME-LOW
          SUPPRESS_SELECTION    = 'X'
          USE_ALV_GRID          = ''
          WITHOUT_PERSONAL_LIST = ''
        IMPORTING
          OBJECT_NAME_SELECTED  = SOFNAME-LOW
        EXCEPTIONS
          CANCEL                = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFNAME-HIGH.
      CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
        EXPORTING
          OBJECT_TYPE           = 'FUNC'
          OBJECT_NAME           = SOFNAME-HIGH
          SUPPRESS_SELECTION    = 'X'
          USE_ALV_GRID          = ''
          WITHOUT_PERSONAL_LIST = ''
        IMPORTING
          OBJECT_NAME_SELECTED  = SOFNAME-HIGH
        EXCEPTIONS
          CANCEL                = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFGROUP-LOW.
      CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
        EXPORTING
          OBJECT_TYPE           = 'FUGR'
          OBJECT_NAME           = SOFGROUP-LOW
          SUPPRESS_SELECTION    = 'X'
          USE_ALV_GRID          = ''
          WITHOUT_PERSONAL_LIST = ''
        IMPORTING
          OBJECT_NAME_SELECTED  = SOFGROUP-LOW
        EXCEPTIONS
          CANCEL                = 1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR SOFGROUP-HIGH.
      CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
        EXPORTING
          OBJECT_TYPE           = 'FUGR'
          OBJECT_NAME           = SOFGROUP-HIGH
          SUPPRESS_SELECTION    = 'X'
          USE_ALV_GRID          = ''
          WITHOUT_PERSONAL_LIST = ''
        IMPORTING
          OBJECT_NAME_SELECTED  = SOFGROUP-HIGH
        EXCEPTIONS
          CANCEL                = 1.
    initialisation
    INITIALIZATION.
    Parameter screen texts.
      TBLOCK1 = 'Author (Optional)'.
      T$TMP   = 'Programs only: include local objects'.
      TBLOCK2 = 'Objects to download'.
      TBLOCK3 = 'Additional downloads for programs, function modules and classes'.
      TBLOCK4 = 'Download parameters'.
      TBLOCK5 = 'Display options'.
      TAUTH   = 'Author name'.
      TPMOD   = 'Include programs modified by author'.
      TCUST   = 'Only customer objects'.
      TNRANGE = 'Alt customer name range'.
      TRTABLE = 'Tables / Structures'.
      TPTABLE = 'Table name'.
      TTNOTE  = 'Note: tables are stored under the username of the last person who modified them'.
      TRFUNC  = 'Function modules'.
      TPFNAME = 'Function name'.
      TFGROUP = 'Function group'.
      TRCLASS  = 'Classes'.
      TPCNAME = 'Class name'.
      TMESS   = 'Message class'.
      TMNAME  = 'Class name'.
      TMLANG  = 'Language'.
      TPROG   = 'Programs'.
      TRPNAME = 'Program name'.
      TPACK   = 'Package'.
      TPTXT   = 'Text document'.
      TPHTML  = 'HTML document'.
      TCOMM   = 'Highlight comments'.
      TBACK   = 'Include background colour'.
      TPTEXT  = 'Text elements'.
      TPINC   = 'Include programs'.
      TRECC   = 'Recursive search'.
      TPPATH  = 'File path'.
      TSPATH  = 'Logical file name'.
      TPMES   = 'Message classes'.
      TPFUNC  = 'Function modules'.
      TDOC    = 'Function module documentation'.
      TRECF   = 'Recursive search'.
      TPSCR   = 'Screens'.
      TPDICT  = 'Dictionary structures'.
      TSORTT  = 'Sort table fields alphabetically'.
      TSERV   = 'Download to server'.
      TPC     = 'Download to PC'.
      TREP    = 'Display download report'.
      TPROMESS  = 'Display progress messages'.
    Determine the frontend operating system type.
      IF SY-BATCH IS INITIAL.
        PERFORM DETERMINEFRONTENDOPSYSTEM USING FRONTENDSLASHSEPARATOR FRONTENDOPSYSTEM.
      ENDIF.
      PERFORM DETERMINESERVEROPSYSTEM USING SERVERSLASHSEPARATOR SERVERFILESYSTEM SERVEROPSYSTEM.
    Determine if the external command exists.  If it doesn't then disable the server input field
      PERFORM FINDEXTERNALCOMMAND.
    start-of-selection.
    START-OF-SELECTION.
      PERFORM CHECKCOMBOBOXES.
      PERFORM FILLSELECTIONRANGES.
      STARTTIME = SY-UZEIT.
    Don't display status messages if we are running in the background
      IF NOT SY-BATCH IS INITIAL.
        PPROMESS = ''.
      ENDIF.
    Fool the HTML routines to stop them hyperlinking anything with a space in them
      IF PCNAME IS INITIAL.
        CUSTOMERNAMESPACE  = '^'.
      ELSE.
        CUSTOMERNAMESPACE = PCNAME.
      ENDIF.
    Determine which operating slash and download directory to use
      CASE 'X'.
        WHEN PPC.
          SLASHSEPARATORTOUSE = FRONTENDSLASHSEPARATOR.
          DOWNLOADFOLDER = PFOLDER.
        WHEN PSERV.
          SLASHSEPARATORTOUSE = SERVERSLASHSEPARATOR.
          DOWNLOADFOLDER = SERVERFOLDER.
      ENDCASE.
    Main program flow.
      CASE 'X'.
      Select tables
        WHEN RTABLE.
          PERFORM RETRIEVETABLES USING IDICTIONARY[]
                                       SOTABLENAMES[]
                                       SOAUTHOR[].
      Select message classes tables
        WHEN RMESS.
          PERFORM RETRIEVEMESSAGECLASS USING IMESSAGES[]
                                             SOAUTHOR[]      "Author
                                             PMNAME          "Message class name
                                             PMLANG          "Message class language
                                             PMOD.           "Modified by author
      Select function modules
        WHEN RFUNC.
          PERFORM RETRIEVEFUNCTIONS USING SOFUNCTIONNAME[]   "Function name
                                          SOFUNCTIONGROUP[]  "Function group
                                          IFUNCTIONS[]       "Found functions
                                          SOAUTHOR[]         "Author
                                          PTEXT              "Get text elements
                                          PSCR               "Get screens
                                          PCUST              "Customer data only
                                          CUSTOMERNAMESPACE. "Customer name range
          LOOP AT IFUNCTIONS.
          Find Dict structures, messages, functions, includes etc.
            PERFORM SCANFORADDITIONALFUNCSTUFF USING IFUNCTIONS[]
                                                     PRECI                   "Search for includes recursively
                                                     PRECF                   "Search for functions recursively
                                                     PINC                    "Search for includes
                                                     PFUNC                   "Search for functions
                                                     PDICT                   "search for dictionary objects
                                                     PMESS                   "Search for messages
                                                     PCUST                   "Customer data only
                                                     CUSTOMERNAMESPACE.      "Customer name range
          ENDLOOP.
      Select Classes
        WHEN RCLASS.
          PERFORM RETRIEVECLASSES USING ICLASSES[]
                                        IFUNCTIONS[]
                                        SOCLASSNAME[]       "Class name
                                        SOAUTHOR[]          "Author
                                        CUSTOMERNAMESPACE   "Customer name range
                                        PMOD                "Also modified by author
                                        PCUST               "Customer object only
                                        PMESS               "Find messages
                                        PTEXT               "Text Elements
                                        PDICT               "Dictionary structures
                                        PFUNC               "Get functions
                                        PINC                "Get includes
                                        PRECF               "Search recursively for functions
                                        PRECI               "Search recursively for includes
                                        'X'                 "Search recursively for classes
                                        PMLANG.             "Language
          LOOP AT IFUNCTIONS.
          Find Dict structures, messages, functions, includes etc.
            PERFORM SCANFORADDITIONALFUNCSTUFF USING IFUNCTIONS[]
                                                     PRECI                   "Search for includes recursively
                                                     PRECF                   "Search for functions recursively
                                                     PINC                    "Search for includes
                                                     PFUNC                   "Search for functions
                                                     PDICT                   "search for dictionary objects
                                                     PMESS                   "Search for messages
                                                     PCUST                   "Customer data only
                                                     CUSTOMERNAMESPACE.      "Customer name range
          ENDLOOP.
      Select programs
        WHEN RPROG.
          PERFORM RETRIEVEPROGRAMS USING IPROGRAMS[]
                                         IFUNCTIONS[]
                                         SOPROGRAMNAME[]    "Program name
                                         SOAUTHOR[]         "Author
                                         CUSTOMERNAMESPACE  "Customer name range
                                         PMOD               "Also modified by author
                                         PCUST              "Customer object only
                                         PMESS              "Find messages
                                         PTEXT              "Text Elements
                                         PDICT              "Dictionay structures
                                         PFUNC              "Get functions
                                         PINC               "Get includes
                                         PSCR               "Get screens
                                         PRECF              "Search recursively for functions
                                         PRECI              "Search recursively for includes
                                         P$TMP              "local objects
                                         PPACK.             "Package
      ENDCASE.
    end-of-selection
    END-OF-SELECTION.
      IF FORCEDEXIT = 0.
      Set the file extension and output type of the file
        IF PTXT IS INITIAL.
          DOWNLOADFILEEXTENSION = HTMLEXTENSION.
        ELSE.
          DOWNLOADFILEEXTENSION = TEXTEXTENSION.
        ENDIF.
      Decide what to download
        CASE 'X'.
        Download tables
          WHEN RTABLE.
            IF NOT ( IDICTIONARY[] IS INITIAL ).
              PERFORM DOWNLOADDDSTRUCTURES USING IDICTIONARY[]
                                                 DOWNLOADFOLDER
                                                 HTMLEXTENSION
                                                 SPACE
                                                 PSORTT
                                                 SLASHSEPARATORTOUSE
                                                 PSERV
                                                 PPROMESS.
            Free up any memory used for caching HTML versions of tables
              LOOP AT IDICTIONARY.
                FREE MEMORY ID IDICTIONARY-TABLENAME.
              ENDLOOP.
            Display donwload report
              IF NOT PREP IS INITIAL.
                GET TIME.
                RUNTIME = SY-UZEIT - STARTTIME.
                PERFORM FILLTREENODETABLES USING IDICTIONARY[]
                                                 ITREEDISPLAY[]
                                                 RUNTIME.
              ENDIF.
              CLEAR IDICTIONARY[].
            ENDIF.
        Download message class
          WHEN RMESS.
            IF NOT ( IMESSAGES[] IS INITIAL ).
              SORT IMESSAGES ASCENDING BY ARBGB MSGNR.
              LOOP AT IMESSAGES.
                APPEND IMESSAGES TO ISINGLEMESSAGECLASS.
                AT END OF ARBGB.
                  PERFORM DOWNLOADMESSAGECLASS USING ISINGLEMESSAGECLASS[]
                                                     IMESSAGES-ARBGB
                                                     DOWNLOADFOLDER
                                                     DOWNLOADFILEEXTENSION
                                                     PHTML
                                                     SPACE
                                                     PCOMM
                                                     CUSTOMERNAMESPACE
                                                     PINC
                                                     PDICT
                                                     PMESS
                                                     SLASHSEPARATORTOUSE
                                                     PSERV
                                                     PPROMESS.
                  CLEAR ISINGLEMESSAGECLASS[].
                ENDAT.
              ENDLOOP.
            Display download report
              IF NOT PREP IS INITIAL.
                GET TIME.
                RUNTIME = SY-UZEIT - STARTTIME.
                PERFORM FILLTREENODEMESSAGES USING IMESSAGES[]
                                                   ITREEDISPLAY[]
                                                   RUNTIME.
              ENDIF.
              CLEAR IMESSAGES[].
            ENDIF.
        Download functions
          WHEN RFUNC.
            IF NOT ( IFUNCTIONS[] IS INITIAL ).
              PERFORM DOWNLOADFUNCTIONS USING IFUNCTIONS[]
                                              DOWNLOADFOLDER
                                              DOWNLOADFILEEXTENSION
                                              SPACE
                                              PDOC
                                              PHTML
                                              PCOMM
          

  • A null object loaded from local variable 'o' in XSLT mapping

    Hi experts,
    We are facing an issue in XSLT mapping for one of the inbound scenario.
    While executing the source message at mapping level, it is failing with the error text - "javax.xml.transform.TransformerException: com.sap.engine.lib.xsl.xpath.XPathException: Error parsing query -> java.lang.NullPointerException: while trying to invoke the method java.lang.Object.toString() of a null object loaded from local variable 'o'
    Kindly help us on this issue!
    FYI - We are facing this issue in PO 7.4 version.
    Best Regards,
    Uday.

    HI Hareesh,
    Thanks for your inputs...
    We are migrating the interface from PI7.1 to PI 7.4 at this one we are getting the error as mentioned the earlier. we are uanle to run it in the mapping level as well.
    Why are we getting the error?As this is working in PI7.1 version
    Please help us on this.

  • While trying to invoke the method java.lang.String.length() of an object loaded from local variable 'payload'

    Hi,
    Our PI is getting data from WebSphere MQ and pushing to SAP. So our sender CC is JMS and receiver is Proxy. Our PI version is 7.31.
    Our connectivity between the MQ is success but getting the following error while trying to read the payload.
    Text: TxManagerFilter received an error:
    [EXCEPTION]
    java.lang.NullPointerException: while trying to invoke the method java.lang.String.length() of an object loaded from local variable 'payload'
           at com.sap.aii.adapter.jms.core.channel.filter.ConvertJmsMessageToBinaryFilter.filter(ConvertJmsMessageToBinaryFilter.java:73)
           at com.sap.aii.adapter.jms.core.channel.filter.MessageFilterContextImpl.callNext(MessageFilterContextImpl.java:204)
           at com.sap.aii.adapter.jms.core.channel.filter.InboundDuplicateCheckFilter.filter(InboundDuplicateCheckFilter.java:348)
           at com.sap.aii.adapter.jms.core.channel.filter.MessageFilterContextImpl.callNext(MessageFilterContextImpl.java:204)
    I have searched SDN but couldn't fix it. Please provide your suggestion.
    With Regards
    Amarnath M

    Hi Amarnath,
    Where exactly you are getting this error?
    If you are getting at JMS Sender communication channel, try to stop and start the JMS communication channel and see the status, also use XPI Inspector to get the exact error log.
    for reference follow below blogs:
    Michal's PI tips: ActiveMQ - JMS - topics with SAP PI 7.3
    Michal's PI tips: XPI inspector - help OSS and yourself
    XPI Inspector

  • Approval task SP09: Evaluation of approvalid failed with Exception: while trying to invoke the method java.lang.String.length() of an object loaded from local variable 'aValue'

    Hi everyone,
    I just installed SP09 and i was testing the solution. And I found a problem with the approvals tasks.
    I configured a simple ROLE approval task for validate add event. And when the runtime executes the task, the dispatcher log shows a error:
    ERROR: Evaluation of approvalid failed with Exception: while trying to invoke the method java.lang.String.length() of an object loaded from local variable 'aValue'
    And the notifications configured on approval task does not start either.
    The approval goes to the ToDO tab of the approver, but when approved, also the ROLE stays in "Pending" State.
    I downgraded the Runtime components to SP08 to test, and the approvals tasks works correctly.
    Has anyone passed trough this situation in SP09?
    I think there is an issue with the runtime components delivered with this initial package of SP09.
    Suggestions?

    Hi Kelvin,2016081
    The issue is caused by a program error in the Dispatcher component. A fix will be provided in Identity Management SP9 Patch 2 for the Runtime component. I expect the patch will be delivered within a week or two.
    For more info about the issue and the patch please refer to SAPNote 2016081.
    @Michael Penn - I might be able to assist if you provide the ticket number
    Cheers,
    Kristiyan
    IdM Development

  • GetDescriptions() of an object loaded from local variable 'itemDeploymentResult'

    Hi
    We are urgrading our SAP MII ( purely Java ) systems from 7.31 Sp5 to 7.40 and we got stuck at Configuration phase. We are getting the following error during Queue validation.
    Checking of deployment queue completed with error. java.lang.NullPointerException: while trying to invoke the method com.sap.sdt.j2ee.tools.deploymentmgr.DeploymentManagerItemResultIF.getDescriptions() of an object loaded from local
    variable 'itemDeploymentResult'.
    I looked in the trace files under SUM/sdt/trc directory and found the following information.
    Jul 3, 2014 9:52:16 AM
    [Error]:
    com.sap.sdt.executor.module.ModuleExecutor [Thread[UC-3,5,main]]: A
    problem has occurred:
    com.sap.sdt.executor.exception.StepExecutionException: Problem while
    trying to execute operation on service validate-queue. The following
    problem has occurred java.lang.reflect.InvocationTargetException. CSN
    Component BC-UPG-TLS-TLJ.
    Checking of deployment queue completed with error.
    java.lang.NullPointerException: while trying to invoke the method
    com.sap.sdt.j2ee.tools.deploymentmgr.DeploymentManagerItemResultIF.getDescriptions() of an object loaded from local
    variable 'itemDeploymentResult'
    Jul 3, 2014 9:52:16 AM
    [Error]:
    com.sap.sdt.executor.module.ModuleExecutor [Thread[UC-3,5,main]]:
    Checking of deployment queue completed with error.
    Jul 3, 2014 9:52:16 AM
    [Error]:
    com.sap.sdt.executor.module.ModuleExecutor [Thread[UC-3,5,main]]:
    java.lang.NullPointerException: while trying to invoke the method
    com.sap.sdt.j2ee.tools.deploymentmgr.DeploymentManagerItemResultIF.getDescriptions() of an object loaded from local
    variable 'itemDeploymentResult'
    We have 26 GB left on our Drive and have also upgraded JSPM to 7.31 Sp8. We are using SUM10SP05_9.
    Appreciate your quick help

    Hi Amarnath,
    Where exactly you are getting this error?
    If you are getting at JMS Sender communication channel, try to stop and start the JMS communication channel and see the status, also use XPI Inspector to get the exact error log.
    for reference follow below blogs:
    Michal's PI tips: ActiveMQ - JMS - topics with SAP PI 7.3
    Michal's PI tips: XPI inspector - help OSS and yourself
    XPI Inspector

  • Download/upload abap programs

    Can anyone help me with a program which downloads and uploads abap programs including source code, includes, gui status and titles as well as the screens onto the local machine and back to SAP server?
    Even if you have any partial program, please help.

    Hello,
    please see the below link.
    http://www.sap-img.com/abap/download-and-upload-your-abap-program.htm
    http://www.guidancetech.com/people/holland/sap/abap/zzbgs106.htm
    Hope it will help you,
    Cheers,
    Regards,
    Sujeet

  • Jabber 9.2, uploading the contact photo from local machine or PC.

    is it posssible to upload contact Photo from local machine to jabber from 'edit profile'? I did that but nothing happened! still no contact photo.
    Thanks,

    Hi Shane,
    in previous version of Jabber it was not possible, am I right? But I heard in 9.2.0 onwards we can do it.
    I will send you the problem on Monday once I get back to Customer Site.
    Thanks,

  • Uploading File to server from local machine

    how to Upload the File to server from local machine.
    Using java applet, how to upload the file to secure server.
    I dont know how to proceed the steps for uploading
    Reply me ASAP.......

    Hi Ozkantr,
    The osql utility is installed by SQL Server. You need to make sure the utility is installed on your colleague machine.
    To run SSIS package outside the BIDS, only the DTExec utility which is a client tool is not enough, the server components for Integration Services Service (SSIS runtime) is also required. To install SSIS runtime and DTExec utility, we must install the Integration
    Services shared feature from the SQL Server install media. So, you need to install SSIS service on the machine where the SSIS packages jobs run.
    References:
    http://www.bigator.com/2012/03/11/ways-to-execute-ssis-package/
    http://www.codeproject.com/Articles/219494/SSIS-Overview-Part-I
    Regards,
    +1
    You need to install Integration Services, which installs the necessary bytes on your computer and the SSIS service as well. The service can be disabled though, you don't need it to run packages.
    I wrote a blog post about it some time ago:
    When is DTEXEC installed?
    ps: osql is deprecated. Better start using sqlcmd.
    MCSE SQL Server 2012 - Please mark posts as answered where appropriate.

  • Uploading Large csv file from Local File

    I have a 6GB csv file which I created on my local machine which is named TrainDF.csv.  I can't upload it directly as it exceeds the 1.95GB size limit uncompressed.  However, I tried saving it as an RData file (as well as a zip file of the RData
    file) and uploading that, however my R code throws an "unable to open connection" error when I try to load this data with an R Script with this code.
    load("src/TrainDF.RData"); maml.mapOutputPort("TrainDF");
    I have even tried:
    load("/src/TrainDF.RData");
    load("./src/TrainDF.RData");
    load("~/src/TrainDF.RData");
    TrainDF <- load("/src/TrainDF.RData");
    TrainDF <- load("./src/TrainDF.RData");
    TrainDF <- load("~/src/TrainDF.RData");
    Same error for everything.  What would be the simplest most straight-forward way to get a 6GB csv file usable as an input for an experiment from my local machine?  I may need step by step instructions on this one depending on the answer. 
    Also, if a complete step by step answer to this question can be found somewhere please post a link to it.
    Thanks in advance,
    Bob
    P.S.  I know the data is actually there,  I am able to download it.

    Yes, all appears to work now.  I have a bad habit of interchanging a csv file with a dataframe in R when I talk because they are so trivial to interchange.  I meant a saved (RData) object containing a dataframe that was originally loaded from
    a csv file.  My problems were not knowing specifically how to write the path to the src folder and I didn't even think about using a different input.  Hopefully documentation should be coming out in the future which clarifies these things. 
    In my opinion information on how to get info in and out of Azure ML is somewhat lacking.  Although, I must say this is truly impressive work you guys are doing and not only that you are getting it done at a mind-boggling pace.  So good job on that. 
    Thanks for your great help and fast response!

  • "While trying to invoke the method com.sap.ip.bi.bics.dataaccess consumer.queryview.hierarchy.iqqvDrillPathElement.getCharacteristics Type ()of an object loaded from local variable 'pathElement' (WIS 00000)"

    Hi Gurus,
       We are using BOBI 4.1 and we have created a webI report and while refreshing the report, we are facing the below error first time. After we close the error message and if we refresh again, its working fine. I have found one note (1724168 - Hierarchy error when refreshing a Web Intelligence document) stated that its a bug in 4.0 and its resolved in 4.1. But still am facing the same error in 4.1. Kindly help me to resolve the issue. Anyone input is highly appreciated.
    Thanking you in anticipation.
    Obinna.

    Dear Henry,
       Please find my inputs below.
    What SP are you on? --------- BOBI 4.1 SP2
    what does your webi query look like -   are you selecting a full hierarchy ?  ------- No
    are you filtering your dataset at runtime using input variables / parameters? -------Yes. We  have used formula variable at BW level and I have hard cored its value at BO side in different queries (same report) by giving different value for each query.
    Is your APS / DSL_Bridge properly up-sized on the BIPlatform?  what's the Xmx value in the command line?  --------- Xmx4G
    Does your administrator monitor anything unusual in the BW  SM66/ST05/ST22 ? -------- Everything is working fine in BW system side.
    How high mem usage seen task manager / PIDs on the BIPlatform? -------- Everything is normal (Total RAM Size 24 GB)

  • Getting null object loaded from local variable error while trying to drag any field

    Hi,
    I am getting the below error while I am trying to drag any field in webi reports. Error message is attached below.
    Can anyone help me on this. Webi is based on two different universe.
    Thanks
    Snehasish

    Thanks Sathish for the reply.
    BO Version is 4.0
    reporting database is oracle 11.2.0.3.0
    I am getting this error when I am trying to drag any field(dimension, measure, variable everything) in the report.
    Universe has been created on top of Bex query. Now the webi is built on top of universe.
    Thanks
    Snehasish

  • Error HTTP Status 500 - while trying to invoke the method java.util.Properties.entrySet() of a null object loaded from local variable 'globalProperties'

    Hi,
    I installed BI platform SBOP BI PLAT 4.1 and was able to log in to CMC and BI Launchpad. Post this, I installed SBOP DATA SERVICES 4.2 SP01 PATCH 3 WINDOWS 64B and am getting the above error while trying to open CMC and BI Launchpad.
    Please help

    Thanks Jawahar, re deploying web apps helped.

  • Download Image from Local PC

    Hi,
    I have a jpg image which is stored in the local system(not on the server).I have written an application from which I am not able to download the image from the local system.
    I am using the following code but this code works only if the image is present on the server.
            String file = "C:\Folder_Name\image.jpg";
            final byte[] content = this.getByteArrayFromResourcePath(file);     
         final IWDCachedWebResource resource = WDWebResource.getWebResource(content, WDWebResourceType.UNKNOWN);
                    try
         final IWDWindow window = wdComponentAPI.getWindowManager().createExternalWindow(resource.getURL(), "WD_Filedownload", true);
         window.open();
         catch(Exception e)     {
         wdComponentAPI.getMessageManager().reportException(new WDNonFatalException(e), false);
             private byte[] getByteArrayFromResourcePath(String resourcePath)throws FileNotFoundException, IOException
               FileInputStream in = new FileInputStream(new File(resourcePath));
               ByteArrayOutputStream out = new ByteArrayOutputStream();
               int length;
               byte[] part = new byte[10 * 1024];
               while ((length = in.read(part)) != -1) {
                 out.write(part, 0, length);
               in.close();
               return out.toByteArray();
    And for downloading the file or image from local system I need to put the file in \src\mimes\Components folder; Where as I want the file to be downloadable anywhere from the local file system. Is that possible?
    Thanks
    Pravin

    Pravin,
    If you want to display an image existing elsewhere on the local machine, you need to upload it first (use FileUpload UI component), store it in a byte array and then continue with your code below of creating a cached web resource.
    And you place resources in src/mimes/component so that they will be available to the application (meaning for all users). This doesnt mean you are displaying the image from the local file system. When you deploy, these images go and live in the server and accessed from there.
    In any case, the hardcoded image location in your code is valid only for YOU but not necessarily other user running the same application.
    As such, you cannot access the client's file system explicitly (i.e local machine) due to security reasons. I know of no other way to do it with WebDynpro. Any resources must be present on the server side at some point of time. Either at application start or ask the user to provide it (like FileUpload).
    No web technology allows that other than signed applets or trusted activex controls, as far as i know.
    Hope that clears the confusion.
    Thanks,
    Rajit
    Message was edited by:
            Rajit Srinivas

Maybe you are looking for

  • Check box in XML Publisher report not displaying

    Hi, In my XML Publisher report , my template contains a checkbox, using forms tools i create that check box and run the report but output of check box is not comming becoz,The XML Publisher default PDF output font does not support checkbox. can any o

  • Text in column too long to display

    I've 2 column that contain text. I wish to show both the columns full text along with other column in a single page. Text to show up in a few lines is expected. Hope someone can give me a clue. Thanks

  • Select unique rows from two tables...

    Hi, I have two tables, replies1 and replies2. SQL> desc replies Name Null? Type URN VARCHAR2(36) ADDRESS VARCHAR2(18) FILESIZE NUMBER AS_NUM VARCHAR2(6) SQL> desc replies2 Name Null? Type URN VARCHAR2(36) ADDRESS VARCHAR2(18) AS_NUM VARCHAR2(6) Both

  • Business Objects Enterprise XI R2 - Exporting the list of Objects in Enterp

    I'd like to get an export of all reports (& other objects) contained within a folder/subfolder structure in Crystal Enterprise XI R2.  How are some of you doing this?  Best thing I've come up with so far is tedious, doing an object search "list all"

  • How come the videos I delete in my camera roll come back?

    I Downloaded a video downloader app.I took the videos I downloaded and moved them to my camera roll.I no longer want some of these videos,however when I delete them,they always come back.How do I permanently delete them?