コンテンツフレーム起動

従属画面としての選択画面 文書を SAP ライブラリストラクチャに組み込む

スクリーンペインタで画面を従属画面として定義するのと同様に、次のように ABAP プログラムで選択画面を従属画面として登録することができます。

SELECTION-SCREEN BEGIN OF SCREEN <scrn> AS SUBSCREEN
                                      [NO INTERVALS]
                                      [NESTING LEVEL <n>].

  ...
SELECTION-SCREEN END OF SCREEN <scrn>.

この方法で定義できる選択画面は次のとおりです。

        画面上の従属画面

        画面上のタブストリップコントロール

        選択画面上のタブストリップコントロール

これらの選択画面を CALL SELECTION-SCREEN で呼び出すことはできません

NO INTERVALS オプションを指定すると、従属画面が小さくなり、すべての選択基準がそれぞれの入力項目とともに表示されます。

NESTING LEVEL オプションも従属画面のサイズを縮小します。NESTING LEVEL を指定すると、選択画面のタブストリップコントロールで従属画面を使用し、そのタブストリップにすでにフレームがある場合に、スクロールバーを非表示にすることができます。タブストリップコントロールの周りにフレームがない場合は、NESTING LEVEL 0 と指定します。タブストリップコントロールの周りのフレームが増えるごとに、NESTING LEVEL 1 ずつ増やしてください。

選択画面を画面上の従属画面として表示したり、画面上のタブストリップコントロール内に表示すると、CALL SUBSCREEN 命令が Dynpro 制御ロジックの PBO イベントと PAI イベントの両方で実行されるので注意してください。従属画面として表示する選択画面に対して PAI モジュールをプログラムすることはできませんが、CALL SUBSCREEN 命令によって、入力データを ABAP プログラムの PAI イベントに確実に渡すことができます。

一般の選択画面と同様に、通常のユーザアクションによって通常の選択画面処理がトリガされます。これにより、ユーザの入力をチェックしたり、機能コードを処理したりすることができます。

例

画面上の従属画面として選択画面を使用

REPORT demo_sel_screen_as_subscreen.

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
PARAMETERS: p1(10) TYPE c,
            p2(10) TYPE c,
            p3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN END OF SCREEN 1100.

SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-020.
PARAMETERS: q1(10) TYPE c OBLIGATORY,
            q2(10) TYPE c OBLIGATORY,
            q3(10) TYPE c OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 1200.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA: number(4) TYPE n VALUE '1100'.

START-OF-SELECTION.
   CALL SCREEN 100.

MODULE status_0100 OUTPUT.
   SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE cancel INPUT.
   LEAVE PROGRAM.
ENDMODULE.

MODULE user_command_0100 INPUT.
   save_ok = ok_code.
   CLEAR ok_code.
   CASE save_ok.
     WHEN 'BUTTON1'.
       number = 1100.
    WHEN 'BUTTON2'.

       number = 1200.
  ENDCASE.

ENDMODULE.

AT SELECTION-SCREEN.
   MESSAGE s888(sabapdocu) WITH text-030 sy-dynnr.

この例では、2 つの選択画面 1100 1200 を従属画面として定義しています。 

次の画面 ( 静的に定義) は画面 100 自体です。次のようにレイアウトされています。

このグラフィックは添付のテキストに説明されています

この画面は、従属画面領域 AREA 2 つの押ボタンで構成されています。押ボタンの機能コードはそれぞれ BUTTON1BUTTON2 です。

画面 100 Dynpro 制御ロジックは次のとおりです。

PROCESS BEFORE OUTPUT.
   MODULE status_0100.
  CALL SUBSCREEN area INCLUDING sy-repid number.

PROCESS AFTER INPUT.
   MODULE cancel AT EXIT-COMMAND.
   CALL SUBSCREEN area.
   MODULE user_command_0100.

このプログラムを実行すると画面が表示され、その上に選択画面 1100 が従属画面として表示されています。従属画面領域にはどちらの選択画面も表示でき、その切り替えには押ボタンを使います。選択画面 1200 から 1100 に切り替える前に、必須項目にデータを入力する必要があります。入力したデータは、PAI イベントでプログラムのパラメータに渡されます。

例

画面上のタブストリップコントロール内の従属画面として選択画面を使用

REPORT demo_sel_screen_in_tabstrip.

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN
                                      NO INTERVALS.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
PARAMETERS: p1(10) TYPE c,
            p2(10) TYPE c,
            p3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN END OF SCREEN 1100.

SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN
                                      NO INTERVALS.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-020.
PARAMETERS: q1(10) TYPE c OBLIGATORY,
            q2(10) TYPE c OBLIGATORY,
            q3(10) TYPE c OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 1200.

CONTROLS mytabstrip TYPE TABSTRIP.

DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

DATA: number(4) TYPE n VALUE '1100'.

START-OF-SELECTION.
   mytabstrip-activetab = 'BUTTON1'.
   CALL SCREEN 100.

MODULE status_0100 OUTPUT.
   SET PF-STATUS 'SCREEN_100'.
ENDMODULE.

MODULE cancel INPUT.
   LEAVE PROGRAM.
ENDMODULE.

MODULE user_command_0100 INPUT.
   save_ok = ok_code.
   CLEAR ok_code.
   CASE save_ok.
     WHEN 'BUTTON1'.
       mytabstrip-activetab = save_ok.
       number = 1100.
    WHEN 'BUTTON2'.

       mytabstrip-activetab = save_ok.
       number = 1200.
  ENDCASE.

ENDMODULE.

AT SELECTION-SCREEN.
   MESSAGE s888(sabapdocu) WITH text-030 sy-dynnr.

この例では、2 つの選択画面 1100 1200 を従属画面として定義しています。 

次の画面 ( 静的に定義) は画面 100 自体です。次のようにレイアウトされています。

このグラフィックは添付のテキストに説明されています

この画面は、3 つのタブタイトル BUTTON1BUTTON2BUTTON3 を持つMYTABSTRIP という名前のタブストリップ領域 1 つからなります。それぞれの機能コードも同じ名前で、特殊機能タイプはありません。すべてのタブタイトルが 1 つの従属画面領域 AREA に割り当てられています。

画面 100 Dynpro 制御ロジックは次のとおりです。

PROCESS BEFORE OUTPUT.
   MODULE status_0100.
  CALL SUBSCREEN area INCLUDING sy-repid number.

PROCESS AFTER INPUT.
   MODULE cancel AT EXIT-COMMAND.
   CALL SUBSCREEN area.
   MODULE user_command_0100.

この例は、前の例とほぼ同じようにプログラミングされており、同様に動作します。唯一の違いは、押ボタンがタブタイトルに置き換えられた点と、MYTABSTRIP コントロールが宣言された点です。タブページ間の切り替えが ABAP プログラム内にプログラミングされています。ユーザがタブタイトルを選択するたびに、OK_CODE 項目の機能コードが MYTABSTRIP 構造の ACTIVETAB 要素に割り当てられます。同時に、タブストリップコントロールの従属画面領域 AREA に表示される従属画面の画面番号が変数 NUMBER に代入されます。

 

 

 

コンテンツフレーム終了