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