Anfang des Inhaltsbereichs

Automatische Datenübergabe Dokument im Navigationsbaum lokalisieren

Die automatische Datenübergabe erfolgt über die Systemfelder, die bei jedem interaktiven Ereignis versorgt werden. Eine Übersicht über diese Systemfelder findet sich unter Verzweigungslisten.

Aus den Systemfeldern erhält man hauptsächlich Informationen zum Index der Listen, zur Positionierung der Listen im Ausgabefenster und zur Cursorposition. Das einzige Systemfeld, welches den Inhalt der ausgewählten Zeile enthält, ist SY-LISEL.

Das folgende Beispiel zeigt, wie solche Systemfelder während interaktiver Ereignisse versorgt werden.

Beispiel

REPORT demo_list_system_fields NO STANDARD PAGE HEADING
                                LINE-COUNT 12 LINE-SIZE 40.

DATA: l TYPE i, t(1) TYPE c.

DO 100 TIMES.
  WRITE: / 'Loop Pass:', sy-index.
ENDDO.

TOP-OF-PAGE.

  WRITE: 'Basic List, Page', sy-pagno.
  ULINE.

TOP-OF-PAGE DURING LINE-SELECTION.

  WRITE 'Secondary List'.
  ULINE.

AT LINE-SELECTION.

  DESCRIBE FIELD sy-lisel LENGTH l IN CHARACTER MODE
TYPE t.

  WRITE: 'SY-LSIND:', sy-lsind,
       / 'SY-LISTI:', sy-listi,
       / 'SY-LILLI:', sy-lilli,
       / 'SY-CUROW:', sy-curow,
       / 'SY-CUCOL:', sy-cucol,
       / 'SY-CPAGE:', sy-cpage,
       / 'SY-STARO:', sy-staro,
       / 'SY-LISEL:', 'Length =', l, 'Type =', t,
       /  sy-lisel.

Diese Programm erzeugt eine zehnseitige Liste. Nach dem Programmstart kann der Benutzer den Cursor auf der Grundliste positionieren und durch Auswählen bzw. eine Verzweigungsliste erzeugen. Diese zeigt den Inhalt der Systemfelder an.

SY-LSIND ist der Index der aktuellen Liste, SY-LISTI ist der Index der vorhergehenden. SY-LILLI ist die Nummer der ausgewählten Zeile in der Gesamtliste, SY-CUROW ist die Position der ausgewählten Zeile auf dem Dynpro. SY-CUCOL ist die Position des Cursors im Fenster. Diese Position ist um eins größer als die entsprechende ungescrollte Listenspalte. SY-CPAGE ist die oberste angezeigte Seite der Liste. SY-STARO ist die Nummer der obersten eigentlichen Listenzeile, die auf der obersten Seite angezeigt wird. Hierbei wird der Seitenkopf nicht mitgezählt. SY-CPAGE und SY-STARO sind unabhängig von der Cursorposition. Für SY-LISEL werden hier die Länge, der Datentyp und der Inhalt angezeigt. Die Länge von SY-LISEL ist unabhängig von der Listenbreite immer 255.

Verwendung von SY-LISEL

Das Systemfeld SY-LISEL ist ein Feld vom Typ C der Länge 255. Es enthält zwar die ausgewählte Zeile, ist aber als Zeichenkette nur bedingt für die Wertübergabe von Einzelfeldern einsetzbar. Um bestimmte Stellen in SY-LISEL zu verarbeiten, müssen Offsetangaben verwendet werden.

Zur Wertübergabe bietet sich daher eher eine der unter Programmgesteuerte Datenübergabe beschriebenen Methoden an. SY-LISEL eignetet sich dagegen, um die Überschriften von Verzweigungslisten zu gestalten, oder um zu überprüfen, ob eine ausgewählte Zeile keine Leerzeile oder ein Unterstrich ist.

Beispiel

REPORT demo_list_sy_lisel NO STANDARD PAGE HEADING.

DATA num TYPE i.

SKIP.
WRITE 'List of Quadratic Numbers between One and Hundred'.
SKIP.
WRITE 'List of Cubic Numbers between One and Hundred'.

TOP-OF-PAGE.
  WRITE 'Choose a line!'.
  ULINE.

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE sy-lisel.
  ULINE.

AT LINE-SELECTION.
  IF sy-lisel(4) = 'List'.
    CASE sy-lilli.
      WHEN 4.
        DO 100 TIMES.
          num = sy-index ** 2.
          WRITE: / sy-index, num.
        ENDDO.
      WHEN 6.
        DO 100 TIMES.
          num = sy-index ** 3.
          WRITE: / sy-index, num.
        ENDDO.
    ENDCASE.
  ENDIF.

Nach dem Programmstart erscheint eine Liste, auf der zwei Zeilen ausgewählt werden können.

Wählt der Benutzer. die obere Zeile aus, erscheint eine Liste von Quadratzahlen. Bei der Auswahl der unteren Zeile auf der Grundliste erscheint entsprechend die Liste der Kubikzahlen.

Der Inhalt der ausgewählten Zeile bildet die Überschrift der Verzweigungsliste. In der IF-Anweisung werden die ersten vier Stellen von SY-LISEL verwendet, um nur eine richtige Zeilenauswahl zuzulassen. Eine andere Zeilenauswahl auf der Verzweigungsliste führt durch die logischen Bedingungen des Verarbeitungsblocks unter AT LINE-SELECTION zu keinen weiteren Ausgaben.

Ende des Inhaltsbereichs