コンテンツフレーム起動

選択テーブル 文書を SAP ライブラリストラクチャに組み込む

次の文を使用します。

SELECT-OPTIONS <seltab> for <f>.

これにより、データベーステーブルの <f> 列、またはプログラムの内部<f> 項目にリンクされた選択テーブルを、プログラム内で宣言できます。選択テーブルは、標準テーブル型の内部テーブルオブジェクトであり、標準のキーとヘッダ行を持ちます。選択テーブルは、標準化したプロシージャによって、複合選択を保管するために使用します。これには、いくつかの使用方法があります。主な用途は、Open SQL 文で WHERE 追加オプションを使用して、選択基準をデータベース選択に直接変換することです。

SELECT-OPTIONS の使用による選択テーブルの作成だけでなく、RANGES 文を使用すると、選択テーブルの構造を持つ内部テーブルを作成できます。これらのテーブルは、実際の選択テーブルを使用する場合と同じ方法で、特定の制限を設けて使用できます。

選択テーブルの構造

選択テーブルの行の型は、SIGNOPTIONLOW 、およびHIGH 4 つのコンポーネントから成る構造です。選択テーブルにおいて、値を持つ各行は、完全な選択基準に対する副条件を表します。以下は、各コンポーネントの説明です。

        SIGN

SIGN のデータ型は C 、長さは 1 です。SIGN の値は、各行に対し、行条件の結果を検索結果の全行に含めるか、または排除するかを定義します。有効値は I および E です。

- I “inclusive ( 包含)” を表します ( 包含基準 - 演算子を転換しない)

- E “exclusive ( 排他)” を表します ( 排他基準 - 演算子を転換する)

        OPTION

OPTION のデータ型は C 、長さは 2 です。OPTION は、選択演算子を表します。以下の演算子を利用できます。

- HIGH が空白の場合は、EQNEGTLELTCP 、および NP を使用できます。これらの演算子は、論理式に使用されるものと同じです。ただし、CP および NP 演算子は、通常の論理式で使用される完全な機能範囲を持ちません。これらは、入力項目にマスキングフラグ ('*' または '+') が使用された場合にのみ使用できます。選択画面にマスキングフラグが入力されると、CP 演算子が自動的に使用されます。エスケープ文字は # として定義されています。

- HIGH に値が設定されている場合は、BT (BeTween) および NB (Not Between) を使用できます。これらの演算子は、項目が範囲に属するかどうか をチェックするために使用するBETWEEN および NOT BETWEEN に対応します。マスキングフラグを使用することはできません。

        LOW

LOW のデータ型は、選択基準がリンクされているデータベーステーブルの列型と同じです。

- HIGH が空白の場合は、LOW の値は単一項目の比較を定義します。OPTION の演算子での比較によって、データベース選択の条件を指定します。

- HIGH に値が設定されている場合は、LOW および HIGH の値によって、範囲の上限および下限が決まります。この範囲は、OPTION の演算子との組合せによって、データベース選択の条件を指定します。

        HIGH

HIGH のデータ型は、選択基準がリンクされているデータベーステーブルの列型と同じです。HIGH の値は、範囲選択の上限を指定します。

選択テーブルに複数の行が含まれている場合は、完全な選択基準の作成において、以下の規則が適用されます。

...

       1.      SIGN 項目の値が I ( 包含) となる行で定義された結合セットを形成。

       2.      SIGN 項目の値が E ( 排他) となる行で定義された結合セットを除去。

       3.      選択テーブルに、SIGN 項目が E の行しか含まれない場合は、行に指定されたセット以外の全データが選択されます。

範囲テーブル

TYPES および DATA 文の以下のバリアントを使用すると、選択テーブルと同じ型の内部テーブルを作成できます。

TYPES|DATA <rangetab> TYPE RANGE OF <type>.

または

TYPES|DATA <rangetab> LIKE RANGE OF <obj>.

これにより、行型が以下の構造となる内部標準テーブルが定義されます。

        SIGN(1) TYPE C

        OPTION(2) TYPE C

        LOW TYPE <type> bzw.LIKE <obj>

        HIGH TYPE <type> bzw.LIKE <obj>

RANGES 文を使用しても、選択テーブルと同じ型の内部テーブルを作成できます。

RANGES <rangetab> FOR <f>.

この文は、単に次の文の簡略形です。

DATA: BEGIN OF <rangetab> OCCURS 0,
         sign(1) TYPE c,
         option(2) TYPE c,
         low  LIKE <f>,
         high LIKE <f>,
      END OF <rangetab>.

この文は、ヘッダを持つ内部テーブルを定義する以前の方法を示したもので、現在ではヘッダを使用すべきではありません。したがって、RANGES ではなく、TYPES および DATA 文の上記のバリアントを使用してください。  

この方法で定義するテーブルは、選択テーブルと同じ構造を持ちますが、その機能は異なります。このようなテーブルは、選択画面の一部ではありません。対応する入力項目は生成されず、次の文を使用して呼び出した<prog> プログラムにおいて、これらのテーブルをデータインタフェースとして使用することもできません。

SUBMIT <prog> WITH <rangetab> IN <table>.

しかし、上記の文を使用すると、呼出元プログラムで<table> テーブルを作成できます。こうしたテーブルの主要機能は、実行可能プログラムを呼び出したときに、選択画面を表示せずにデータを実際の選択テーブルに渡すことです。

上記のテーブルは、Open SQL 文の WHERE 句の実際の選択テーブルと同様であり、論理式で IN 演算子と組み合わせて使用できます。しかし、データベーステーブルにはリンクされません。このテーブルには、以下の特性があります。

        選択基準として論理データベースに渡されない

        論理式の選択テーブルの簡略形として使用することができない

        GET イベントで選択基準 として使用できない

例

廃止されたバージョン:

REPORT demo_sel_screen_tables_ranges.

RANGES s_carrid1 FOR spfli-carrid.

s_carrid1-sign   = 'I'.
s_carrid1-option = 'EQ'.
s_carrid1-low    = 'LH'.

APPEND s_carrid1.

SUBMIT demo_selection_screen_ldb_1 WITH carrid IN s_carrid1
       VIA SELECTION-SCREEN AND RETURN.

修正されたバージョン:

REPORT demo_sel_screen_tables_ranges.

DATA: s_carrid2 TYPE RANGE OF spfli-carrid,
      s_carrid2_wa LIKE LINE OF s_carrid2.

s_carrid2_wa-sign   = 'I'.
s_carrid2_wa-option = 'EQ'.
s_carrid2_wa-low    = 'AA'.

APPEND s_carrid2_wa TO s_carrid2.

SUBMIT demo_selection_screen_ldb_1 WITH carrid IN s_carrid2
       VIA SELECTION-SCREEN AND RETURN.

S_CARRID 選択テーブルは、データベーステーブル SPFLI CARRID 列への参照とともに作成されます。S_CARRID-LOW および S_CARRID-HIGH 項目は、CARRID と同じ型となります。S_CARRID 内部テーブルの作業領域には値が設定され、テーブルにアペンドされます。DEMO2 プログラムが呼び出されます。DEMO2 F1S 論理データベースにリンクされている場合は、DEMO2 の選択画面には、この論理データベースの CARRID 選択基準の項目が表示されます。これらの項目には、内部テーブルの内容が設定されます。

 

 

 

コンテンツフレーム終了