!--a11y-->

プログラム内で完成した一覧の行を修正するには、MODIFY LINE 命令を使用します。修正する行を指定するために、以下の 2 つの方法があります。
キ 明示的:
MODIFY LINE <n> [INDEX <idx>|OF CURRENT PAGE|OF PAGE
<p>]
[<modifications>].
オプションの最初の行がない場合、インタラクティブイベントが発生した一覧 ( 索引 SY-LISTI) の行 <n> が修正されます。オプションの最初の行によって、以下のように修正する行を指定することができます。
- 索引 <idx> のある一覧レベルの行 <n> を指定するには、INDEX <idx> を使用します。
- 現在表示されているページ ( ページ番号 SY-CPAGE) の行 <n> を指定するには、OF CURRENT PAGE を使用します。
- ページ <p> の行 <n> を指定するには、OF PAGE <p> を使用します。
最新に読み込まれた行を参照するには、以下のように指定します。
MODIFY CURRENT LINE [<modifications>].
この命令では、行選択 ( F2) または READ LINE 命令によって最新に読み込まれた行を修正します。
オプション<modifications> を使用しない場合、上記の命令で、SY-LISEL システム項目の現在のコンテンツを、指定した行に書き込みます。行の HIDE エリアは、該当する項目の現在の値によって上書きされます。ただし、これによる表示値への影響はありません。
指定した行の修正が完了すると、SY-SUBRC は 0 に設定されます。完了しない場合は 0 以外に設定されます。
オプション<modifications> には、上記の機能以外に、行を修正する他の機能がいくつかあります。
変更する行の書式を修正するには、以下のように MODIFY 命令のオプション LINE FORMAT を使用します。
MODIFY ...LINE FORMAT <option1> <option2> ... .
この命令では、<option i> に指定した書式に従って、修正された行全体の出力書式を設定します。FORMAT 命令の場合と同じ書式オプションを指定することができます。
変更する行の項目内容を明示的に修正するには、以下のように MODIFY 命令のオプション FIELD VALUE を使用します。
MODIFY ...FIELD VALUE <f1> [FROM <g1>] <f2> [FROM <g2>] ... .
この命令では、一覧行の項目 <f i> の内容が、項目 <f i> または <g i> の現在の内容で上書きされます。必要に応じて、項目データ型が C に変換されます。
項目 <f i> が行内に複数含まれる場合、最初の項目だけが修正されます。項目 <f i> が行内にまったく含まれない場合、オプションは無視されます。
SY-LISEL から行に読み込んだ現在の内容に関わらず、既存の項目 <f i> が修正されます。SY-LISEL を使用して項目 <f i> の出力位置で行を変更した場合、FIELD VALUE オプションがこの変更を上書きします。
変更する行の項目書式を修正するには、以下のように MODIFY 命令のオプション FIELD FORMAT を使用します。
MODIFY ...FIELD FORMAT <f1> <options1> <f2> <options2> ... .
この命令では、<option i> に指定した書式に従って、行内に含まれる項目 <f i> の出力書式を設定します。FORMAT 命令の書式を <options i> に指定することができます。
オプション FIELD FORMAT は、対応する項目の LINE FORMAT オプションの指定内容を上書きします。項目 <f i> が行内に複数含まれる場合、最初の項目だけが修正されます。項目 <f i> が行内にまったく含まれない場合、オプションは無視されます。

行書式の例。
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.
このプログラムでは、行を何度も選択することによってユーザが背景色を変更することができる出力行を作成します。

項目内容の例。
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.
このプログラムでは、行を選択することによってユーザが項目 C を変更することができる出力行を作成します。同時に、SY-LISEL の修正により、行の最初の 2 文字を 2 つのアスタリスク '**' で上書きします。

項目書式の例。
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.
このプログラムでは、ステータス CHECK の基本一覧を作成します。ステータス CHECK で、機能コード READ ( テキスト Read Lines) が機能キー F5 とボタンに割り当てられます。ユーザはチェックボックスをマークしてから Read Lines を選択することができます。
AT USER-COMMAND イベントで、READ LINE を使用して一覧行の読込が行われます。二次一覧の選択行の処理が続行します。基本一覧に戻ると、MODIFY LINE を使用して選択行のチェックボックスのマークが削除され、書式 INPUT OFF がチェックボックスに設定されます。また、項目 NUM の書式も変更されます。
この時点で、ユーザはまだ変更されていない行だけをマークすることができます。