プールテーブルとクラスタテーブル 

テーブルプール ( プール ) とテーブルクラスタ ( クラスタ ) は、いずれも ABAP ディクショナリに格納される特殊なテーブルタイプです。テーブルプールやテーブルクラスタには、複数のテーブルのデータをまとめて格納することができます。テーブルプールやテーブルクラスタに割り当てられているテーブルを、プールテーブルまたはクラスタテーブルといいます。

テーブルプールやテーブルクラスタは、内部の制御情報 (Dynpro 順序、プログラムパラメータ、一時データ、文書などの継続テキスト ) を保存するためだけに使用してください。ビジネス関連のデータはすべて、透過テーブル のみに保管されます。

テーブルプール

データベースのテーブルは、テーブルプールに相当し、ここに、テーブルプールに割り当てられたプールテーブルの全レコードが保管されます。

プールの定義には、基本的に 2 つのキー項目 ( Tabname Verkey) と、ロング引数項目 ( Vardata) が含まれます。プールは次のような構造です。

項目

データ型

意味

Tabname

CHAR(10)

プールテーブル名

Varkey

CHAR (n)

プールテーブルレコードのすべてのキー項目のエントリが文字列として格納され、 n の最大長は 110 です

Dataln

INT2(5)

Vardata における文字列の長さ

Vardata

RAW (n)

プールテーブルレコードの全データ項目のエントリが文字列として格納され、 n の最大長は使用するデータベースシステムによって異なります

プールテーブルレコードを保存すると、割り当てられたテーブルプールに格納されます。プールテーブル名は、項目 Tabname に書き込まれます。プールテーブルの全キー項目の内容は項目 Varkey に文字列として書き込まれ、全データ項目の内容は項目 Vardata に文字列として書き込まれます。 Vardata に格納される文字列の長さは、データベースインタフェースによって項目 Dataln に入力されます。

テーブルプールの構造上の理由から、割り当てられるプールテーブルにはいくつかの制限があります。プールテーブル名は最長 10 文字に制限されています。また Varkey は文字項目なので、プールテーブルの全キー項目が文字データ型でなければなりません ( : CHAR NUMC CLNT) 。プールテーブルの全キー項目または全データ項目の長さの合計は、割り当てられたプールの Verkey または Vardata 項目の長さを超えないようにしなければなりません。

テーブルクラスタ

複数のクラスタテーブルの論理データレコードを、テーブルクラスタ内の 1 つの物理レコードにまとめて格納することができます。

クラスタキーは、自由に定義できる一連のキー項目と、継続レコードを識別するための項目 ( Pageno) によって構成されます。またクラスタには、クラスタキー用のクラスタテーブルのデータ項目の値を格納する項目 ( ) ( Vardata) も含まれます。データが項目 ( ) に収まらないときは、継続レコードが登録されます。データ文字列の構造についての制御情報は、 Vardata 項目の先頭に書き込まれます。テーブルクラスタの構造は以下のとおりです。

項目

データ型

 

 

意味

CLKEY1

*

最初のキー項目

CLKEY2

*

2 番目のキー項目

...

...

...

CLKEYn

*

n 番目のキー項目

Pageno

INT2(5)

継続レコードの番号

Timestamp

CHAR(14)

タイムスタンプ

Pagelg

INT2(5)

Vardata における文字列の長さ

Vardata

RAW (n)

割り当てられたクラスタテーブルのデータ項目のエントリが文字列として格納され、 n の最大長は使用するデータベースシステムによって異なります

キーが同じクラスタテーブルのレコードは、そのキーを使用して割り当てられたテーブルクラスタに格納されます。キー項目の値は、テーブルクラスタの対応するキー項目に格納されます。割り当てられたクラスタテーブルの全データ項目の値は、テーブルクラスタの Vardata 項目に文字列として書き込まれます。データ文字列には、実際のデータ値だけでなく、データの構造とデータの取得元テーブルに関する情報も含まれます。文字列が項目 Vardata の最大長を超えると、同じキー値で継続レコードが書き込まれます。キーの継続レコードは、項目 Pageno 内の値によって識別されます。項目 Vardata の中の文字列の実際の長さは、データベースインタフェースによって項目 Pagelg に格納されます。

ABAP ディクショナリに格納される構造情報は、プールテーブルやクラスタテーブルから正しくデータを読み込むのために必要なものです。このためプールテーブルやクラスタテーブルは、クラスタインタフェースでオープン SQL を使用した場合にのみ処理が可能であり、データベースでネイティブ SQL を使用して直接処理することはできません。

以下も参照してください。

テーブルプール / テーブルクラスタの登録

テーブルプール / テーブルクラスタの削除

プールテーブル / クラスタテーブルの登録

プールテーブル / クラスタテーブルの変更