WRITE für Programmstruktur

Es ist leider im Standard nicht möglich, die Felder einer programminternen Struktur oder Tabelle auszugeben. Mit dem folgenden Muster-Dialog geht es! Hierfür werden die Strukturen des Programms zur Auswahl angeboten. Die Felder der ausgewählten Struktur werden dann für die Ausgabe vorbereitet.
So sieht’s aus
|
Quelltext
FUNCTION ZWRITE1_EDITOR_EXIT.
*“———————————————————————-
*“*“Lokale Schnittstelle:
*“ TABLES
*“ BUFFER STRUCTURE ABAPSOURCE
*“ EXCEPTIONS
*“ CANCELLED
*“———————————————————————-
DATA:
l_report LIKE sy-cprog,
l_answer,
t_flist LIKE rfieldlist OCCURS 0 WITH HEADER LINE,
t_comp LIKE rstrucinfo OCCURS 0 WITH HEADER LINE,
t_pop LIKE spopli OCCURS 0 WITH HEADER LINE.
*– Aktuellen Report ermitteln
GET PARAMETER ID ‚RID‘ FIELD l_report.
IF sy-subrc = 0.
*– Felddefinitionen lesen
CALL FUNCTION ‚GET_GLOBAL_SYMBOLS‘
EXPORTING
program = l_report
name_pattern = ‚*‘
TABLES
fieldlist = t_flist.
*– Alles, was keine „Struktur“ ist, rauswerfen:
LOOP AT t_flist.
IF t_flist-type <> ‚u‘ OR „Struktur
t_flist-name(1) = ‚%‘ OR
t_flist-name(1) = ‚<‚ OR
t_flist-name = ‚SSCRFIELDS‘ OR
t_flist-name = ‚SSCRTEXTS‘ OR
t_flist-name = ‚SCREEN‘ OR
t_flist-name = ‚RSJOBINFO‘ OR
t_flist-name = ‚SY‘ OR
t_flist-name = ‚SYST‘ OR
t_flist-name = ‚VARI‘.
DELETE t_flist.
ELSE.
*– Zur Auswahl anbieten
t_pop-selflag = space.
t_pop-varoption = t_flist-name.
APPEND t_pop.
ENDIF.
ENDLOOP.
*– Auswahl der Struktur
CALL FUNCTION ‚POPUP_TO_DECIDE_LIST‘
EXPORTING
start_col = 5
start_row = 10
textline1 = ‚Bitte Struktur auswählen‘
titel = ‚WRITE zu Programmstruktur‘
IMPORTING
answer = l_answer
TABLES
t_spopli = t_pop
EXCEPTIONS
OTHERS = 4.
*– Gewählten Eintrag bearbeiten:
LOOP AT t_pop WHERE selflag = ‚X‘.
*– Komponentenliste der Struktur ermitteln
CALL FUNCTION ‚GET_COMPONENT_LIST‘
EXPORTING
program = l_report
fieldname = t_pop-varoption
TABLES
components = t_comp.
LOOP AT t_comp.
CONCATENATE ‚WRITE~‘
t_pop-varoption ‚-‚ t_comp-compname ‚.‘
INTO buffer.
TRANSLATE buffer USING ‚~ ‚.
APPEND buffer.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFUNCTION.
- ALV-Grid Tabelle direkt ändern - 3. März 2023
- Subscreen-Bereiche anzeigen - 23. Februar 2023
- Komplexe Datenobjekte editieren - 23. Januar 2023