Nach absoluten Positionsangaben erfolgt die nächste Ausgabe in fest vorgegebenen Spalten und Zeilen.
Horizontale Positionsangaben
Sie haben zwei Möglichkeiten, die horizontale Ausgabeposition anzugeben:
Den Zusatz AT der Anweisungen WRITE und ULINE (siehe
WRITE-Ausgabedaten auf der Liste positionieren) und die Anweisung POSITION. Die Anweisung POSITION hat folgende Syntax:Syntax
POSITION <col>.
Diese Anweisung setzt die horizontale Ausgabeposition und das Systemfeld SY-COLNO auf <col>. Liegt <col> außerhalb der Seite, werden die nachfolgenden Ausgabeanweisungen ignoriert.
Das System schreibt eine auf POSITION folgende, bzw. mit AT aufbereitete WRITE-Ausgabe an die angegebene Stelle, unabhängig davon, ob genügend Platz vorhanden ist oder nicht. Der Teil der Ausgabe, der nicht mehr auf die Zeile passt, wird abgeschnitten. Weitere WRITE-Ausgaben finden dann in der nächsten Zeile statt.
Vertikale Positionsangaben
So geben Sie die vertikale Ausgabeposition an:
Syntax
SKIP TO LINE <n>.
Diese Anweisung setzt die vertikale Ausgabeposition und das Systemfeld SY-LINNO auf <lin>. Liegt <lin> nicht zwischen 1 und der Seitenlänge, wird die Anweisung ignoriert.
Bei der Angabe von LINE zählen der Seitenkopf und Seitenfuß mit. Achten Sie darauf, nicht unbeabsichtigt Kopf- oder Fußzeilen zu überschreiben.
Ausgabe unter Seitenkopf positionieren
Mit der Anweisung BACK können Sie die Ausgabe auf die ersten Zeile nach dem geesamten Seitenkopf positionieren:
Syntax
BACK.
Steht diese Anweisung nicht hinter einer RESERVE-Anweisung, so erfolgt die nächste Ausgabe unter dem Seitenkopf. SY-COLNO wird auf 1 und SY-LINNO entsprechend der Länge des Seitenkopfs gesetzt. In Verbindung mit RESERVE gilt eine andere Regel (siehe
Relative Positionsangaben).Wird die Anweisung BACK zum Zeitpunkt TOP-OF-PAGE durchgeführt, wird die Ausgabeposition nicht unter den gesamten Seitenkopf, sondern unter den Standardseitenkopf positioniert, so daß nachfolgende Ausgaben den unter TOP-OF-PAGE selbstdefinierten Seitenkopf überschreiben.
Beispiel für absolute Positionsangaben
REPORT demo_list_position NO STANDARD PAGE HEADING LINE-SIZE 60.
DATA: x(3) TYPE c, y(3) TYPE c.
x = sy-colno. y = sy-linno.
TOP-OF-PAGE.
WRITE: 'Position of Header: ', x, y.
ULINE.
START-OF-SELECTION.
SKIP TO LINE 10.
POSITION 20.
x = sy-colno. y = sy-linno.
WRITE: '* <- Position', x, y.
SKIP TO LINE 12.
ULINE AT 20(20).
BACK.
x = sy-colno. y = sy-linno.
WRITE: 'Position after BACK:', x, y.
Dieses Programm erzeugt folgende Listenseite:
Die Anfangswerte von SY-COLNO und SY-LINNO werden den Feldern X und Y zugewiesen. Beachten Sie, daß diese Zuweisung eigentlich zum Zeitpunkt START-OF-SELECTION stattfindet (siehe
Verarbeitungsblöcke definieren). Die anfängliche Ausgabeposition ist die der ersten Kopfzeile und wird dort auch ausgegeben. Über SKIP TO LINE und POSITION wird ein Stern '*' in Spalte 20, Zeile 10 plaziert. Ein Unterstrich wird über SKIP TO LINE und AT positioniert. Schließlich wird die Ausgabeposition mit BACK auf Spalte 1, Zeile 3 unter den zweizeiligen Seitenkopf gesetzt.