!--a11y-->

一覧の照会時にユーザがシステムと通信できるようにするためには、一覧でユーザアクションが ABAP プログラムにリンクされなければなりません。画面上のユーザアクションで説明されているように、機能コードをこれに使用します。機能コードは、一覧画面の GUI ステータスで管理されます。GUI ステータスは、ABAP ワークベンチのメニューペインタツールを使用して定義します。機能コードは、一覧固有のユーザアクションに割り当てられます。
これらの機能で最も重要な点は、一覧行をダブルクリックで選択することです。GUI ステータスの使用で説明されているように、ダブルクリック機能は常に F2 キーにリンクされます。機能コードが GUI ステータスで F2 キーに割り当てられていると、ダブルクリックによって F2 キーがトリガされます。
通常の画面の場合と同様に、SET PF-STATUS 命令を使用して、一覧の GUI ステータスを独自に定義して、一覧レベルに割り当てることができます。特定の GUI ステータスを設定しないと、実行可能プログラムの一覧画面のデフォルト一覧ステータスが採用されます。たとえば、他のプログラムでは、画面処理からの一覧呼出を行うときに、以下の命令を使用してこのステータスを明示的に設定する必要があります。
SET PF-STATUS space.
このデフォルトインタフェースには常に、標準一覧セクションで説明されている各機能が最小限含まれています。
このデフォルト一覧ステータスは、通常のダイアログステータスとは異なり、 ABAP プログラムの影響を受けます 。
イベントキーワード AT LINE-SELECTION または AT PF<nn> を使用してプログラムにイベントブロックを定義すると、追加機能を提供する補足機能が他の機能キーに 自動的に割り当てられます。
キ
AT PF<nn> (
無効)
事前定義されているシステム機能には使用されないキーボード
F<nn>
のすべての機能キーは、機能コードPF<nn>
に設定されます。ここでは <nn>
は 01
から 24
までの数値です。一覧処理中に、機能コードPF<nn>
はイベント AT
PF<nn>
にリンクされます。PF<nn>
を選択すると、常に AT
PF<nn>
がトリガされます。PF<nn>
にイベントブロックを使用することはできなくなります。
キ
AT
LINE-SELECTION
このイベントでは、F2
キー
(
ダブルクリック)
に機能コード PICK
および機能コード選択が割り当てられます。この機能は、常にアプリケーションツールバーにも表示されます。一覧処理中に、PICK
機能コードはイベント AT
LINE-SELECTION
に割り当てられます。PICK
は常に AT
LINE-SELECTION
をトリガします。
他のすべての機能コードは、実行環境によって遮断されるか、イベント AT USER-COMMAND をトリガします。AT USER-COMMAND をトリガする機能コードは、独自の GUI ステータスに定義されていなければなりません。これを行う最も簡単な方法は、標準一覧ステータスを使用して、独自の補足機能をこれに追加することです。
一覧のダイアログステータスを作成するには、
ABAP
ワークベンチ
の
メニューペインタを使用します。ステータスを登録したら、ただちに
補足 →
テンプレート調整
と選択して、テンプレートの一覧ステータスを選択します。このステータスには、一覧処理の標準機能コードがすでに含まれています。これらの標準機能コードは、メニュー、標準ツールバー、およびアプリケーションツールバーに以下のように提供されます。
|
コード |
メニュー |
標準ツールバー |
機能キー |
内容説明 |
|
%PC |
一覧 |
|
|
一覧をファイルに保存する |
|
%SL |
一覧 |
|
|
一覧を SAPoffice に保存する |
|
%ST |
一覧 |
|
|
一覧をレポートツリーに保存する |
|
PRI |
一覧 |
|
CTRL-P |
表示されている一覧を印刷する |
|
%EX |
一覧 |
|
Shift-F3 |
処理を終了する |
|
PICK |
編集 |
|
F2 |
イベント AT LINE-SELECTION |
|
RW |
編集 |
|
F12 、 ESC |
処理を中止する |
|
%SC |
編集 |
|
CTRL-F |
検索 |
|
%SC+ |
編集 |
|
CTRL-F |
次検索 |
|
BACK |
ジャンプ |
|
F3 |
1 レベル戻る |
|
P-- |
|
|
CTRL-PgUp |
最初のウィンドウページにスクロールする |
|
P- |
|
|
PgUp |
前のウィンドウページにスクロールする |
|
P+ |
|
|
PgDn |
次のウィンドウページにスクロールする |
|
P++ |
|
|
Ctrl-PgDn |
最後のウィンドウページにスクロールする |
|
%CTX |
|
|
Shift-F10 |
一覧のコンテキストメニュー |
また、以下のコードが事前定義されています。ただし、ステータス機能として設定されていません。これらのコードは、どの空ステータスエレメントにも自由に割り当てることができます。
|
コード |
内容説明 |
|
PF<nn> |
イベント AT PF<nn> |
|
PP<n> |
一覧ページの一番上 <n> にスクロールする |
|
PP-[<n>] |
一覧を 1 ページまたは <n> ページスクロールで戻る |
|
PP+[<n>] |
一覧を 1 ページまたは <n> ページスクロールで進む |
|
PS<n> |
列 <n> にスクロールする |
|
PS-- |
一覧の最初の列にスクロールする |
|
PS-[<n>] |
一覧を左に 1 列または <n> 列スクロールする |
|
PS+[<n>] |
一覧を右に 1 列または <n> 列スクロールする |
|
PS++ |
一覧の最後の列にスクロールする |
|
PZ<n> |
行 <n> にスクロールする |
|
PL-[<n>] |
ぺージの最初の行にスクロールするか <n> 行ずつスクロールで戻る |
|
PL+[<n>] |
ぺージの最後の行にスクロールするか <n> 行ずつスクロールする |
|
/.... |
他のシステムコマンド用 |
実行時環境では、PICK と PF<nn> を除き、上記のテーブルのすべての機能コードが検索されて実行されます。これらの機能コードはイベントをトリガしません。また、これらの機能コードを AT USER-COMMAND イベントに使用することはできません。
カーソルを一覧行に置くと、機能コード PICK によって、AT LINE-SELECTION イベントがトリガされます。機能コード PF<nn> は常に AT PF<nn> イベントをトリガします。このため、これらの機能コードは、AT USER-COMMAND イベントにも使用することができません。
AT USER-COMMAND をトリガするために、各自で任意の数の機能コードを定義することができます。上記のテーブルの機能コードが含まれていなければ、これらの機能コードが AT USER-COMMAND をトリガします。以下の特別な機能キーの割当に留意してください。
キ 機能キー F2:
ダブルクリックは、常に機能キー F2 を押すアクションと同等です。このため、F2 に割り当てる各機能コードは、ダブルクリックによって有効化されます。ダブルクリックによって AT LINE-SELECTION イベントがトリガされるのは、機能コード PICK が機能キー F2 に割り当てられている場合だけです。独自の機能コードを F2 に割り当てると、ダブルクリックによって AT USER-COMMAND イベントがトリガされます。事前定義された機能コードが F2 に割り当てられると、ダブルクリックによって、実行時環境の対応するアクションがトリガされます。
キ 機能キー SHIFT-F10:
SHIFT-F10 キーは、常に右クリックと同等です。一覧のコンテキストメニューを使用するときに、これに機能コード %CTX が割り当てられます。
他の要件に応じて、一覧固有のテンプレートを変更することができます。次の処理を行うことができます。
キ 機能コード PICK を独自の機能コードに置き換え、レポートで AT LINE-SELECTION イベントがトリガされるのを回避することができます。これにより、ユーザアクションに対するリアクションを個別の処理ブロック (AT USER-COMMAND) にプログラミングすることができます。
キ サポート対象としない機能を含む事前定義済の機能コードを削除します。たとえば、ユーザが一覧を印刷したり、プレゼンテーションサーバ上のファイルに一覧を保存できないようにすることができます。
キ 標準キー設定を修正します。たとえば、独自の機能コードを F3 に割り当て、一覧レベルを 1 つ戻る ( 前画面) 代わりに、各自の要件に応じて一覧をナビゲートすることができます。この処理は、同一の論理レベルに複数の一覧があるため、標準 F3 設定の場合のように表示された一覧を削除したくない場合など、重要になります。あるいは、一覧レベルを終了する前に警告を表示したい場合もあります。
一覧のダイアログステータスは、通常の画面の場合と同様に、以下の命令を使用して設定します。
SET PF-STATUS <stat> [EXCLUDING <f>|<itab>]
[OF PROGRAM <prog>]
[IMMEDIATELY].
この命令は、現在の出力一覧にステータス <stat> を設定します。ダイアログステータス <stat> が現在プログラムに定義されていなければなりません。この例外は、別のプログラム <prog> からステータスを設定するために OF PROGRAM オプションを使用した場合です。このステータスは、別のステータスを設定するまで、後続のすべての一覧レベルに対して有効です。SY-PFKEY システム項目には、常に現在一覧のステータスが含まれます。
SET PF-STATUS を使用すれば、異なる一覧レベルの異なるユーザインタフェースを表示して、個々の要件に応じてユーザに異なる機能を提供することができます。SET PF-STATUS SPACE を使用して、標準一覧ステータスを設定します。前述のように、これはプログラムのイベントブロックによって異なります。
EXCLUDING オプションでは、プログラム内におけるステータスの外観と利用可能な機能を変更することができます。これは、各一覧レベルの個々のユーザインタフェースが類似している場合などに役立ちます。個別のグローバルステータスを定義し、機能を無効化するだけで、EXCLUDING を使用する必要はありません。項目 <f> に保管されている機能コードを無効化するには、<f> を指定します。内部テーブル <itab> に保管されているすべての機能コードを無効化するには、<itab> を指定します。項目 <f> およびテーブル <itab> の行は、システム項目 SY-UCOMM を参照して定義する必要があります。
IMMEDIATELY オプションは、一覧処理専用です。これは、現在表示されている一覧 ( 索引 SY-LISTI) のステータスを変更するために、詳細一覧の作成時にイベントブロック内で使用します。このオプションを使用しない場合、現在表示されている二次一覧 (SY-LSIND) のステータスが処理ブロックの最後でのみ変更されます。
通常の画面と同様に、以下のように一覧の表題を設定することができます。
SET TITLEBAR <ttl> [WITH <g1> ...<g9>]
[OF PROGRAM <prog>].
一覧処理中に、この命令が出力一覧にユーザインタフェースの表題を設定します。SET TITLEBAR を使用して別の表題を指定するまで、すべての画面に対してこの表題が有効です。GUI 表題 <title> が現在 ABAP プログラムのコンポーネントでなければなりません。この例外は、別のプログラム <prog> の GUI ステータスを設定するために SET TITLEBAR 命令に OF PROGRAM オプションを使用する場合です。
SET TITLEBAR 命令の WITH オプションを使用して、実行時に表題のこれらのプレースホルダを対応する項目 <g 1> .... <g9> のコンテンツに置き換えることができます。また、引き続き '&' プレースホルダが対応する <g i> パラメータのコンテンツに置き換わります。アンパサンド文字 ‘&’ を表示するには、表題で ‘&&’ を反復します。

