2020年02月10日
【ABAP】内部テーブルのテーブルデータ型とは?
内部テーブルと一口に言っても、ABAPを書いていくうちに「ソートテーブル」や「ハッシュテーブル」という言葉に出会うはずです。
なんとなく手探りで理解するのもいいのですが、人に説明する時のために体系だって覚えておきたいものです。
本ページでは、「これだけは押さえておきたい」3種類の内部テーブルについて解説します。
目次
1 内部テーブルにはいくつか種類がある
2 標準テーブル(STANDARD TABLE
2.1 構文ルール: ~STANDARD TABLE OF~
2.2 標準テーブルとは?
3 ソートテーブル(SORTED TABLE)
3.1 構文ルール: ~SORTED TABLE OF~
3.2 ソートテーブルとは?
4 ハッシュテーブル(HASHED TABLE)
4.1 構文ルール: ~HASHED TABLE OF~
4.2 特徴
1 内部テーブルにはいくつか種類がある
2 標準テーブル(STANDARD TABLE
2.1 構文ルール: ~STANDARD TABLE OF~
2.2 標準テーブルとは?
3 ソートテーブル(SORTED TABLE)
3.1 構文ルール: ~SORTED TABLE OF~
3.2 ソートテーブルとは?
4 ハッシュテーブル(HASHED TABLE)
4.1 構文ルール: ~HASHED TABLE OF~
4.2 特徴
1 内部テーブルにはいくつか種類がある
内部テーブルと一口に言っても、使い方や目的によっていくつかの種類を使い分ける必要があります。
また、それに応じてテーブル定義の構文が異なってきたり、使用できる命令も微妙に異なります。
以下では「これさえ覚えておけば何とかなる」3つの内部テーブルについて解説します。
2 標準テーブル(STANDARD TABLE)
2.1 構文ルール: ~STANDARD TABLE OF~
(内部テーブル名) TYPE STANDARD TABLE OF (参照構造).
基本となる「TYPE TABLE OF」に「STANDARD」の文言を入れて、標準テーブルであることを明示します。
2.2 標準テーブルとは?
このテーブルは最も標準的なテーブルです。
これが標準テーブルのイメージです。
標準テーブルで覚えておくべきなのは、行数が多くなれば多くなるほど、検索にかかる時間も多くなるということです。
この「検索にかかる時間」がこの後解説する他のテーブルとの比較点として重要になるので意識してみてください。
このテーブルを基本に種類の異なる別の内部テーブルを理解していくとよいでしょう。
3 ソートテーブル(SORTED TABLE)
3.1 構文ルール: ~SORTED TABLE OF~
(内部テーブル名) TYPE SORTED TABLE OF (参照構造).
3.2 ソートテーブルとは?
ソートテーブルとは、つまることころ並び替えされたテーブルです。
ソートテーブルでは、テーブルで定義されたキー項目に応じて並び替えされた状態で保存されます。
並び替えされているため、標準テーブルよりも検索速度が速くなります。
ソートテーブルの注意点
ただ並び替えするだけで、検索速度が速くなるのであれば常にソートテーブルだけ利用していればいいのでは?
こう考えるかもしれませんが、ソートテーブルの欠点は「挿入時に時間がかかる」ことにあります。
標準テーブルでは並び順なんかまったく関係ないので、データを追加する場合は「最後の行に追加」(APPEND命令)で一瞬で処理可能なのですが、ソートテーブルの場合「どこにデータを挿入するか」を予め導きだしてからデータを「挿入」(INSERT命令)となるので、時間がかかります。
時と場合に応じて、標準テーブルとソートテーブルを使い分ける必要があります。
4 ハッシュテーブル(HASHED TABLE)
4.1 構文ルール: ~HASHED TABLE OF~
(内部テーブル名) TYPE HASHED TABLE OF (参照構造).
4.2 特徴
ハッシュ処理が施されているテーブルです。
ハッシュ処理とは、元のデータをある一定の計算手法(2乗した数を基の数で割り....)によって元のデータを置換することをいいます。
この際、置換された値が重複してしまうと元のデータが分からなくなるため、置換される結果は必ず違う値でなければいけないというルールがあります。
ハッシュテーブルでは、指定したキー項目をハッシュ処理で置換しテーブルで保存します。
ハッシュテーブルの検索スピードは「データ量に関わらず一定」です。
これが、ハッシュテーブルの最大の特徴です。
データ量に関わらず一定、という性質のため、データ量が大きいテーブルを処理する際にハッシュテーブルが採用されます。
小さいテーブルであれば、ソートテーブルのほうが有利ですが、例えばデータが100万件のような「ほぼデータベースそのまま」のような処理を行う際にハッシュテーブルを採用するとよいでしょう。
ハッシュテーブルの注意点@ キー指定
先ほど、ハッシュ処理では「置換された値は必ず一意になる」と説明しました。
したがって、置換する前の値(ハッシュテーブルのキー項目)も一意でなければなりません。
重複していた場合、プログラムの実行中に「ショートダンプ」を起こし、処理が中止されます。
ハッシュテーブルのキー項目は必ず一意の値でなければなりません。
ハッシュテーブルの注意点A 検索時の指定
ハッシュテーブルを検索する際は、キー項目を全て指定する必要があります。
キー項目によってハッシュ化されているためです。
したがって、ハッシュテーブルから「同時にデータを複数個検索することはできません」。
上記3つの内部テーブルのイメージと、検索時のスピードについて解説してきました。
これを機会に意識して内部テーブルの処理ができるようになれば幸いです。
タグ:ABAP
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/9623018
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック