SAP Knowledge Wiki
ABAP/SELECT-OPTIONS
の編集
Top
/
ABAP
/
SELECT-OPTIONS
-- 雛形とするページ --
(no template pages)
画面の項目を定義する命令の一つ。 * 概要 [#j4d77dd6] ** 用法 [#m1e61e8f] 宣言すると、[[レンジテーブル>ABAP/レンジテーブル]]型の[[内部テーブル>ABAP/内部テーブル]]となる。''[[データブラウザ>SAPの共通用語/データブラウザ]](SE16)やその他標準レポート等と一緒のアレ。'' [[PARAMETERS>ABAP/PARAMETERS]]と違い、複数指定、除外指定、ワイルドカード(要はアスタ検索)などが利用可能という性質を持つ。 テーブルの型や取り得る値などについては、[[レンジテーブル>ABAP/レンジテーブル]]を参照のこと。 ** サンプル [#p8e30ede] *** 基本形 [#jca84686] SELECT-OPTIONS : S_KUNNR FOR WA_KUNNR. これが基本の「き」。 *** 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っぽい名前の[[汎用モジュール>SAPのオブジェクト/汎用モジュール]]があるので、そちらが使える。 ** 必須チェックについて [#s061697a] パフォーマンス的な理由なども含めて、「何らかの値を指定させたい」というチェックを入れるにあたり、 IF ( S_BELNR[] IS NOT INITIAL ). 単に上記のような書き方をしてしまうと、「除外指定がされていたらok」という意図に反する動きになってしまうこともあるので注意。 ~ ~ CENTER:【スポンサードリンク】 #htmlinsert(amazon_book_sap_system_implement) ~ ~ ---- #pcomment(reply)
タイムスタンプを変更しない
画面の項目を定義する命令の一つ。 * 概要 [#j4d77dd6] ** 用法 [#m1e61e8f] 宣言すると、[[レンジテーブル>ABAP/レンジテーブル]]型の[[内部テーブル>ABAP/内部テーブル]]となる。''[[データブラウザ>SAPの共通用語/データブラウザ]](SE16)やその他標準レポート等と一緒のアレ。'' [[PARAMETERS>ABAP/PARAMETERS]]と違い、複数指定、除外指定、ワイルドカード(要はアスタ検索)などが利用可能という性質を持つ。 テーブルの型や取り得る値などについては、[[レンジテーブル>ABAP/レンジテーブル]]を参照のこと。 ** サンプル [#p8e30ede] *** 基本形 [#jca84686] SELECT-OPTIONS : S_KUNNR FOR WA_KUNNR. これが基本の「き」。 *** 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っぽい名前の[[汎用モジュール>SAPのオブジェクト/汎用モジュール]]があるので、そちらが使える。 ** 必須チェックについて [#s061697a] パフォーマンス的な理由なども含めて、「何らかの値を指定させたい」というチェックを入れるにあたり、 IF ( S_BELNR[] IS NOT INITIAL ). 単に上記のような書き方をしてしまうと、「除外指定がされていたらok」という意図に反する動きになってしまうこともあるので注意。 ~ ~ CENTER:【スポンサードリンク】 #htmlinsert(amazon_book_sap_system_implement) ~ ~ ---- #pcomment(reply)
テキスト整形のルールを表示する