jgtang82 发表于 2013-1-27 04:44:08

Upload and Download ABAP Source Code

This is a program that I have had kicking around for a couple of years in various incarnations. I really liked the file format that Wolfgang Morgenthaler had, that I updated my program to use the same format. The one thing that this program does, that Wolfgang's does not is to up/download the program documentation as well as source code and program texts. <a name="Wolfgang's_Home_Page" />Wolfgang's Home Page -

Source Code Listing*----------------------------------------------------------------------** Report: ZKBPROGS             **----------------------------------------------------------------------** Function   : Up/Download ABAP reports complete with texts            **----------------------------------------------------------------------** Change Log :               ** July 5, 1999         **    - Combined existing programs that did the upload and download into**    - one program.            **    - Changed format that the reports are saved in to be compatible   **      with Wolfgang Morgenthaler's upload/download program(YSTRASN00**      at www.antarcon.de).Major differences between this program and**      Wolfgang's are:*         - this program does not update TRDIR with the                **         TRDIR entries that are in the program uploaded.Instead,**         current users stats are used.          **         - this program allows selection of reports from a list or    **         a single report can be tuped in and uploaded               **         - this program also updates TADIR so that a development class**         is assigned to the program             **         - this program checks to see if the program already has a    **         TRDIR entry, and if it does, warns the user                **         - this program will save/restore the program documenation too**          **          **          **----------------------------------------------------------------------*REPORT ZKBPROGS       NO STANDARD PAGE HEADING       LINE-SIZE255.*----------------------------------------------------------------------** 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 programsSELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.PARAMETERS:RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'.       " Download reportsSELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.SELECT-OPTIONS:S_NAMEFOR TRDIR-NAME,            " Program NameS_SUBCFOR TRDIR-SUBC               " Program Type          DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by defaultS_CNAMFOR TRDIR-CNAM               " Created by          DEFAULT SY-UNAME,S_UNAMFOR TRDIR-UNAM,            " Last Changed byS_CDATFOR TRDIR-CDAT,            " Creation dateS_UDATFOR TRDIR-UDAT.            " Last update dateSELECTION-SCREEN END OF BLOCK FRM_TRDIR.*-- Options for uploading programsPARAMETERS:RB_UP   RADIOBUTTON GROUP UDL.       " Upload reportsSELECTION-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 programsSELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.PARAMETERS:RB_DOSRADIOBUTTON GROUP FIL DEFAULT 'X', " Save to localRB_UNIX RADIOBUTTON GROUP FIL,       " Save to UNIXP_PATHLIKE RLGRAP-FILENAME         " Path to save files to      DEFAULT 'c:\temp\'.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 modeREAD LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.*-- Read file into an internal tablePERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE            USINGMTAB_DIRECTORY-SAVENAME.*-- Split table into TADIR entry, report lines, and report textPERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE               MTAB_PROGRAM_SOURCE               MTAB_PROGRAM_TEXTS               MTAB_PROGRAM_DOCUMENTATION      CHANGING TRDIR               MSTR_THEAD.*-- Save all of the dataPERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE               MTAB_PROGRAM_TEXTS               MTAB_PROGRAM_DOCUMENTATION      USINGTRDIR               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         USINGP_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            USINGP_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          USINGTRDIR               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            USINGP_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 * FROMTRDIR         INTO TABLE MTAB_PROGRAM_TRDIR         WHERENAMEIN S_NAME         AND    SUBCIN S_SUBC         AND    CNAMIN S_CNAM         AND    UNAMIN S_UNAM         AND    CDATIN S_CDAT         AND    UDATIN 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         WHEREID          = '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 = MTAB_PROGRAM_TEXTS.      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         USINGLC_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    USINGF_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 server    OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE.    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_DOSENDFORM.         " 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       USINGF_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.    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 = FTAB_PROGRAM_FILE.            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   USINGFSTR_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_NAMEProgram TextsDIR             File Download Options (File Selection)FIL             File Options      FNA             Enter filename below (under File Options)H01             Prog NameH03             Program DescriptionSNG             Upload a single fileUDL             Upload to SAP/Download from SAPUPL             File Upload OptionsR               Backup/Restore program source code with textsP_PATH          Path to save programs toRB_DOS          Files on local computerRB_DOWN         Download ProgramsRB_FILE         Upload a single fileRB_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
页: [1]
查看完整版本: Upload and Download ABAP Source Code