コンテンツフレーム起動

一覧行の修正 文書を SAP ライブラリストラクチャに組み込む

プログラム内で完成した一覧の行を修正するには、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 の書式も変更されます。

この時点で、ユーザはまだ変更されていない行だけをマークすることができます。

 

 

コンテンツフレーム終了