ABAP プログラムの WHERE 条件 IN 演算子

SAP テーブル・クエリでは、SQL IN 演算子を使用して、WHERE 節にフィールド値のリストまたは範囲を指定できます。 これは、実行時に値を渡すためにジョブ・パラメーターと一緒に使用される場合に便利です。これは、ABAP ステートメント SELECT-OPTIONS を使用して内部で実装されます。

この条件を使用可能にするには、抽出オブジェクト SQL 条件ビルダーで、「単一値演算」から IN 演算子を選択し、「値」ドロップダウン・リストからジョブ・パラメーターを選択します。
注: IN 演算子のジョブ・パラメーターをサポートするのは抽出オブジェクト・ビルダーのみです。SQL 照会ビルダーではサポートしていません。

値のリストと範囲の形式

各値はセミコロン (;) で区切ります。値にセミコロンを含む場合は、値の中のセミコロンの前に、 スラッシュ (/) を置いてください。リスト内の値はセミコロン (;) を使用して区切ります。値の範囲を指定するには、高い値と低い値の間に二重コロンを使用します。

例えば、次のとおりです。

value1;value2;valu/;e3
100::200

リストまたは範囲の指定が長すぎるか、複雑すぎる場合、SAP システムを使用して、バリアントを作成し、そのできたバリアントを ABAP プログラムで使用するように指定します。

値リストをジョブ・パラメーターとして渡す場合、リストの終わりにセミコロン (;) を指定します。例えば、リストに値 PHILADELPHIA と DENVER が含まれている場合、以下のようにして値を渡します。

PHILADELPHIA;DENVER;

SQL 照会の IN 節でジョブ・パラメーターが使用されていて、実行時にジョブ・パラメーターに値が渡されなかった場合、その IN 節は無視されます。例えば、以下の SQL 照会では、WHERE 条件で、パラメーター化された IN 節がフィールド ORT01 に含まれている場合のみ、KNA1 表からデータが選択されます。

SELECT * FROM KNA1 WHERE ORT01 IN PARAM_1

PARAM_1 パラメーターの値が指定されていない場合は、IN 節は無視され、ABAP Extract ステージは、WHERE 節がない場合と同様にすべてのデータを表から抽出します。