コンテンツフレーム起動

一覧のコンテキストメニュー 文書を SAP ライブラリストラクチャに組み込む

通常の画面の場合と同様に、一覧のダイアログステータスを使用するときに、標準コンテキストメニューが作成されます。この標準コンテキストメニューを呼び出すには、右マウスボタン ( 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 をトリガします。 

 

 

コンテンツフレーム終了