!--a11y-->

絶対位置を指定した後の出力は、固定された行および列から画面に書き込まれます。
横方向の出力位置を指定するために、ABAP に以下の 2 つのオプションが提供されます。
WRITE および ULINE 命令の AT オプション ( 参照: 一覧での WRITE 出力の位置) および POSITION 命令。POSITION 命令の構文は以下のとおりです。
POSITION <col>.
この命令では、横方向の出力位置と SY-COLNO システム項目が <col> に設定されます。<col> がページ外にある場合、後続の出力命令は無視されます。
POSITION 命令または AT を使用して書式が設定された WRITE 命令の後で、十分なスペースがあるかどうかに関わらず、指定した位置に出力が書き込まれます。行に収まらないその部分の出力は、切り捨てられます。この後、別の WRITE 出力が次の行で開始します。
縦方向の出力位置は以下のように指定します。
SKIP TO LINE <n>.
この命令では、縦方向の出力位置と SY-LINNO システム項目が <lin> に設定されます。<lin> が 1 とページ長の間にない場合、命令は無視されます。

LINE を使用すると、ページヘッダ行とページフッタ行もカウントされます。ヘッダ行またはフッタ行を誤って上書きすることがないようにしてください。
ページヘッダ全体の後に続く最初の行に出力位置を指定するには、BACK 命令を使用します。
BACK.
この命令が RESERVE 命令の後に続かない場合、後続の出力はページヘッダの下に表示されます。この命令では、ページヘッダの長さに応じて SY-COLNO が 1 および SY-LINNO が設定されます。RESERVE 命令との組合せでは、別のルールが適用されます ( 参照: 相対位置の指定) 。
BACK 命令が TOP-OF-PAGE イベントで実行されると、ページヘッダ全体の下に出力位置が設定されず、標準ページヘッダの下にのみ設定されます。これで、書き込まれたすべての出力で、TOP-OF-PAGE で指定した独自定義のページヘッダが上書きされるようになります。

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.
このプログラムでは以下の一覧ページが生成されます。

SY-COLNO および SY-LINNO のオリジナル値は項目 X および Y に割り当てられます。この割当は、実際にはSTART-OF-SELECTION イベントで実行されます ( 参照: 処理ブロックの定義) 。最初の出力位置は、最初のヘッダ行の位置です。出力はそこに書き込まれます。SKIP TO LINE および POSITION は、アスタリスク '*' を列 20 、行 10 に置きます。 SKIP TO LINE および AT が下線を生成します。最後に、BACK が出力位置を 2 行ページヘッダの下の列 1 、行 3 に設定します。