Interaktive Liste mit Ordnerstruktur
Mit der richtigen Technik können Sie eine interaktive Liste mit einer Ordnerstruktur bauen. Hier sehen Sie, wie das geht.
Das folgende Programm liest Tabellennamen und die dazugehörigen Feldname in eine interne Tabelle und gibt dann die Tabellennamen aus.
Mit einem Klick auf das Ordner-Symbol können dann die Felder zu der Tabelle angezeigt werden. Mit einem erneuten Klick auf den — nun offen dargestellten — Ordner, werden die Felder wieder ausgeblendet.
Die Anwendungsmöglichkeiten sind vielfältig: Anzeige von Aufträgen und deren Positionen, Stücklisten und die dazugehörigen Komponenten, etc.
So sieht’s aus
|
|
Programm
REPORT zzliste10 NO STANDARD PAGE HEADING.
*– Icons bekannt machen
TYPE-POOLS icon.
*– Variablen
DATA:
*— GET CURSOR
feldname(30),
*— Aktuelle Listzeile
staro TYPE systaro,
*– “Kopf-Tabelle” mit Tabellennamen
BEGIN OF t_tabelle OCCURS 0,
tabname TYPE tabname,
anz,
END OF t_tabelle,
*– “Positions-Tabelle” mit Feldnamen
BEGIN OF t_felder OCCURS 0,
tabname TYPE tabname,
fldname TYPE fieldname,
END OF t_felder.
*– Selektionsbild
SELECT-OPTIONS s_table FOR t_tabelle-tabname DEFAULT ‘ED*’ OPTION CP.
*– Programmstart
START-OF-SELECTION.
*– Alle Tabellen innerhalb der Selektion lesen
SELECT tabname FROM dd02l
INTO CORRESPONDING FIELDS OF TABLE t_tabelle
WHERE tabname IN s_table
AND tabclass = ‘TRANSP’.
*— Und die Felder dazu
SELECT tabname fieldname FROM dd03l INTO TABLE t_felder
FOR ALL ENTRIES IN t_tabelle WHERE tabname = t_tabelle-tabname.
*– Tabellen ausgeben
PERFORM liste.
*– Bei Doppelklick
AT LINE-SELECTION.
*– Feldnamen ermitteln
GET CURSOR FIELD feldname.
*– Aktuelle Zeile merken
staro = sy-staro.
*– Nur weiter, wenn auch auf eine Zeile geklickt wurde, in der eine
*– Tabelle steht:
IF NOT t_tabelle-tabname IS INITIAL.
*– Tabellen lesen
READ TABLE t_tabelle WITH KEY tabname = t_tabelle-tabname.
IF sy-subrc = 0.
*– Sollen Felder der Tabelle angezeigt werden??
IF t_tabelle-anz = space.
*– Nein, dann aber jetzt!
t_tabelle-anz = ‘X’.
ELSE.
*– Ja; jetzt nicht jedoch nicht mehr.
t_tabelle-anz = space.
ENDIF.
*– Tabelleneintrag merken
MODIFY t_tabelle INDEX sy-tabix.
ENDIF.
*– Liste erneut ausgeben
PERFORM liste.
ENDIF.
*———————————————————————*
* FORM liste *
*———————————————————————*
FORM liste.
*– Keine Verzweigungsliste erzeugen
sy-lsind = 0.
*– Tabellennamen ausgeben
LOOP AT t_tabelle.
IF t_tabelle-anz = space.
*– Feldnamen sollen nicht angezeigt werden
WRITE: / icon_closed_folder AS ICON HOTSPOT.
ELSE.
*– Feldnamen anzeigen
WRITE: / icon_open_folder AS ICON HOTSPOT.
ENDIF.
*– Ausgabe des Tabellennamens
WRITE: t_tabelle-tabname.
*– Tabellenname für AT LINE-SELECTION merken
HIDE t_tabelle-tabname.
*– Falls gewünscht: Felder zur Tabelle anzeigen
IF t_tabelle-anz = ‘X’.
LOOP AT t_felder WHERE tabname = t_tabelle-tabname.
WRITE: /4 t_felder-fldname.
ENDLOOP.
ENDIF.
ENDLOOP.
*– Variablen löschen, damit bei Doppelklick auf eine Position nicht
*– mit dem Schliessen des Tabellen-Ordners reagiert wird.
CLEAR: t_tabelle, t_felder.
*– Cursor auf die letzte Position setzen
SCROLL LIST TO FIRST PAGE LINE staro INDEX 1.
ENDFORM.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024