内部テーブル
内部テーブルのデータ型は、行の型、キー、およびテーブルの型によって完全に指定されます。
行のタイプ
内部テーブルの行のタイプは、任意のデータ型にすることができます。 内部テーブルのデータ型は、通常は構造体です。 構造体の各コンポーネントは、内部テーブルの列です。 ただし、行タイプは、基本テーブルまたは別の内部テーブルであってもよい。
キー
キーはテーブルの行を識別します。 内部テーブルのキーには、標準キーとユーザー定義キーの2種類があります。 キーを一意にするか非一意にするかを指定できます。 一意キーを持つ内部テーブルには、重複するエントリを含めることはできません。 一意性は、テーブルのアクセス方法によって異なります。
構造化された行タイプのテーブルでは、標準キーは内部テーブルのすべての文字タイプの列から形成されます。 テーブルに基本行タイプがある場合、デフォルトのキーは行全体です。 行タイプが内部テーブルである内部テーブルのデフォルトキーで、デフォルトキーは空です。 構造化されていない行タイプのテーブルでは、標準キーは行全体で構成されます。 行タイプがテーブルでもある場合は、空のキーが定義されます。
ユーザー定義キーには、内部テーブル自体ではなく、内部テーブルを含まない内部テーブルの任意の列を含めることができます。 参照はテーブルキーとして許可されます。 ユーザー定義キーを持つ内部テーブルは、キーテーブルと呼ばれます。 キーを定義すると、キー項目の順序が重要になります。 たとえば、キーに従ってテーブルをソートする場合など、これを覚えておく必要があります。
テーブルタイプ
テーブルタイプは、ABAPが個々のテーブルエントリにアクセスする方法を決定します。 内部テーブルは3つのタイプに分けることができます:
標準テーブルには内部線形インデックスがあります。 特定のサイズ以上から、内部テーブルのインデックスはツリーとして管理されます。 この場合、インデックス管理のオーバーヘッドは対数で増加し、行数との線形関係は増加しません。 システムは、テーブルインデックスまたはキーを使用してレコードにアクセスできます。 キーアクセスの応答時間は、テーブル内のエントリ数に比例します。 標準テーブルのキーは常に一意ではありません。 一意のキーを指定することはできません。 これは、システムが既存のエントリがあるかどうかをチェックする必要がないため、標準テーブルを常に非常に迅速に入力できることを意味します。
ソートされたテーブルは、常にキーでソートされて保存されます。 彼らはまた、内部インデックスを持っています。 システムは、テーブルインデックスまたはキーを使用してレコードにアクセスできます。 キーアクセスの応答時間は、システムがバイナリ検索を使用するため、テーブルエントリの数に対数的に比例します。 ソートされたテーブルのキーは、一意または非一意のいずれかにすることができます。 テーブルを定義するときは、キーを一意にするか非一意にするかを指定する必要があります。 標準テーブルとソートされたテーブルは、一般的にインデックステーブルと呼ばれています。
ハッシュテーブルには線形インデックスがありません。 ハッシュテーブルには、そのキーを使用してのみアクセスできます。 応答時間は、テーブルエントリの数に依存せず、システムがハッシュアルゴリズムを使用してテーブルエントリにアクセスするため、一定です。 ハッシュテーブルのキーは一意である必要があります。 テーブルを定義するときは、キーをUNIQUEとして指定する必要があります。
汎用内部テーブル
プログラム内の他のローカルデータ型とは異なり、内部テーブルのデータ型を完全に指定する必要はありません。 つまり、内部表データ型のキーまたはキーと行の型は指定されていないままにすることができます。 汎用内部テーブルを使用して、フィールドシンボルのタイプとプロシージャのインターフェースパラメータを指定できます。 これらを使用してデータオブジェクトを宣言することはできません。
Leave a Reply