一覧のダイアログステータスの例:
REPORT demo_list_menu_painter.
START-OF-SELECTION.
SET PF-STATUS 'TEST'.
WRITE: 'Basic list, SY-LSIND =', sy-lsind.
AT LINE-SELECTION.
WRITE: 'LINE-SELECTION, SY-LSIND =', sy-lsind.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'TEST'.
WRITE: 'TEST, SY-LSIND =', sy-lsind.
ENDCASE.
このプログラムでは、メニューペインタに定義されるステータス TEST を使用します。
キ 機能キー F5 には機能コード TEST およびテキスト Test for demo があります。
キ 機能コード TEST は 一覧 メニューに入力されます。
キ 機能コード PICK と TEST は、ボタンに割り当てられます。
ユーザが F5 を押すか、一覧 → Test for demo を選択する、あるいはボタン Test for demo を押すと、AT USER-COMMAND イベントがトリガされます。ユーザが行を選択すると、AT LINE-SELECTION イベントがトリガされます。

現在一覧のダイアログステータスの設定例:
REPORT demo_list_set_pf_status_1.
DATA: fcode TYPE TABLE OF
sy-ucomm,
wa_fcode TYPE sy-ucomm.
START-OF-SELECTION.
wa_fcode = 'FC1 '.APPEND wa_fcode TO
fcode.
wa_fcode = 'FC2 '.APPEND wa_fcode TO
fcode.
wa_fcode = 'FC3 '.APPEND wa_fcode TO
fcode.
wa_fcode = 'FC4 '.APPEND wa_fcode TO
fcode.
wa_fcode = 'FC5 '.APPEND wa_fcode TO
fcode.
wa_fcode = 'PICK'.APPEND wa_fcode TO
fcode.
SET PF-STATUS 'TEST'.
WRITE: 'PF-Status:', sy-pfkey.
AT LINE-SELECTION.
IF sy-lsind = 20.
SET PF-STATUS 'TEST' EXCLUDING
fcode.
ENDIF.
WRITE: 'Line-Selection, SY-LSIND:', sy-lsind,
/
' SY-PFKEY:',
sy-pfkey.
AT USER-COMMAND.
IF sy-lsind = 20.
SET PF-STATUS 'TEST' EXCLUDING
fcode.
ENDIF.
WRITE: 'User-Command, SY-LSIND:', sy-lsind,
/
' SY-UCOMM:',
sy-ucomm,
/
' SY-PFKEY:',
sy-pfkey.
機能コード FC1 から FC5 までにステータス TEST が定義され、これらのコードがボタンに割り当てられていると仮定します。機能コード PICK は機能コード F2 に割り当てられます。
プログラムが開始すると、ユーザは行を選択するか FC1 から FC5 までの機能コードを 1 つ選択して、詳細一覧を作成することができます。レベル 20 までのすべての二次一覧の場合、ユーザインタフェース TEST は基本一覧と同じになります。
一覧レベル 20 で、EXCLUDING ITAB が詳細一覧を作成するすべての機能コードを無効化します。これにより、ユーザが詳細一覧番号 21 を作成しようとすることによって、プログラムの強制終了が発生しないようにすることができます。

現在一覧のダイアログステータスの設定例:
REPORT demo_list_set_pf_status_2.
START-OF-SELECTION.
WRITE: 'SY-LSIND:', sy-lsind.
AT LINE-SELECTION.
SET PF-STATUS 'TEST' IMMEDIATELY.
プログラムを実行した後で、出力画面に基本一覧および行選択のために事前定義された ( 機能コード PICK を使用) ユーザインタフェースが表示されます。
選択 を選択すると、ユーザインタフェースが変更されます。ただし、AT LINE-SELECTION 処理ブロックには出力命令が含まれないため、詳細一覧は作成されません。ステータス TEST が前出の例のように定義されます。

例: 詳細一覧の表題
REPORT demo_list_title .
START-OF-SELECTION.
WRITE 'Click me!'
HOTSPOT COLOR 5 INVERSE ON.
AT LINE-SELECTION.
SET TITLEBAR 'TIT' WITH sy-lsind.
WRITE 'Click again!'
HOTSPOT COLOR 5 INVERSE ON.
このプログラムでは、新規表題が各詳細一覧に設定されます。表題は、"Title for Detail List &1" として定義されます。