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.
Nutzen Sie einen Tabellenpool oder Tabellencluster ausschließlich zur Ablage interner Steuerinformationen (Dynprofolgen, Programmparameter, temporäre Daten, fortlaufende Texte wie etwa Dokumentation). Betriebswirtschaftlich relevante Daten werden in transparenten Tabellen abgelegt.
Einem Tabellenpool entspricht eine Tabelle auf der Datenbank, in der alle Sätze der Pooltabellen abgelegt werden, die dem Tabellenpool zugeordnet sind.
Die Definition eines Pools besteht aus zwei Schlüsselfeldern (Tabname und Varkey) und einem langen Argumentfeld (Vardata). Ein Pool besitzt folgende Struktur:
Feld |
Datentyp |
Beschreibung |
Tabname |
CHAR(10) |
Name der Pooltabelle |
Varkey |
CHAR (n) |
Enthält als String die Einträge aller Schlüsselfelder des Satzes der Pooltabelle. Die maximale 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. Die maximale Länge n ist abhängig vom verwendeten Datenbanksystem. |
Wenn Sie einen Satz einer Pooltabelle sichern, 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 abgelegten Strings wird von der Datenbankschnittstelle im Feld Dataln eingetragen. Die folgende Abbildung zeigt die Struktur eines Tabellenpools. Sie stellt beispielhaft einen Tabellenpool mit zwei zugeordneten Tabellen dar.
Aufgrund der Struktur eines Tabellenpools bestehen einige Restriktionen für die Pooltabellen, die ihm zugeordnet werden:
● Der Name einer Pooltabelle kann 10 Zeichen nicht überschreiten.
● Da Varkey ein Zeichenfeld ist, müssen alle Schlüsselfelder einer Pooltabelle zeichenartige 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 zugehörigen Pools nicht übersteigen.
In einem Tabellencluster können mehrere logische Datensätze aus verschiedenen Clustertabellen in einem physischen Satz zusammengefasst abgelegt 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. Darüber hinaus werden an den Anfang des Vardata-Feldes Steuerinformationen zur Struktur des Datenstrings geschrieben. Ein Tabellencluster besitzt folgende Struktur:
Feld |
Datentyp |
Beschreibung |
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 maximale 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 gespeichert. 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 stammen. 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 benötigen Sie die im ABAP Dictionary abgelegten Strukturinformationen. Diese Tabellen können nur mit Open SQL über die Clusterschnittstelle und nicht mit Native SQL direkt auf der Datenbank bearbeitet werden.
Tabellenpool/Tabellencluster anlegen
Tabellenpool/Tabellencluster löschen
Pooltabellen/Clustertabellen anlegen
Pooltabellen/Clustertabellen ändern