PR

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

ABAP

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

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

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

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

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

スポンサーリンク

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

まずは前提から。このページで解説するレンジテーブルとは、内部テーブルの一種です。

内部テーブルとは、変数や構造と同じようにプログラム実行時にのみ存在するテーブルのこと。DB(データベース)から取得したレコードを一時的に保持し、必要であれば保持したデータを編集したりする場合に利用されます。

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

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

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

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

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

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

内部テーブルの種類
  • 標準テーブル
  • ソートテーブル
  • ハッシュテーブル
  • レンジテーブル

このページで解説するレンジテーブル以外の内部テーブル「標準テーブル」「ソートテーブル」「ハッシュテーブル」については、以下のページで詳しく解説しております。この機会に合わせて学習しておきましょう。

レンジテーブルだけ、なぜ別に解説ページを設けているかと言うと、他の3つの内部テーブルと大きく特徴が異なるためです。その分、ABAP初心者はレンジテーブルの理解で躓くことが多いのです。

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

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

「レンジテーブル」はその名の通り、値の”範囲”を持たせることができる内部テーブルの一種です。”Range” は日本語で「範囲」という意味で、そのためABAPerによっては「範囲テーブル」と呼ぶ場合もあります。

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

一体どういうことか。

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

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

blank
こんな感じ

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

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

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

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

これが「レンジテーブル」です。「レンジテーブル」を利用すれば30行のデータをたった1行で表すことができるのです。SIGNとかOPTIONとかあらかじめ決められた項目を理解できれば、これ以上難しい説明は不要です。

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

構文ルール:TYPE RANGE OF~

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

DATA LV_DENPYO TYPE RANGE OF BKPF-BELNR.

便宜的に例で取り上げた「成績表テーブル」を例にコーディングすると以下のようになります。

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

このようにコーディングすることで、SIGNやOPTIONなどの項目を持つレンジテーブルが宣言されます。コーディング自体は簡単ですね。

ここからは、レンジテーブルの各項目の説明です。(ここからが一番重要かも?)

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

blank

レンジテーブルは、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」、つまりどこからどこまで、の「どこから(FROM)」の値を入力します。

HIGH

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

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

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

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

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました