!--a11y-->

項目の値が選択テーブルの条件に合致しているかどうかをチェックするには、次のような特殊な論理式を使用します。
... <f> IN <seltab> ....
項目 <f> の内容が 選択テーブル<seltab> に格納されている条件を満たしていれば、論理式は真になります。<f> には、任意の基本項目を指定することができます。
項目 <f> が、SELECT-OPTIONS で選択テーブル<seltab> を宣言した項目と同じ場合は、次のように論理式の省略形を使用することができます。
... <seltab> ....
この省略型を RANGES 命令で定義した選択テーブルに対して使用することはできません。

REPORT DEMO.
DATA WA_CARRID TYPE SPFLI-CARRID.
SELECT-OPTIONS AIRLINE FOR WA_CARRID.
WRITE: 'Inside', 'Outside'.
SELECT CARRID FROM SPFLI INTO
WA_CARRID.
IF
WA_CARRID IN AIRLINE.
WRITE: /
WA_CARRID UNDER 'Inside'.
ELSE.
WRITE: /
WA_CARRID UNDER Outside'.
ENDIF.
ENDSELECT.
選択テーブルが次のように入力されているとします。
|
SIGN |
OPTION |
LOW |
HIGH |
|
I |
BT |
DL |
UA |
|
E |
EQ |
LH |
|
この場合、次のように一覧が表示されます。
SELECT ループで、データベーステーブル SPFLI からすべての行が読み込まれます。IF 命令によって、論理式の結果に応じてプログラムフローが 2 つの命令ブロックに分岐します。このプログラムでは、短縮形の IF AIRLINE も使えます。

REPORT DEMO.
DATA WA_SPFLI TYPE SPFLI.
SELECT-OPTIONS: S_CARRID
FOR WA_SPFLI-CARRID,
S_CITYFR
FOR WA_SPFLI-CITYFROM,
S_CITYTO
FOR WA_SPFLI-CITYTO,
S_CONNID
FOR WA_SPFLI-CONNID.
SELECT * FROM SPFLI INTO
WA_SPFLI.
CHECK:
S_CARRID,
S_CITYFR,
S_CITYTO,
S_CONNID.
WRITE: /
WA_SPFLI-CARRID, WA_SPFLI-CONNID,
WA_SPFLI-CITYFROM, WA_SPFLI-CITYTO.
ENDSELECT.
プログラムが開始すると、選択画面が表示されます。その画面でユーザが次のように入力したとします。
次のように一覧が出力されます。
SELECT ループで、データベーステーブル SPFLI からすべての行が読み込まれます。読み込まれた行のうち、選択テーブルの中の条件を満たす行だけが出力画面に書き込まれます。CHECK 命令の後にループパスから抜け出します。CHECK 命令では、論理式の省略形を使用しています。省略しない形式は次のとおりです。
CHECK: WA_SPFLI-CARRID IN
S_CARRID,
WA_SPFLI-CITYFR IN S_CITYFR,
WA_SPFLI-CITYTO IN S_CITYTO,
SPFLI-CONNID IN S_CONNID.