Show TOC Anfang des Inhaltsbereichs

Listenzeilen modifizieren  Dokument im Navigationsbaum lokalisieren

Um die Zeilen einer fertiggestellten Liste aus dem ABAP-Programm heraus zu modifizieren, verwendet man die Anweisung MODIFY LINE. Zur Angabe der zu modifizierenden Zeile hat man folgende Möglichkeiten:

      Zu modifizierende Zeile explizit angeben:

MODIFY LINE n [INDEX idx|OF CURRENT PAGE|OF PAGE p]
              [modifications].

Man kann sich auch auf die zuletzt gelesene Zeile beziehen:

MODIFY CURRENT LINE [modifications].

Diese Anweisung verändert die letzte durch Zeilenauswahl (F2) oder die Anweisung READ LINE gelesene Zeile.

Im Zusatz modifications stehen verschiedene weitere Möglichkeiten zur Verfügung, um die Zeile zu modifizieren. Mehr Informationen dazu sowie zu den einzelnen Zusätzen der Anweisung MODIFY LINE befinden sich in der Schlüsselwortdokumentation.

 

Zeilenformatierung ändern

Man die Formatierung der zu ändernden Zeile mit dem Zusatz LINE FORMAT der Anweisung MODIFY wie folgt beeinflussen:

MODIFY ... LINE FORMAT option1 option2 ... .

Diese Anweisung setzt das Ausgabeformat der gesamten geänderten Zeile gemäß den Formatangaben option1 option2 … Die möglichen Formatangaben entsprechen denen der Anweisung FORMAT.

Feldinhalte ändern

Man kann die Inhalte von Feldern in der zu ändernden Zeile gezielt mit dem Zusatz FIELD VALUE der Anweisung MODIFY ändern:

MODIFY ... FIELD VALUE f1 [FROM g1] f2 [FROM g2] ... .

Diese Anweisung überschreibt die Inhalte der Felder f1 f2 … in der Listenzeile mit dem aktuellen Inhalt der Felder f1 f2 … bzw. g1 g2 …, ohne dabei letztere zu ändern. Dabei wird gegebenenfalls eine Typkonvertierung nach Typ c vorgenommen.

Für mehr Informationen: siehe Schlüsselwortdokumentation.

Feldformatierung ändern

Man kann die Formatierung von Feldern in der zu ändernden Zeile mit dem Zusatz FIELD FORMAT der Anweisung MODIFY wie folgt beeinflussen:

MODIFY ... FIELD FORMAT f1 options1 f2 options2 ... .

Diese Anweisung setzt das Ausgabeformat der in der Zeile vorkommenden Felder f1 f2 … gemäß den Formatangaben in options1 options2 … . In options1 options2 … können mehrere Formatangaben der Anweisung FORMAT angegeben werden.

Der Zusatz FIELD FORMAT überschreibt feldweise die Angaben des Zusatzes LINE FORMAT. Bei eventuell mehrfach in einer Zeile vorkommenden Feldern f1 f2 … wird nur das erste bearbeitet. Kommt ein Feld f1 f2 … überhaupt nicht vor, wird der Zusatz ignoriert.

Beispiele

Beispiel

Beispiel zur Zeilenformatierung.

REPORT demo_list_modify_line_format LINE-SIZE 40
                                    NO STANDARD PAGE HEADING.

DATA c TYPE i VALUE 1.

WRITE 'Select line to modify the background'.

AT LINE-SELECTION.
  IF c = 8.
     c = 0.
  ENDIF.
  MODIFY CURRENT LINE LINE FORMAT COLOR = c.
  
ADD 1 TO c.

Dieses Programm erzeugt eine Ausgabezeile, deren Hintergrundfarbe der Benutzer durch wiederholte Zeilenauswahl abändern kann.

Beispiel

Beispiel zu Feldinhalten.

REPORT demo_list_modify_field_value LINE-SIZE 40
                                    NO STANDARD PAGE HEADING.

DATA c TYPE i.

WRITE: '   Number of selections:', (2) c.

AT LINE-SELECTION.
  ADD 1 TO c.
  sy-lisel(2) = '**'.
  MODIFY CURRENT LINE FIELD VALUE c.

Dieses Programm erzeugt eine Ausgabezeile, in welcher der Benutzer durch Zeilenauswahl das Feld c verändern kann. Gleichzeitig werden dabei die ersten beiden Zeichen der Zeile durch das Verändern von sy-lisel mit zwei Sternen '**' überschrieben.

Beispiel

Beispiel zur Feldformatierung.

REPORT demo_list_modify_field_format NO STANDARD PAGE HEADING.

DATA: box(1) TYPE c, lines TYPE i, num(1) TYPE c.

SET PF-STATUS 'CHECK'.

DO 5 TIMES.
  num = sy-index.
  WRITE: / box AS CHECKBOX, 'Line', num.
  HIDE: box, num.
ENDDO.
lines = sy-linno.

TOP-OF-PAGE.
  WRITE  'Select some checkboxes'.
  ULINE.

AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN 'READ'.
      SET PF-STATUS 'CHECK' EXCLUDING 'READ'.
      box = space.
      DO lines TIMES.
        READ LINE sy-index FIELD VALUE box.
        IF box = 'X'.
          WRITE: / 'Line', num, 'was selected'.
          box = space.
          MODIFY LINE sy-index
                      FIELD VALUE  box
                      FIELD FORMAT box INPUT OFF
                                   num COLOR 6 INVERSE ON.
        
ENDIF.
      ENDDO.
  ENDCASE.

Dieses Programm erzeugt eine Grundliste mit dem Status CHECK, in dem der Funktionscode READ (Text Read Lines) die Taste F5 und eine Drucktaste belegt. Der Benutzer kann Ankreuzfelder markieren und danach Read Lines wählen.

Beim Ereignis AT USER-COMMAND werden die Zeilen der Liste über READ LINE gelesen. Angekreuzte Zeilen werden auf einer Verzweigungsliste weiterverarbeitet. Für die Rückkehr zur Grundliste werden in den angekreuzten Zeilen die Ankreuzfelder über MODIFY LINE geleert und mit dem Format INPUT OFF versehen. Zusätzlich wird das Format des Felds num geändert.

Der Benutzer kann jetzt nur noch die nicht geänderten Zeilen auswählen.

Ende des Inhaltsbereichs