!--a11y-->

通常の画面の場合と同様に、一覧のダイアログステータスを使用するときに、標準コンテキストメニューが作成されます。この標準コンテキストメニューを呼び出すには、右マウスボタン ( Shift + F10) を使用します。機能キーに割り当てられているすべての機能が表示されます。
Dynpro エレメントの場合と同様に、一覧行にコンテキストメニューを定義することができます。これを行うには、一覧のダイアログステータスで特別な機能コードを機能キー Shift+F10 に割り当てる必要があります。一覧のコンテキストメニューを定義するには、まず一覧のダイアログステータスを定義し、SET PF-STATUS を使用してこれを設定しておく必要があります。
通常は一覧ステータステンプレートを使用して作成するこのダイアログステータスでは、機能キー設定属性で コンテキストメニューのある一覧オプションが選択されなければなりません。これを行うには、メニューペインタの機能キー設定にカーソルを置き、 属性、またはジャンプ → 属性 → 機能キー設定 を選択します。機能コード %CTX が機能キー Shift+F10 に割り当てられます。一覧のコンテキストメニューの導入であるため、メニューペインタの任意の機能に Shift+F10 を自由に割り当てることはできなくなっています。機能コードが Shift+F10 に割り当てられている既存のダイアログステータスでは、これが Shift+Ctrl+0 に再割り当てされています。ダイアログステータスに影響が及ぶ前に、機能コード %CTX をマニュアルで有効化する必要があります。
画面の場合と同じように、一覧のコンテキストメニューはクラス CL_CTMENU のオブジェクトとして ABAP プログラムで動的に生成されます。一覧のコンテキストメニューの場合、ABAP プログラムで以下のようにコールバックルーチンのプログラムを作成する必要があります。
FORM on_ctmenu_request USING <l_menu> TYPE
REF TO cl_ctmenu.
...
ENDFORM.
このサブルーチンでは、コンテキストメニューセクションに説明されているように、オブジェクト参照<l_menu> を使用して、コンテキストメニューを定義することができます。特定のコンテキストメニューを定義するために、GET CURSOR を使用して一覧のカーソル位置を取得することができます。場合によっては、対応するシステム項目(SY-LISTI など) から現在の一覧レベルを検索する必要が生じることがあります。
一覧行を右クリックする ( または Shift+F10 を選択する) と、コールバックルーチンが実行され、これに定義されているコンテキストメニューが表示されます。ユーザがメニューアイテムを選択すると、このアイテムに割り当てられている機能コードに応じて処理が実行されます。機能が実行時環境で実行されるか、機能によって該当するイベントがトリガされます ( この場合、機能コードがシステム項目 SY-UCOMM に置かれます) 。
一覧行の外を右クリックすると、標準コンテキストメニューが表示されます。

REPORT demo_list_context_menu .
DATA:
wa_spfli TYPE spfli,
wa_sflight TYPE sflight.
START-OF-SELECTION.
SET PF-STATUS 'BASIC'.
SELECT * FROM spfli INTO wa_spfli.
WRITE: / wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto.
HIDE: wa_spfli-carrid, wa_spfli-connid.
ENDSELECT.
CLEAR wa_spfli.
AT
USER-COMMAND.
CASE sy-ucomm.
WHEN 'DETAIL'.
CHECK NOT wa_spfli IS INITIAL.
WRITE sy-lisel COLOR COL_HEADING.
SELECT * FROM sflight INTO wa_sflight
WHERE
carrid = wa_spfli-carrid
AND
connid = wa_spfli-connid.
WRITE / wa_sflight-fldate.
ENDSELECT.
ENDCASE.
FORM on_ctmenu_request
USING l_menu TYPE REF TO cl_ctmenu.
DATA lin TYPE i.
IF sy-listi = 0.
GET CURSOR LINE lin.
IF lin > 2.
CALL METHOD l_menu->add_function
EXPORTING
fcode = 'DETAIL'
text =
text-001.
ENDIF.
CALL METHOD l_menu->add_function
EXPORTING
fcode = 'BACK'
text =
text-002.
ENDIF.
ENDFORM.
基本一覧のダイアログステータス BASIC では、%CTX が Shift+F10 に割り当てられます。コールバックルーチンで、コンテキストメニューが定義されます。定義内容は、カーソルの位置および現在表示されている一覧によって異なります。
ユーザが基本一覧の 2 行のデフォルトページヘッダを右クリックすると、1 行のコンテキストメニューが表示されます。前画面機能が実行時環境で実行されます。一覧行を右クリックすると、2 行のコンテキストメニューが表示されます。詳細機能はイベント AT USER-COMMAND をトリガします。