************************************************************************
* Programm : ZSTRDIR *
* Themengebiet: SAP-SQL, Selektionsbildergänzung, Interaktives Rep. *
* Beschreibung: Lesen von SAP-Tabellen mittels SAP-SQL. *
* Selektionen mit WHERE, Interne Tabellen, *
* Zeilenauswahl *
* Art : Beispielprogramm *
* Autor : Prof. Thomas Müller *
************************************************************************
PROGRAM ZSTRDIR.
TABLES TRDIR. "Tabelle der ABAP-Programme
DATA BEGIN OF PROGTAB OCCURS 50. "Interne Tabelle für Zeilen-
INCLUDE STRUCTURE TRDIR. "auswahlmöglichkeiten
DATA END OF PROGTAB.
DATA EDITIERBAR LIKE TRDIR-EDTX.
DATA ANZAHL TYPE I.
DATA ANTWORT(1).
PARAMETER: SUCH(20) DEFAULT 'Z*'. "Suche Programmname
PARAMETER: AUTO(20) DEFAULT '*'. "Suche Autor
*SELECT-OPTIONS RPKL FOR TRDIR-CLAS DEFAULT 'Z*'.
PARAMETER: RPKL(04) DEFAULT '*'. "Suche Reportklasse
TRANSLATE SUCH USING '*%'. "Zeichen * ist %
TRANSLATE AUTO USING '*%'. "Zeichen * ist %
TRANSLATE RPKL USING '*%'. "Zeichen * ist %
PERFORM HOLE_DATEIEN TABLES PROGTAB.
DESCRIBE TABLE PROGTAB LINES ANZAHL.
SORT PROGTAB BY CLAS NAME CNAM.
LOOP AT PROGTAB.
WRITE: / PROGTAB-NAME, 12 PROGTAB-CNAM, 25 PROGTAB-UNAM,
38 PROGTAB-UDAT DD/MM/YYYY, 52 PROGTAB-DBNA,
58 PROGTAB-CLAS.
IF PROGTAB-EDTX = 'X'.
WRITE 65 'Gesperrt'.
ELSE.
WRITE 65 'nicht gesperrt'.
ENDIF.
WRITE 80 PROGTAB-EDTX AS CHECKBOX.
HIDE PROGTAB-NAME. "Zeilenauswahl ermöglichen
ENDLOOP.
AT LINE-SELECTION.
CHECK NOT PROGTAB-NAME IS INITIAL.
IF PROGTAB-EDTX = 'X'.
EDITIERBAR = 'X'.
ELSE.
EDITIERBAR = SPACE.
ENDIF.
CALL FUNCTION 'EDITOR_PROGRAM'
EXPORTING APPID = 'PG'
DISPLAY = EDITIERBAR
PROGRAM = PROGTAB-NAME.
CLEAR PROGTAB-NAME. "wieder auf Initialwert setzen
AT PF8. "F8 = Löschen der Datei
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING DEFAULTOPTION = 'J'
TEXTLINE1 = 'Soll das genannte Programm '
TEXTLINE2 = 'wirklich gelöscht werden'
TITEL = PROGTAB-NAME
IMPORTING ANSWER = ANTWORT.
CASE ANTWORT.
WHEN 'J'.
DELETE REPORT PROGTAB-NAME. " Löschen des Reports
DELETE PROGTAB INDEX SY-TABIX. " Löschen der Tabellenzeile
* SCROLL LIST TO PAGE 1.
ENDCASE.
TOP-OF-PAGE.
WRITE: / SUCH, 12 AUTO, 'Anzahl der gefundenen Programme', ANZAHL.
SKIP 1.
FORM HOLE_DATEIEN TABLES PT.
REFRESH PT.
SELECT * " Alle Attribute
FROM TRDIR " aus Tabelle TRDIR
INTO TABLE PT " in ITab pt
WHERE NAME LIKE SUCH AND CNAM LIKE AUTO " Selektionskriterien
AND CLAS LIKE RPKL.
ENDFORM.