SAPのABAPレポートには選択画面という仕組みが標準で提供されています。
アドオンDynpro画面では、Dynproをレイアウトエディタから視覚的にデザイン可能ですが、
標準で提供されているABAPレポートの選択画面は、上記のように視覚的にデザインはできず、
ABAPプログラム内のグローバル領域において標準で用意されている要素をコードで定義することで選択画面を生成できます。
配置イメージはREPORT直下というよりかは変数等宣言よりも後且つイベントブロックよりも前に配置することが多いです。
※選択画面要素を組み合わせた例はこちらのメモをご参照ください。
■選択画面要素
選択条件
選択条件は選択画面に表示するユーザ入力用のフィールドになります。
ユーザはこの選択条件に値を入力し、実行することで入力した値に基づいたプログラム実行結果を得られます。
大きく分けて単一選択と複数選択の2つがあり、それぞれ定義方法が違います。
PARAMETERS
PARAMETERSは単一選択ができる選択条件を定義できます。
後述のSELECT-OPTIONSのように複数選択や範囲選択、排他や大小の指定はできません。
PARAMETERS:
p_carrid TYPE sflight-carrid.

SELECT-OPTIONS
SELECT-OPTIONSは複数選択ができる選択条件を定義できます。
単純に複数の値を選択できるだけでなく、最大値最小値での値範囲指定や指定した値を基準に以上以下を指定したり、排他包括を指定もできます。
本命令で定義された選択条件はプログラム内でレンジテーブルとして使用できます。
※[選択条件ID] FOR [変数]で定義する必要があるため、TABLESやDATAなどで変数を事前に宣言しておく必要があります。
TABLES:
sflight.
SELECT-OPTIONS:
s_carrid FOR sflight-carrid.

選択条件のオプション
選択条件にオプションを使用することで選択条件をカスタムできます。
使用できるオプションは多岐に渡るため、幾つかご紹介します。
OBLIGATORY
本オプションを使用することで選択条件を入力必須フィールドにすることが可能です。
PARAMETERS、SELECT-OPTIONSのどちらでも使用可能です。
PARAMETERS:
p_carrid TYPE sflight-carrid OBLIGATORY,
p_seatmx TYPE sflight-seatsmax,

DEFAULT
本オプションを使用すると選択条件に初期値を与えることができます。
PARAMETERS、SELECT-OPTIONSのどちらでも使用可能です。
※変数等宣言時にも本オプションを使用できます。
PARAMETERS:
p_carrid TYPE sflight-carrid DEFAULT 'AA',
p_seatmx TYPE sflight-seatsmax,

LOWER CASE
本オプションを使用すると選択条件の入力値について、小文字の入力が許可されます。
PARAMETERS、SELECT-OPTIONSのどちらでも使用可能です。
※使用しなければ小文字を入力しても大文字に自動変換されてしまいます。
特に、ファイルパスなどの指定を実現したい場合はLOWER CASEをご使用ください。
PARAMETERS:
p_carrid TYPE sflight-carrid LOWER CASE,
p_seatmx TYPE sflight-seatsmax,

VISIBLE LENGTH
選択条件の入力フィールドは指定した型の長さで表示長が自動決定されますが、
本オプションを使用すると選択条件の入力値について表示長を短縮できます。
なお、入力できる長さは変わりません。
PARAMETERS、SELECT-OPTIONSのどちらでも使用可能です。
※本オプションで指定した長さよりも、指定の型の長さが長い場合は指定型の長さが表示長になります。
PARAMETERS:
p_carrid TYPE sflight-carrid VISIBLE LENGTH 1,
p_seatmx TYPE sflight-seatsmax,

RADIOBUTTON
本オプションを使用することで、選択条件をラジオボタンとして出力できます。
指定したグループ内のラジオボタンのいずれか一つのみをONにすることができます。
※もともとONになっていたものはOFFになります。
PARAMETERSのみ使用可能です。
USER-COMMANDを指定することで、AT SELECTION-SCREEN OUTPUTイベントブロックなどをトリガできます。
PARAMETERS:
r_flag1 TYPE flag RADIOBUTTON GROUP r1 USER-COMMAND r1,
r_flag2 TYPE flag RADIOBUTTON GROUP r1,
r_flag3 TYPE flag RADIOBUTTON GROUP r1,
r_flag4 TYPE flag RADIOBUTTON GROUP r1.

AS CHECK BOX
本オプションを使用することで、選択条件をチェックボックスの外見で出力することができます。
ON=X/OFF=ブランクのため、FLAG型やC(1)型などの一文字入る型を指定する必要があります。
※型指定を省略してPARAMETERS [変数ID] AS CHECKBOXでも定義できます。
PARAMETERSのみ使用可能です。
PARAMETERS:
p_carrid TYPE sflight-carrid,
p_cb TYPE flag AS CHECKBOX.

