コンテンツフレーム起動

データの自動受渡 文書を SAP ライブラリストラクチャに組み込む

システム項目を使用して、データがプログラムに自動的に渡されます。システム項目は、各インタラクティブイベントごとに書き込まれます。該当するシステム項目の概要については、詳細一覧を参照してください。

システム項目には、一覧の索引、出力ウィンドウでの一覧の位置、およびカーソルの位置に関する情報が含まれます。選択された行のコンテンツを含む唯一のシステム項目は、SY-LISEL です。

次の例は、インタラクティブイベント時にこれらのシステム項目にどのように書込みが行われるかを示しています。

例

REPORT demo_list_system_fields NO STANDARD PAGE HEADING
                                LINE-COUNT 12 LINE-SIZE 40.

DATA: l TYPE i, t(1) TYPE c.

DO 100 TIMES.
   WRITE: / 'Loop Pass:', sy-index.
ENDDO.

TOP-OF-PAGE.

   WRITE: 'Basic List, Page', sy-pagno.
ULINE.

TOP-OF-PAGE DURING LINE-SELECTION.

WRITE 'Secondary List'.
ULINE.

AT LINE-SELECTION.

   DESCRIBE FIELD sy-lisel LENGTH l IN CHARACTER MODE
                          TYPE t.

   WRITE: 'SY-LSIND:', sy-lsind,
       / 'SY-LISTI:', sy-listi,
       / 'SY-LILLI:', sy-lilli,
       / 'SY-CUROW:', sy-curow,
       / 'SY-CUCOL:', sy-cucol,
       / 'SY-CPAGE:', sy-cpage,
       / 'SY-STARO:', sy-staro,
       / 'SY-LISEL:', 'Length =', l, 'Type =', t,
       /  sy-lisel.

このプログラムでは、10 ページの一覧が作成されます。プログラムを実行すると、基本一覧内にカーソルを置いて、 選択を選択することで、詳細一覧を作成することができます。これにより、システム項目のコンテンツが表示されます。

SY-LSIND は現在一覧の索引で、SY-LISTI は前一覧の索引です。SY-LILLI は一覧内で選択された行の番号で、SY-CUROW には現在の画面で選択された行の行番号が含まれます。SY-CUCOL は、ウィンドウ内のカーソルの位置です。この位置は、対応する未スクロール一覧列を 1 列ずつ超えます。SY-CPAGE は、現在表示されている一覧のページです。SY-STARO は、現在ページに表示される一番上の一覧行の番号です。これにはページヘッダが含まれません。SY-CPAGE SY-STARO は、カーソル位置に依存しません。SY-LISEL には、長さ、データ型、およびコンテンツが表示されます。SY-LISEL の長さは、一覧の幅に関わりなく、常に 255 です。

SY-LISEL の使用

システム項目 SY-LISEL は、データ型 C の項目で、長さは 255 です。この項目には選択された行が含まれますが、文字列であるため、用途は個別項目の値の受渡に限定されます。SY-LISEL の特定の部分を処理するには、該当するオフセットを指定する必要があります。

このため、データを転送するためには、プログラム命令によるデータの受渡で説明されている方法の 1 つを使用することの方が適しています。ただし、SY-LISEL は、詳細一覧のヘッダを作成したり、選択された行がスペースやアンダースコアではないことをチェックするために適しています。

例

REPORT demo_list_sy_lisel NO STANDARD PAGE HEADING.

DATA num TYPE i.

SKIP.
WRITE 'List of Square Numbers between One and Hundred'.
SKIP.
WRITE 'List of Cubic Numbers between One and Hundred'.

TOP-OF-PAGE.
WRITE 'Choose a line!'.
ULINE.

TOP-OF-PAGE DURING LINE-SELECTION.
   WRITE sy-lisel.
ULINE.

AT LINE-SELECTION.
   IF sy-lisel(4) = 'List'.
     CASE sy-lilli.
WHEN 4.
    DO 100 TIMES.

           num = sy-index ** 2.
          WRITE: / sy-index, num.

         ENDDO.
WHEN 6.
    DO 100 TIMES.

           num = sy-index ** 3.
          WRITE: / sy-index, num.

         ENDDO.
ENDCASE.
ENDIF.

プログラムを起動すると、2 つの行の選択が可能な一覧が表示されます。

上の行を選択すると、平方数の一覧が表示されます。基本一覧で下の行を選択すると、立方数の一覧が表示されます。

選択した行のコンテンツが、詳細一覧のヘッダになります。IF 命令では、SY-LISEL の最初の 4 文字が使用され、有効な行だけが選択されるように設定が行われます。AT LINE-SELECTION の後に処理ブロックの論理条件があるため、詳細一覧の行を選択した場合、情報はそれ以上表示されません。

 

 

 

コンテンツフレーム終了