Interne Tabellen

Der Datentyp einer internen Tabelle wird vollständig durch den Zeilentyp, den Schlüssel und den Tabellentyp angegeben.

Zeilentyp

Der Zeilentyp einer internen Tabelle kann ein beliebiger Datentyp sein. Der Datentyp einer internen Tabelle ist normalerweise eine Struktur. Jede Komponente der Struktur ist eine Spalte in der internen Tabelle. Der Zeilentyp kann jedoch auch elementar oder eine andere interne Tabelle sein.

Schlüssel

Der Schlüssel identifiziert Tabellenzeilen. Es gibt zwei Arten von Schlüsseln für interne Tabellen – den Standardschlüssel und einen benutzerdefinierten Schlüssel. Sie können angeben, ob der Schlüssel EINDEUTIG oder NICHT EINDEUTIG sein soll. Interne Tabellen mit einem eindeutigen Schlüssel dürfen keine doppelten Einträge enthalten. Die Eindeutigkeit hängt von der Tabellenzugriffsmethode ab.

Bei Tabellen mit strukturiertem Zeilentyp wird der Standardschlüssel aus allen Zeichentypspalten der internen Tabelle gebildet. Wenn eine Tabelle einen elementaren Zeilentyp hat, ist der Standardschlüssel die gesamte Zeile. Der Standardschlüssel einer internen Tabelle, deren Zeilentyp eine interne Tabelle ist, ist der Standardschlüssel leer. Bei Tabellen mit nicht strukturiertem Zeilentyp besteht der Standardschlüssel aus der gesamten Zeile. Wenn der Zeilentyp auch eine Tabelle ist, wird ein leerer Schlüssel definiert.

Der benutzerdefinierte Schlüssel kann beliebige Spalten der internen Tabelle enthalten, die selbst keine interne Tabelle sind und keine internen Tabellen enthalten. Referenzen sind als Tabellenschlüssel zulässig. Interne Tabellen mit einem benutzerdefinierten Schlüssel werden als Schlüsseltabellen bezeichnet. Wenn Sie den Schlüssel definieren, ist die Reihenfolge der Schlüsselfelder von Bedeutung. Dies sollten Sie sich beispielsweise merken, wenn Sie die Tabelle nach dem Schlüssel sortieren möchten.

Tabellentyp

Der Tabellentyp legt fest, wie ABAP auf einzelne Tabelleneinträge zugreift. Interne Tabellen können in drei Typen unterteilt werden:

Standardtabellen haben einen internen linearen Index. Ab einer bestimmten Größe werden die Indizes interner Tabellen als Bäume verwaltet. In diesem Fall erhöht sich der Overhead der Indexverwaltung logarithmisch und nicht linear zur Anzahl der Zeilen. Das System kann auf Datensätze zugreifen, indem es entweder den Tabellenindex oder den Schlüssel verwendet. Die Antwortzeit für den Schlüsselzugriff ist proportional zur Anzahl der Einträge in der Tabelle. Der Schlüssel einer Standardtabelle ist immer nicht eindeutig. Sie können keinen eindeutigen Schlüssel angeben. Das bedeutet, dass Standardtabellen immer sehr schnell befüllt werden können, da das System nicht prüfen muss, ob bereits Einträge vorhanden sind.

Sortierte Tabellen werden immer nach dem Schlüssel sortiert gespeichert. Sie haben auch einen internen Index. Das System kann auf Datensätze zugreifen, indem es entweder den Tabellenindex oder den Schlüssel verwendet. Die Antwortzeit für den Schlüsselzugriff ist logarithmisch proportional zur Anzahl der Tabelleneinträge, da das System eine binäre Suche verwendet. Der Schlüssel einer sortierten Tabelle kann entweder eindeutig oder nicht eindeutig sein. Wenn Sie die Tabelle definieren, müssen Sie angeben, ob der Schlüssel EINDEUTIG oder NICHT EINDEUTIG sein soll. Standardtabellen und sortierte Tabellen werden allgemein als Indextabellen bezeichnet.

Hash-Tabellen haben keinen linearen Index. Sie können nur mit ihrem Schlüssel auf eine Hash-Tabelle zugreifen. Die Antwortzeit ist unabhängig von der Anzahl der Tabelleneinträge und konstant, da das System mit einem Hash-Algorithmus auf die Tabelleneinträge zugreift. Der Schlüssel einer Hash-Tabelle muss eindeutig sein. Wenn Sie die Tabelle definieren, müssen Sie den Schlüssel als EINDEUTIG angeben.

Generische interne Tabellen

Im Gegensatz zu anderen lokalen Datentypen in Programmen müssen Sie den Datentyp einer internen Tabelle nicht vollständig angeben. Stattdessen können Sie eine generische Konstruktion angeben, d. h. Der Schlüssel oder Schlüssel- und Zeilentyp eines internen Tabellendatentyps bleibt möglicherweise nicht angegeben. Sie können generische interne Tabellen verwenden, um die Typen von Feldsymbolen und die Schnittstellenparameter von Prozeduren anzugeben. Sie können sie nicht zum Deklarieren von Datenobjekten verwenden.

Leave a Reply