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

ABAP

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

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

このページで学べる内容
  • 前提:内部テーブルとレンジテーブルについて
  • レンジテーブル(Range Table)とは何か?
  • レンジテーブルの項目構成
    • SIGN
    • OPTION
    • LOW
    • HIGH
  • レンジテーブルの定義方法(TYPE RANGE OF)

ABAPエンジニアを目指す方であれば、知らないと恥ずかしい基本中の基本知識です。是非最後までご覧ください。

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

スポンサーリンク
スポンサーリンク

前提:内部テーブルとは?

まずは前提から。内部テーブルとは、変数や構造と同じようにプログラム実行時にのみ存在するテーブルのことです。

DB(データベース)から取得したレコードを一時的に保持し、必要であれば保持したデータを編集したりする場合に利用されます。

変数/構造/内部テーブル

変数や、構造も内部テーブルと同様、プログラム実行時にのみ存在する一時的なメモリ領域です。

変数と構造と内部テーブルの違い

内部テーブルの基本理解と合わせて、変数や構造が一体何者なのか?という知識も合わせて習得しておくことがおすすめです。

レンジテーブルは内部テーブルの一種

内部テーブルはその用途や特徴に応じて以下の4種類に分類することができます。

このうち、レンジテーブルのみ他の3つの内部テーブルとは少し特徴が異なります。

では、レンジテーブルは一体どんな特徴を持つのか?詳しく見ていきましょう。

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

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

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

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

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

↓こんな感じ

レンジテーブルを用いない場合、このようにレコード数分と同じだけの行が必要になります。もちろん、上記のように普通の内部テーブルでも「出席番号を取得する」という目的は達成できますが、メモリ領域にそれだけのレコード数を保持しなければなりません。

※メモリを利用すればするほど、プログラムのパフォーマンスが悪化します。(実行速度が遅くなります。)

上記の例では、出席番号を例にしていますが、例えばこれが大学全体の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」、つまりどこからどこまで、の「どこまで」の値を入力します。

レンジテーブルは、これら4つの項目で成り立つ内部テーブルですが、パフォーマンスを改善するためにかなり役立つ便利な構造のため、非常に利用頻度が高いです。

この辺の知識もしっかり身に着けておけば、「ただ動く機能」ではなく「効率的に動く」機能を作ることができるようになるため、しっかりと理解しておきましょう。

ABAPを1から勉強したい方は

ABAPを1から学習したい方のために、ABAPの基本知識・基礎概念を1つのページにまとめました。

現在、完全無料で公開しておりますので、是非ご覧ください!

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