!--a11y-->

内部テーブルの行構造は固定しているため、変動する構造を持つデータセットの処理には適しません。代わりに、抽出データセットを使用してそのようなデータセットの処理を行うことができます。
抽出は、プログラムのメモリ領域にある順次データセットです。データセットのエントリのアドレス指定は、特殊なループ内でのみ行うことができます。内部テーブルでは許されている索引またはキーによるアクセスは、許されてい ません。ABAP プログラムでは 1 つの抽出しか作成できません。抽出データセットのサイズは、原則的には無制限です。500KB を超える抽出はオペレーティングシステムファイルに格納されます。ファイルシステムに十分なスペースがあれば、抽出の実質的なサイズは最大で 2GB です。
抽出データセットは、事前定義された構造を持つ一連のレコードで構成されています。ただし、構造はすべてのレコードで同一である必要はありません。1 つの抽出データセットに、異なる長さと構造のレコードを順次格納することができます。格納する構造の種類ごとに個別のデータセットを作成する必要はありません。そのため、メンテナンス作業が大幅に削減されます。
内部テーブルとは対照的に、抽出データセットは格納されるときに部分的に圧縮されます。これによって、必要な記憶域スペースが少なくなります。さらに、プログラムの最初で抽出データセットの構造を指定する必要もありません。しかし、プログラムフロー中の任意の場所で動的に指定することができます。
内部テーブルの場合と同様に、抽出に対しても制御レベル処理を使用することができます。抽出データセットの内部管理は、制御レベル処理で抽出を使用するほうが内部テーブルを使用するより速くなるように最適化されています。
抽出の作成手順は以下のとおりです。
...
1. 抽出で使用するレコードタイプを項目グループとして宣言して、定義します。各項目グループに項目を含めると、構造が定義されます。
2. 必要なデータを抽出して、1 行ずつ抽出に書き込みます。
3. 抽出にデータを書き込んだら、抽出をソートしてループで処理することができます。この段階で、抽出の内容を変更することができなくなります。