Tips and Tricks for the ABAP® Programming Language
ZUPDOWNALL – Upload und download any report with text-symbols
This program does an upload and download a abap source code and also includes possible text sysmbols.
ABAP™-Source-Code
You can copy and paste the source code directly into the ABAP™-Workbench.
REPORT ZUPDOWNALL LINE-SIZE 80 NO STANDARD PAGE HEADING. * ********************** HEADER ************** * You can use or modify this report for your own work as long * as you don't try to sell or republish it. * In no event will the author be liable for indirect, special, * Incidental, or consequental damages (if any) arising out of * the use of this report. *//////////////////////////////////////////////////////////////////////* *----------------------------------------------------------------------* TABLES: TRDIR, RLGRAP. *----------------------------------------------------------------------* PARAMETERS P_REPID LIKE TRDIR-NAME DEFAULT 'Z*'. PARAMETERS P_UPLOAD AS CHECKBOX. SELECTION-SCREEN ULINE. SELECT-OPTIONS: S_CNAM FOR TRDIR-CNAM DEFAULT SY-UNAME, S_UNAM FOR TRDIR-UNAM DEFAULT SY-UNAME. PARAMETERS: P_DATUM LIKE TRDIR-UDAT DEFAULT SY-DATUM OBLIGATORY. PARAMETERS P_PFAD LIKE RLGRAP-FILENAME DEFAULT 'c:\*'. PARAMETERS P_EXT(3) DEFAULT 'txt' LOWER CASE OBLIGATORY. *----------------------------------------------------------------------* DATA: BEGIN OF REPPU OCCURS 1000, PU(72), END OF REPPU. * DATA: BEGIN OF XTEXTPOOL OCCURS 100. INCLUDE STRUCTURE TEXTPOOL. DATA: END OF XTEXTPOOL. * DATA: BEGIN OF XTRDIR OCCURS 1000. INCLUDE STRUCTURE TRDIR. DATA: END OF XTRDIR. * DATA: BEGIN OF REPORTS OCCURS 100, REPID(08), SPACE2(02), TEXT(70), END OF REPORTS. *----------------------------------------------------------------------* DATA: EXT(04) VALUE '.', FOUND(1) TYPE C, INHALT(12) VALUE 'Inhalt', MARK TYPE C VALUE ' ', ANSWER(1) TYPE C, STRING(60) TYPE C, FIRST(1) VALUE 'X'. DATA: PFAD LIKE P_PFAD, I TYPE I, TITLE LIKE TEXTPOOL-ENTRY. NEW-PAGE LINE-COUNT 50. *----------------------------------------------------------------------* START-OF-SELECTION. IF SY-UNAME <> 'IBM-BC'. " <-------------> Username SKIP 2. FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. WRITE: / 'Abbruch wegen Berechtigungsproblem !!! '(002). CHECK 1 = 2. ENDIF. WRITE: P_EXT TO EXT+1. WRITE: EXT TO INHALT+6. PERFORM READ_DIR TABLES REPORTS. * IF P_UPLOAD = 'X'. PERFORM UPLOAD. ELSE. PERFORM DOWNLOAD. MARK = ''. PERFORM REPORTS_ANZEIGEN TABLES XTRDIR USING MARK. ENDIF. AT LINE-SELECTION. IF P_UPLOAD = 'X'. PERFORM REPORT_ANZEIGEN. ELSE. PERFORM REPORTS_MERKEN. ENDIF. END-OF-SELECTION. TOP-OF-PAGE. PERFORM KOPF_ZEILE. TOP-OF-PAGE DURING LINE-SELECTION. PERFORM KOPF_ZEILE. *----------------------------------------------------------------------* FORM UPLOAD. DATA: PFAD LIKE P_PFAD, TITLE LIKE TEXTPOOL-ENTRY. * PFAD = P_PFAD. REPLACE '*' WITH P_REPID INTO PFAD. CONDENSE PFAD NO-GAPS. CONCATENATE PFAD EXT INTO PFAD. SELECT SINGLE * FROM TRDIR WHERE NAME = P_REPID. IF SY-SUBRC = 0. CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING TITLEBAR = 'Report already exists' TEXT_QUESTION = 'Overwrite?' IMPORTING ANSWER = ANSWER EXCEPTIONS TEXT_NOT_FOUND = 1 OTHERS = 2. IF ANSWER <> '1'. STOP. ENDIF. ENDIF. * CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = PFAD FILETYPE = 'ASC' TABLES DATA_TAB = REPPU EXCEPTIONS CONVERSION_ERROR = 01 FILE_OPEN_ERROR = 02 FILE_READ_ERROR = 03 INVALID_TABLE_WIDTH = 04 INVALID_TYPE = 05 NO_BATCH = 06 UNKNOWN_ERROR = 07. REFRESH XTEXTPOOL. LOOP AT REPPU. IF REPPU(06) <> '*$*$IO'. EXIT. ENDIF. DELETE REPPU. * XTEXTPOOL = REPPU. SHIFT XTEXTPOOL BY 06 PLACES LEFT. APPEND XTEXTPOOL. * IF XTEXTPOOL-ID = 'R'. TITLE = XTEXTPOOL-ENTRY. ENDIF. ENDLOOP. * IF P_REPID(01) = 'Y' OR P_REPID(01) = 'Z'. INSERT REPORT P_REPID FROM REPPU. INSERT TEXTPOOL P_REPID FROM XTEXTPOOL LANGUAGE SY-LANGU. CONCATENATE P_REPID(20) TITLE(40) INTO STRING SEPARATED BY SPACE. WRITE: /3 STRING, 'has imported' INTENSIFIED OFF. XTRDIR-NAME = P_REPID. HIDE: XTRDIR-NAME. ENDIF. ENDFORM. *----------------------------------------------------------------------* FORM DOWNLOAD. * DO. REPLACE '+' WITH '_' INTO P_REPID. IF SY-SUBRC <> 0. EXIT. ENDIF. ENDDO. REPLACE '*' WITH '%' INTO P_REPID. * SELECT * FROM TRDIR INTO TABLE XTRDIR WHERE NAME LIKE P_REPID AND CNAM IN S_CNAM AND UNAM IN S_UNAM AND UDAT GE P_DATUM. * ENDFORM. *----------------------------------------------------------------------* FORM READ_DIR TABLES REPORTS STRUCTURE REPORTS. DATA: PFAD LIKE P_PFAD. * PFAD = P_PFAD. IF NOT PFAD CS '*'. WRITE:/ 'Please insert ''*'' into path'. STOP. ENDIF. REPLACE '*' WITH INHALT INTO PFAD. CONDENSE PFAD NO-GAPS. * CALL FUNCTION 'WS_UPLOAD' EXPORTING FILENAME = PFAD FILETYPE = 'ASC' TABLES DATA_TAB = REPORTS EXCEPTIONS CONVERSION_ERROR = 01 FILE_OPEN_ERROR = 02 FILE_READ_ERROR = 03 INVALID_TABLE_WIDTH = 04 INVALID_TYPE = 05 NO_BATCH = 06 UNKNOWN_ERROR = 07. CASE SY-SUBRC. WHEN 0. WHEN 2. REFRESH REPORTS. WHEN OTHERS. WRITE:/ 'Error reading file SY-SUBRC=' NO-GAP, SY-SUBRC. STOP. ENDCASE. ENDFORM. *&---------------------------------------------------------------------* *& Form REPORTS_ANZEIGEN *&---------------------------------------------------------------------* FORM REPORTS_ANZEIGEN TABLES XTRDIR STRUCTURE TRDIR USING MARK. LOOP AT XTRDIR. WRITE: / MARK AS CHECKBOX, XTRDIR-NAME(20), XTRDIR-CNAM, "Ersteller XTRDIR-CDAT, "Erstellungsdatum XTRDIR-UNAM, "Änderer XTRDIR-UDAT, "Änderungsdatum XTRDIR-VERN. "Version ENDLOOP. ENDFORM. *&---------------------------------------------------------------------* *& Form REPORTS_MERKEN *&---------------------------------------------------------------------* FORM REPORTS_MERKEN. CHECK P_UPLOAD = ' '. DATA: REPORT LIKE TRDIR-NAME, INDEX TYPE I VALUE 1. CLEAR: FOUND. SY-LSIND = 0. DO. CLEAR: MARK, REPORT. READ LINE INDEX FIELD VALUE MARK XTRDIR-NAME INTO REPORT. IF SY-SUBRC NE 0. EXIT. ENDIF. IF NOT MARK IS INITIAL. FOUND = 'X'. PERFORM REPORT_DOWNLOAD USING REPORT. ENDIF. ADD 1 TO INDEX. ENDDO. IF FOUND IS INITIAL. MESSAGE E300(M1) WITH TEXT-001. ELSE. *...Verzeichnis schreiben PFAD = P_PFAD. REPLACE '*' WITH INHALT INTO PFAD. SORT REPORTS. PERFORM WS_DOWNLOAD TABLES REPORTS USING PFAD. MARK = ''. PERFORM REPORTS_ANZEIGEN TABLES XTRDIR USING MARK. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form REPORT_DOWNLOAD *&---------------------------------------------------------------------* FORM REPORT_DOWNLOAD USING REPORT LIKE TRDIR-NAME. READ REPORT REPORT INTO REPPU. * Textelemente lesen READ TEXTPOOL REPORT INTO XTEXTPOOL LANGUAGE SY-LANGU. DESCRIBE TABLE XTEXTPOOL LINES I. WHILE I > 0. READ TABLE XTEXTPOOL INDEX I. IF XTEXTPOOL-ID = 'R'. REPORTS-TEXT = XTEXTPOOL-ENTRY(70). ENDIF. * SUBTRACT 1 FROM I. SHIFT XTEXTPOOL BY 06 PLACES RIGHT. XTEXTPOOL(06) = '*$*$IO'. REPPU = XTEXTPOOL. INSERT REPPU INDEX 1. ENDWHILE. * REPORTS-REPID = REPORT. COLLECT REPORTS. * PFAD = P_PFAD. REPLACE '*' WITH '**' INTO PFAD. REPLACE '*' WITH REPORT INTO PFAD. CONDENSE PFAD NO-GAPS. REPLACE '*' WITH EXT INTO PFAD. PERFORM WS_DOWNLOAD TABLES REPPU USING PFAD. * ENDFORM. *&---------------------------------------------------------------------* *& Form WS_DOWNLOAD *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_PFAD text * * -->P_TABELLE text * *----------------------------------------------------------------------* FORM WS_DOWNLOAD TABLES TABELLE USING PFAD LIKE RLGRAP-FILENAME. CALL FUNCTION 'WS_DOWNLOAD' EXPORTING FILENAME = PFAD FILETYPE = 'ASC' TABLES DATA_TAB = TABELLE EXCEPTIONS FILE_OPEN_ERROR = 01 FILE_WRITE_ERROR = 02 INVALID_FILESIZE = 03 INVALID_TABLE_WIDTH = 04 INVALID_TYPE = 05 NO_BATCH = 06 UNKNOWN_ERROR = 07. IF SY-SUBRC <> 0. WRITE:/ 'Fehler in WS_DOWNLOAD', SY-SUBRC. STOP. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form KOPF_ZEILE *&---------------------------------------------------------------------* FORM KOPF_ZEILE. WRITE: / 'Report:', SY-REPID(8). WRITE: 55 'Datum:', SY-DATUM, SY-UZEIT. WRITE: /15 SY-TITLE(50) , 69 'Seite', SY-PAGNO(4). ULINE. IF P_UPLOAD = 'X'. WRITE: /3 'Report Bezeichnung'. ELSE. WRITE: /3 'Report', 24 'Erfasser', 37 'Erst.Datum', 48 'Änderer', 61 'Änd.Datum Version'. ENDIF. ULINE. ENDFORM. *&---------------------------------------------------------------------* *& Form REPORT_ANZEIGEN *&---------------------------------------------------------------------* FORM REPORT_ANZEIGEN. READ REPORT XTRDIR-NAME INTO REPPU. EDITOR-CALL FOR REPPU TITLE REPORTS-REPID DISPLAY-MODE. ENDFORM. ************************************************************************ *************** END OF PROGRAM **************************************** ************************************************************************