トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

ABAP/レンジテーブル のバックアップ(No.1)


例えばL_R_KUNNR TYPE RANGE OF KUNNRのように宣言して使用する内部テーブル。 ここでは「一般的な内部テーブル」との違いに着目して言及したい。

仕様

まず、このテーブルの仕様を解説する。

  • 型が規定されている SIGN、OPTION、LOW、HIGHという4つの項目が固定となる。
    • SIGN IncludeとExcludeの何れかを指定して使用する。 それぞれ包含か除外かを意味するが、通常はパフォーマンス上の問題からIを使用する。
    • OPTION EQ(等しい)、BT(範囲)、GT(以上)、LT(以下)などを指定する。 こちらも、パフォーマンス上の問題からEQとBTのみが使われることが多い。
    • LOWとHIGH 上記の例ではKUNNRなど、この項目が宣言した型の影響を受ける。 単一指定で比較する場合のEQなど通常はLOW項目、OPTIONでBTを使用する場合はHIGHも併用する。
  • SELECT文の検索条件にそのまま利用可能 上記の例では、WHERE句で「WHERE KUNNR IN L_R_KUNNR」のように、そのまま指定可能となる。 但し、ABAPのSELECT文はDBに渡された時に分解されるという動きとなる。 これは、内容がI BT 00001 99999つまり1から99999を抽出するとしたならば、1から99999までを個別のOR判定に分解するという動きとなる。 この時、分解されたSELECT命令が一定の長さ(3000行だっけか?)を超過するとショートダンプが起きるため、使用には注意したい。




コメントはありません。 Comments/ABAP/レンジテーブル

お名前: