【ABAP】3分で学ぶレンジテーブル(Range Table)

ABAP

本ページでは、ABAPで用いる特殊なテーブル「レンジテーブル(Range Table)」について解説します。レンジテーブルはその名の通り「範囲を保持するテーブル」です。これを理解すると、パフォーマンスに優れたABAPプログラミングが可能になります。

初心者にとっては、難しく感じてしまう特殊なテーブルですが、イメージ図を見ながら考えれば実は難しくはありません。

このページで学べる内容

  • レンジテーブル(Range Table)とは何か?
  • ABAPにおけるレンジテーブルの定義方法(TYPE RANGE OF)
  • レンジテーブルの項目について

ABAPerとして、知っていると役に立つ内容ばかりですので是非最後までご覧ください。

「テーブル」とは?という疑問がある方は最初に以下のページからご覧ください。

それでは、早速解説を始めます。

レンジテーブル(Range Table)とは?

「レンジテーブル」はその名の通り、値の”範囲”を持たせることができる内部テーブルの一種です。”Range”を日本語で「範囲」という意味です。

レンジテーブルは「範囲(ここからここまで)」という情報のみを保持しており、全てのレコードデータを保持しているわけではありません。あくまでも範囲しか持たないテーブルを「レンジテーブル」と呼びます。

文章で説明しただけではイマイチ理解できないかと思いますので、イメージ図を参考に説明していきます。以下の「成績表テーブル」を基に考えていきましょう。

このテーブルには出席番号/氏名/成績が保持されています。このテーブルを基に、「全員の出席番号だけ」を取得したいとします。

↓こんな感じ

レンジテーブルを用いない場合、このようにレコード数分と同じだけの行が必要になります。もちろん、上記のように普通の内部テーブルでも「出席番号を取得する」という目的は達成できますが、パフォーマンス的にはNGです。

※レコード数が多くなれば多くなるほど、プログラム実行時にメモリをたくさん消費します。メモリを利用すればするほど、プログラムのパフォーマンスが悪化します。

上記の例では、出席番号を例にしていますが、例えばこれが大学全体の1万人のうち、「2000~9999の出席番号がほしい」なんていう場合はなおさら、パフォーマンス悪化の原因になります。

そこで考え出されたのが「レンジテーブル」です。上記の例を「レンジテーブル」を用いて表現した結果はこちらになります。

これが「レンジテーブル」です。「レンジテーブル」を利用すれば30行のデータをたった1行で表すことができるのです。

ここからは、レンジテーブルのコーディング方法と各項目の意味について解説していきます。

構文ルール:TYPE RANGE OF~

DATA (レンジテーブル名)TYPE RANGE OF (テーブル名―項目名)

例)DATA LV_DENPYO TYPE RANGE OF BKPF-BELNR.


便宜的に例で取り上げた「成績表テーブル」を例にコーディングすると

DATA LV_PNUMBERTYPE RANGE OF 成績表テーブル-出席番号.

となります。

これで、成績表テーブルの出席番号の範囲を格納するレンジテーブルを作ることが可能です。

レンジテーブルの各項目説明

レンジテーブルは、4つの項目から成り立ちます。4つの項目、それぞれがどのような項目なのかをつかむことがレンジテーブルの理解のために必須です。1つずつ、丁寧に学習しておきましょう。

SIGN

I” or ”E” が入ります。

指定した値(LOWとHIGH)を含む場合は "I"、 指定した値を含まない場合は "E" が入ります。

  • Include(含む)の"I"
  • Exclude(含まない)の"E"

の意味になります。"I" とした場合、LOW:1とHIGH:10とすれば、1~10のレンジテーブルができますが、"E" とすれば、2~9のレンジテーブルが作成されます。

OPTION

ここでは"BT"を入力します。

BETWEENの略です。これで、LOW項目とHIGH項目の「間」にあることを指定します。

OPTIONには、BT以外も利用可能ですが、基本BT以外を利用している場面を見かけたことがないのでとりあえずはBTを覚えておけばOKです。

LOW

出席番号の例でいえば「1」、つまりどこからどこまで、の「どこから」の値を入力します。

HIGH

出席番号の例でいえば「30」、つまりどこからどこまで、の「どこまで」の値を入力します。

タイトルとURLをコピーしました