Anfang des Inhaltsbereichs

Seitenvorschübe programmieren Dokument im Navigationsbaum lokalisieren

Unbedingte Seitenvorschübe programmieren Sie mit der Anweisung NEW-PAGE.

Seitenvorschübe in Abhängigkeit von der Anzahl der noch vorhandenen freien Zeilen programmieren Sie mit der Anweisung RESERVE.

Unbedingter Seitenvorschub

Um einen Seitenvorschub während der Listverarbeitung zu auszulösen, verwenden Sie die Grundform der Anweisung NEW-PAGE wie folgt:

Syntax

NEW-PAGE.

Diese Anweisung

Beispiel

REPORT demo_list_new_page LINE-SIZE 40.

TOP-OF-PAGE.

  WRITE: 'TOP-OF-PAGE', sy-pagno.
  ULINE AT /(17).

START-OF-SELECTION.

  DO 2 TIMES.
    WRITE / 'Loop:'.
    DO 3 TIMES.
      WRITE / sy-index.
    ENDDO.
    NEW-PAGE.
  ENDDO.

Dieses Beispielprogramm, verwendet sowohl den Standartseitenkopf, dessen Listenüberschrift als 'Standard Page Header' in den Textelementen definiert wurde, als auch einen selbstdefinierten Seitenkopf. Beide Seitenköpfe erscheinen auf jeder Seite.

Diese Grafik wird im zugehörigen Text erklärt

In der DO-Schleife wird NEW-PAGE zweimal angesprochen, aber nur einmal wird ein Seitenvorschub ausgeführt, da nach dem zweiten NEW-PAGE keine Ausgabe mehr erfolgt.

Bedingter Seitenvorschub - Zeilenblock definieren

Um einen Seitenvorschub in Abhängigkeit der noch freien Zeilen auf einer Seite durchzuführen, verwenden Sie die RESERVE-Anweisung wie folgt:

Syntax

RESERVE <n> LINES.

Diese Anweisung erzeugt einen Seitenvorschub, wenn auf der aktuellen Seite der Liste nicht mehr mindestens <n> freie Zeilen zwischen letzter Ausgabe und dem Seitenfuß zur Verfügung stehen. <n> kann eine Variable sein. Vor dem Seitenvorschub wird das Ereignis END-OF-PAGE ausgelöst. RESERVE wirkt nur, wenn auf der folgenden Seite mindestens eine Ausgabe erfolgt. D.h. es werden keine Leerseiten erzeugt.

Die RESERVE-Anweisung definiert somit einen Zeilenblock, der nur als Gesamtheit auf einer Seite dargestellt werden darf. Welche praktischen Auswirkungen ein Zeilenblock außerdem noch hat, erfahren Sie unter Relative Positionsangaben.

Beispiel

REPORT demo_list_reserve LINE-SIZE 40 LINE-COUNT 8(2).

END-OF-PAGE.

  ULINE.

START-OF-SELECTION.

  DO 4 TIMES.
    WRITE / sy-index.
  ENDDO.

  DO 2 TIMES.
    WRITE / sy-index.
  ENDDO.

  RESERVE 3 LINES.
  WRITE: / 'LINE 1',
         / 'LINE 2',
         / 'LINE 3'.

In diesem Beispielprogramm sei die Listenüberschrift des Standartseitenkopfs als 'Standard Page Header' definiert. In der REPORT-Anweisung sind für eine Seite acht Zeilen vorgesehen. Davon werde zwei für den Standardseitenkopf benötigt und zwei als Seitenfuß definiert. Der Seitenfuß besteht aus einer Unterstreichungszeile und einer Leerzeile. Für die eigentliche Listenausgabe stehen pro Seite also vier Zeilen zur Verfügung. In der ersten DO-Schleife werden diese vier Zeilen gefüllt, danach tritt das Ereignis END-OF-PAGE ein und es findet ein automatischer Seitenvorschub statt. Nach der zweiten DO-Schleife bewirkt RESERVE das Ereignis END-OF-PAGE und einen Seitenvorschub, da danach keine drei Zeilen mehr auf der Seite zur Verfügung stehen. Die Ausgabe sieht folgendermaßen aus:

Diese Grafik wird im zugehörigen Text erklärt

Die drei Zeilen auf Seite 3 bilden einen Zeilenblock.

Ende des Inhaltsbereichs