!--a11y-->

次の図に、ABAP で使われるさまざまなデータ型を示します。データ型は、ABAP タイプ階層 の一部を構成します。
データ型は基本タイプ、参照タイプ、複合タイプに分類することができます。
基本タイプは、分割不可能なタイプの最小単位です。基本タイプは、固定長のものと可変長のものに分類することができます。
ABAP には、事前定義された固定長タイプが 8 つ用意されています。
キ 4 つの文字タイプ:
文字 (C) 、数値文字 (N) 、日付 (D) 、時刻 (T)
キ 1 つの 16 進タイプ:
バイト項目 (X)
キ 3 つの数値タイプ:
整数 (I) 、浮動小数点形式の値 (F) 、パック数値 (P)
ABAP には、事前定義された可変長タイプが 2 つ用意されています。
キ 文字列を表す STRING
キ バイト文字列を表す XSTRING
参照タイプは、他のオブジェクト ( データオブジェクトと ABAP オブジェクト内のオブジェクト) に対する参照 ( ポインタ) をもつデータオブジェクトを記述したものです。参照がポイントすることのできるオブジェクトの階層を記述した参照タイプ階層があります。参照は事前定義されていません。ユーザ自身がプログラムに参照を定義しなければなりません。
複合タイプは他のタイプで構成されています。複合タイプを使用することで、意味上関連性のあるデータを 1 つの名称で管理し、処理することができます。複合データオブジェクト全体にアクセスすることも、コンポーネント別にアクセスすることもできます。ABAP に事前定義された複合データ型はありません。複合データ型は、ユーザの ABAP プログラムに定義するか、ABAP ディクショナリに定義する必要があります。構造化タイプは、さらに構造と内部テーブルに分類されます。
構造は任意の基本タイプ、参照タイプ、または複合データ型の連続体です。
ABAP プログラムに構造を使用すると、論理的に同じグループに属する作業領域をグループ化することができます。構造のエレメントには任意のデータ型を割り当てることが可能なため、構造は幅広く利用することができます。たとえば、基本データ型をもつ構造を使用して、プログラム内でデータベーステーブルの行を表示することができます。また、集約エレメントが含まれている構造を使用して、Dynpro のすべての属性やコントロールを個別データオブジェクトに組み込むこともできます。
構造について説明する上で、以下の用語が重要になります。
キ ネストされた構造およびネストされていない構造
キ フラット構造およびディープ構造
ネストされた構造とは、1 つまたは複数の他の構造をコンポーネントとして含む構造のことです。フラット構造には、固定長の基本データ型のみが含まれています ( 内部テーブル、参照タイプ、文字列などは含まれません) 。ディープ構造という用語は、構造がネストされているか否かに関係なく使用できます。ネストされた構造は、ネストレベルで上記のデータ型が含まれていない限り、フラットです。
内部テーブル、参照タイプ、または文字列を少なくとも 1 つコンポーネントとして含んでいる構造はすべて ( ネストされているか否かには関係なく) ディープ構造です。したがって、内部テーブル、参照、文字列はディープデータ型とも呼ばれます。ディープ構造とそれ以外の構造の技術的な相違は以下のとおりです。ディープ構造を作成すると、実際の項目内容や他の管理情報をポイントするポインタがメモリ内に作成されます。フラットデータ型を作成する場合は、実際の項目内容はデータ型と一緒にメモリに保存されます。ディープ構造の場合、項目内容は項目テキストと一緒に保存されないため、割当、オフセット、長さ指定やその他の操作はフラット構造の場合とは異なる方法で処理されます。
内部テーブルは、すべて同じデータ型を割り当てた一連の行で構成されています。内部テーブルには、以下のような特性があります。
キ 行タイプ ( 任意の基本タイプが使用可能) 、参照タイプ、または複合データ型。
キ テーブル行はキーによって識別されます。キーは行中の基本項目で構成されます。キーは一意であっても、一意でなくてもかまいません。
キ
アクセス方法によって、ABAP
が個別のテーブルエントリにアクセスする方法が決まります。アクセスタイプには、非ソートテーブル、ソート索引テーブル、ハッシュテーブルという 3
種類があります。索引テーブルでは、線形索引が設定されており、索引またはキーを指定してテーブルエントリにアクセスできるようになっています。
ハッシュテーブルには線形索引は設定されていません。ハッシュテーブルにアクセスするには、キーを指定しなければなりません。システムは、テーブル管理に独自のハッシュアルゴリズムを使用します。
プログラム内で構造化データを使用しなければならない場合には必ず、内部テーブルを使用してください。1 つの用途として、データベースのデータをプログラム内に保存する方法があります。
以下に、複合データ型の例を複雑度の昇順で列記します。
...
1. 一連の固定長の基本データ型で構成された構造 ( ネストされていないフラット構造)
2. 基本タイプの行データ型 ( ベクトル) をもつ内部テーブル
3. ネストされていない構造の行データ型をもつ内部テーブル (' 実' テーブル)
4. 構造をコンポーネントとしてもつ構造 ( ネストされた構造、フラットまたはディープ)
5. 内部テーブルをコンポーネントとしてもつ構造 ( ディープ構造)
6. 行データ型にさらに内部テーブルが含まれている内部テーブル
この図では、基本項目を組み合わせて複合タイプを構成する方法を示しています。
R/3 システムでは、さまざまなレベルでデータ型を定義することができます。追加情報については、以下を参照してください。
ABAP 命令の中には、TYPE オプションを使用して既存のデータ型を参照できるものがります。これが機能するためには、データ型がプログラム内で表示されていなければなりません。追加情報については、以下を参照してください。
データを使用する場合は、データ型に互換性があるかどうかを確認する必要があります。追加情報については、以下を参照してください。
