Tabellenpools (Pools) und Tabellencluster (Cluster) sind spezielle Tabellentypen im ABAP Dictionary. In einem Tabellenpool bzw. Tabellencluster können die Daten mehrerer unterschiedlicher Tabellen gemeinsam abgelegt werden. Die einem Tabellenpool bzw. Tabellencluster zugeordneten Tabellen werden als Pooltabellen bzw. Clustertabellen bezeichnet.
Ein Tabellenpool oder Tabellencluster sollte ausschließlich zur Ablage interner Steuerinformationen (Dynprofolgen, Programmparameter, temporäre Daten, fortlaufende Texte wie z.B. Dokumentation) genutzt werden. Betriebswirtschaftlich relevante Daten werden in der Regel in transparenten Tabellen abgelegt.
Tabellenpool
Einem Tabellenpool entspricht eine Tabelle auf der Datenbank, in der alle Sätze der dem Tabellenpool zugeordneten Pooltabellen abgelegt werden.
Die Definition eines Pools besteht im wesentlichen aus zwei Schlüsselfeldern (Tabname und Varkey) und einem langen Argumentfeld (Vardata). Ein Pool besitzt folgende Struktur:
Feld |
Datentyp |
Bedeutung |
Tabname |
CHAR(10) |
Name der Pooltabelle |
Varkey |
CHAR (n) |
Enthält als String die Einträge aller Schlüsselfelder des Satzes der Pooltabelle, max. Länge für n ist 110 |
Dataln |
INT2(5) |
Länge des in Vardata stehenden Strings |
Vardata |
RAW (n) |
Enthält als String die Einträge aller Datenfelder des Satzes der Pooltabelle, max. Länge n ist abhängig vom verwendeten Datenbanksystem |
Wird ein Satz einer Pooltabelle gespeichert, so wird dieser im zugeordneten Tabellenpool abgelegt. Der Name der Pooltabelle wird dabei in das Feld Tabname geschrieben. Der Inhalt aller Schlüsselfelder der Pooltabelle wird als String in das Feld Varkey und der Inhalt aller Datenfelder als String in das Feld Vardata geschrieben. Die Länge des in Vardata abgespeicherten Strings wird von der Datenbankschnittstelle im Feld Dataln eingetragen.
Aufgrund der Struktur eines Tabellenpools bestehen einige Restriktionen für die Pooltabellen, die ihm zugeordnet werden. Pooltabellen dürfen nur einen höchstens 10-stelligen Namen besitzen. Da Varkey ein Character-Feld ist, müssen alle Schlüsselfelder einer Pooltabelle Character-Datentypen (z.B. CHAR, NUMC, CLNT) besitzen. Die Gesamtlänge aller Schlüsselfelder bzw. die Gesamtlänge aller Datenfelder einer Pooltabelle darf die Länge des Varkey- bzw. Vardata-Feldes des zugeordneten Pools nicht übersteigen.
Tabellencluster
In einem Tabellencluster können mehrere logische Datensätze aus mehreren verschiedenen Clustertabellen in einem physischen Satz zusammengefaßt abgespeichert werden.
Der Schlüssel eines Clusters besteht aus einer Reihe von frei definierbaren Schlüsselfeldern und einem Feld (Pageno) zur Unterscheidung von Fortsetzungssätzen. Weiterhin enthält ein Cluster ein langes Feld (Vardata), das die Inhalte der Datenfelder der Clustertabellen zu diesem Schlüssel enthält. Falls die Daten nicht in das lange Feld passen, werden Fortsetzungssätze angelegt. An den Anfang des Vardata-Feldes werden weiterhin Steuerinformationen zur Struktur des Datenstrings geschrieben. Ein Tabellencluster besitzt folgende Struktur:
Feld |
Datentyp |
Bedeutung |
CLKEY1 |
* |
Erstes Schlüsselfeld |
CLKEY2 |
* |
Zweites Schlüsselfeld |
... |
... |
... |
CLKEYn |
* |
n-tes Schlüsselfeld |
Pageno |
INT2(5) |
Nummer des Fortsetzungssatzes |
Timestmp |
CHAR(14) |
Zeitstempel |
Pagelg |
INT2(5) |
Länge des in Vardata stehenden Strings |
Vardata |
RAW (n) |
Enthält als String die Einträge der Datenfelder der zugeordneten Clustertabellen, die max. Länge n ist abhängig vom verwendeten Datenbanksystem |
Die Sätze aller Clustertabellen mit gleichem Schlüssel werden unter einem Schlüssel im zugeordneten Tabellencluster abgelegt. Die Werte der Schlüsselfelder werden in den entsprechenden Schlüsselfeldern des Tabellenclusters abgelegt. Die Werte aller Datenfelder der zugeordneten Clustertabellen werden als String in das Vardata-Feld des Tabellenclusters geschrieben. Der Datenstring enthält neben den eigentlichen Datenwerten noch Informationen dazu, welche Struktur die Daten haben und aus welcher Tabelle sie kommen. Falls der String die maximale Länge des Vardata-Feldes überschreitet, wird mit den gleichen Schlüsselwerten ein Fortsetzungssatz geschrieben. Die Fortsetzungssätze zu einem Schlüssel werden durch ihre Werte im Feld Pageno unterschieden. Die tatsächliche Länge des im Vardata-Feld stehenden Strings wird von der Datenbankschnittstelle im Feld Pagelg abgelegt.
Für das korrekte Auslesen der Daten aus einer Pooltabelle bzw. Clustertabelle sind die im ABAP Dictionary gespeicherten Strukturinformationen notwendig. Deshalb können solche Tabellen nur mit Open SQL über die Clusterschnittstelle und nicht mit Native SQL direkt auf der Datenbank bearbeitet werden.
Siehe auch:
Tabellenpool/Tabellencluster anlegen Tabellenpool/Tabellencluster löschen Pooltabellen/Clustertabellen anlegen Pool/Clustertabellen ändern