ABAP/SELECT-OPTIONS
画面の項目を定義する命令の一つ。
概要 †
用法 †
宣言すると、レンジテーブル型の内部テーブルとなる。データブラウザ(SE16)やその他標準レポート等と一緒のアレ。
PARAMETERSと違い、複数指定、除外指定、ワイルドカード(要はアスタ検索)などが利用可能という性質を持つ。
テーブルの型や取り得る値などについては、レンジテーブルを参照のこと。
サンプル †
基本形 †
SELECT-OPTIONS : S_KUNNR FOR WA_KUNNR.
これが基本の「き」。
NO-EXTENSION †
SELECT-OPTIONS : S_KUNNR FOR WA_KUNNR NO-EXTENSION.
選択画面上に複数選択用の押ボタンを表示したくない場合に使用し、選択画面で複数選択が出来なくなるため、値の入力が単一指定か範囲指定のみとなる。
OBLIGATORY †
SELECT-OPTIONS : S_KUNNR FOR WA_KUNNR OBLIGATORY.
OBLIGATORYを指定した場合は、LOW(左側)が必須となるため、HIGHだけ指定すればokというような「何らかの指定があればよい」という場合には使用できない。
その他 †
TABLESとの関わり †
この命令でFORの後に指定する参照型で使用するためにはTABLES命令が必要と認識している人もいるが、大間違い。
TABLESはSAP非推奨命令であるし、DATAによって宣言したものを参照しても定義はできる。
単一、範囲、除外、範囲除外 †
命令の複雑化やパフォーマンス悪化の原因となるのが、これらのバリエーション。
「除外指定をできなくしたい」といった場合には、SELECT_OPTION_RESTRICTIONっぽい名前の汎用モジュールがあるので、そちらが使える。
必須チェックについて †
パフォーマンス的な理由なども含めて、「何らかの値を指定させたい」というチェックを入れるにあたり、
IF ( S_BELNR[] IS NOT INITIAL ).
単に上記のような書き方をしてしまうと、「除外指定がされていたらok」という意図に反する動きになってしまうこともあるので注意。
コメントはありません。 Comments/ABAP/SELECT-OPTIONS?