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 ****************************************
************************************************************************

Was this article helpful?

Related Articles

Leave A Comment?

You must be logged in to post a comment.