AS LISTBOX
本オプションを使用するとリストボックスの選択条件が出力できます。
使用する際はVISIBLE LENGTHオプションと併用が必要になります。
PARAMETERSのみ使用可能です。
PARAMETERS:
p_carrid TYPE sflight-carrid VISIBLE LENGTH 1 AS LISTBOX,
p_cb TYPE flag AS CHECKBOX.

NO-DISPLAY
本オプションを使用すると選択条件を非表示にできます。
画面に出力されないですが非表示項目として存在するので、バリアントにて非表示にした選択条件を表示する場合と同じく省略条件を表示ボタンを押せば表示できます。
PARAMETERS、SELECT-OPTIONSのどちらでも使用可能です。
PARAMETERS:
p_carrid TYPE sflight-carrid NO-DISPLAY,
p_cb TYPE flag AS CHECKBOX.

NO-EXTENSION
本オプションを使用すると選択条件から拡張機能を消去できます。
※範囲指定機能は使用可能です。
SELECT-OPTIONSのみ使用可能です。
SELECT-OPTIONS:
s_conid FOR sflight-connid,
s_fldat FOR sflight-fldate NO-EXTENSION.

NO INTERVAL
本オプションを使用すると選択条件から範囲選択機能を消去できます。
※拡張機能は使用可能です。
SELECT-OPTIONSのみ使用可能です。
SELECT-OPTIONS:
s_conid FOR sflight-connid,
s_fldat FOR sflight-fldate NO INTERVAL.

コメント/改行/下線
以下で改行やコメント(テキストラベル)/下線を出力できます。
SELECTION-SCREEN COMMENT /10(15) TEXT-T03.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE.

ブロック
ブロックは選択条件をまとめて表示したい時など画面を整理する場合に使用します。
WITH FRAME TITLEでテキストエレメントを指定するとブロックのタイトルを表示できます。
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE TEXT-T01.
PARAMETERS:
p_carrid TYPE sflight-carrid,
p_seatmx TYPE sflight-seatsmax,
SELECTION-SCREEN END OF BLOCK b01.

画面
標準で提供されている選択画面の仕組みは通常の画面がDynpro番号1000番が割り当てられて生成されており、ParametersやSelectOptions、ブロックを指定すると自動でDynpro番号1000番の画面として生成されます。
しかし、プッシュボタンを押してポップアップの選択画面を表示させたい時など、別の画面定義が必要な際は、従属画面やウィンドウ画面として番号を指定して定義する必要があります。
従属画面
従属画面はタブ切り替え画面を定義する場合など、メイン画面内に埋め込まれる別画面として定義できます。(例:タブで画面が切り替えられる画面など)
定義するだけではどこにも出力されず、AT SELECTION SCREENイベントブロックなどで呼び出す(またはタブ切り替え機能で呼び出す)ことで、出力することができます。
※呼び出し例はこちら
*従属画面定義
"0101画面
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
PARAMETERS:
r_flag1 TYPE flag RADIOBUTTON GROUP r1,
r_flag2 TYPE flag RADIOBUTTON GROUP r1,
r_flag3 TYPE flag RADIOBUTTON GROUP r1,
r_flag4 TYPE flag RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF SCREEN 101.
"0102画面
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
PARAMETERS:
p_carrid TYPE sflight-carrid,
p_seatmx TYPE sflight-seatsmax.
SELECTION-SCREEN END OF SCREEN 102.
ウィンドウ画面
ウィンドウ画面はプッシュボタン押下時などのイベントで呼び出すことのできる画面です。
呼び出すと従属画面とは違い、メイン画面内に埋め込まれる画面ではなく別画面のポップアップとして出力されます。
従属画面と同じく定義するだけでは出力されずAT SELECTION SCREENイベントブロックなどで呼び出すことで出力できます。
※呼び出し例はこちら
*ウィンドウ画面定義
"0101画面
SELECTION-SCREEN BEGIN OF SCREEN 101 TITLE TEXT-T01 AS WINDOW.
PARAMETERS:
r_flag1 TYPE flag RADIOBUTTON GROUP r1,
r_flag2 TYPE flag RADIOBUTTON GROUP r1,
r_flag3 TYPE flag RADIOBUTTON GROUP r1,
r_flag4 TYPE flag RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF SCREEN 101.
"0102画面
SELECTION-SCREEN BEGIN OF SCREEN 102 TITLE TEXT-T02 AS WINDOW.
PARAMETERS:
p_carrid TYPE sflight-carrid,
p_seatmx TYPE sflight-seatsmax.
SELECTION-SCREEN END OF SCREEN 102.


