Jede Programmiersprache unterscheidet verschiedene Arten von Daten für verschiedene Verwendungszwecke wie z.B. zeichenartige Daten für die Speicherung und Darstellung von Werten und numerische Daten für Berechnungen. Die Beschreibung der jeweiligen Eigenschaften erfolgt mit Hilfe von Datentypen. Sie bestimmen z.B. wie die Daten im Speicher abgelegt werden und wie die ABAP-Anweisungen mit den Daten umgehen müssen.
Datentypen unterteilen sich in elementare, Referenz- und komplexe Typen.
Datentypen fester oder variabler Länge, die nicht aus anderen Typen zusammengesetzt sind.
ABAP erlaubt mit der Anweisung TYPES die Definition von benutzerdefinierten elementaren Datentypen, die auf den vordefinierten elementaren Datentypen beruhen. Dabei werden sämtliche technischen Merkmale des neuen Datentyps festgeschrieben. Beispielsweise kann man basierend auf dem vordefinierten Typ P einen neuen Typ P_2 definieren, der zwei Nachkommastellen hat, und diesen verwenden, um entsprechende Datenobjekte zu deklarieren.
Referenztypen sind tiefe Datentypen, die Referenzvariablen beschreiben, d.h. Datenobjekte, die Referenzen enthalten. Eine Referenzvariable kann nicht nur als Einzelfeld, sondern auch als kleinste unteilbare Einheit komplexer Datenobjekte wie Strukturen oder interne Tabellen definiert werden.
Komplexe Datentypen setzen sich aus anderen Datentypen zusammen. Man unterscheidet dabei strukturierte Typen und Tabellentypen.
Die Instanzen von strukturierten Typen werden Strukturen genannt und dienen in ABAP-Programmen zur Zusammenfassung von logisch zusammengehörigen Arbeitsbereichen. Da die Einzelelemente von Strukturen beliebige Datentypen haben können, also wiederum Strukturen oder interne Tabellen sein können, sind die Einsatzmöglichkeiten von Strukturen sehr umfassend. Beispielsweise dienen Strukturen mit elementaren Elementen der programminternen Darstellung von Zeilen aus Datenbanktabellen und Strukturen mit komplexen Elementen werden eingesetzt, um alle Eigenschaften eines Bildschirms oder Controls in einem Datenobjekt zusammenzufassen.
Bei Strukturen spielen folgende Begriffe eine Rolle:
· geschachtelte und nicht-geschachtelte Strukturen
· flache und tiefe Strukturen
Geschachtelte Strukturen sind Strukturen, die wiederum Strukturen als Komponenten enthalten.
Flache Strukturen enthalten nur elementare Datentypen fixer Länge, also keine internen Tabellen, Referenztypen oder Strings. Für den Begriff flache Struktur spielt es keine Rolle, ob die Struktur geschachtelt oder nicht geschachtelt ist. Geschachtelte Strukturen sind solange flach, wie keiner der genannten Typen in irgendeiner Schachtelungsebene enthalten ist.
Jede Struktur, die unabhängig von der Schachtelung mindestens eine interne Tabelle, einen Referenztyp oder einen String als Komponente enthält, bezeichnen wir dementsprechend als tief.
Nur bei flachen Strukturen befindet sich der Dateninhalt der Struktur innerhalb der Speichergrenzen der Struktur selbst, da tiefe Strukturen an der Position der tiefen Komponenten Zeiger auf die Daten enthalten. Aus diesem Grund werden tiefe Strukturen bei Zuweisungen, Offset-/Längenzugriffen etc. auch anders behandelt als flache Strukturen.
Interne Tabellen bestehen aus einer Folge von Zeilen gleichen Datentyps. Interne Tabellen sind charakterisiert durch
· einen Zeilentyp
· einen Tabellenschlüssel, welcher der Identifikation von Tabellenzeilen dient. Wir unterscheiden zwischen eindeutigen und nicht eindeutigen Schlüsseln.
· die Tabellenart, die definiert, wie ABAP auf die Tabelle zugreift (unsortierte und sortierte Indextabellen sowie Hash-Tabellen).
Interne Tabellen werden immer dann eingesetzt, wenn mehrfache Daten einer festen Struktur programmintern verwendet werden. Ein wichtiges Einsatzgebiet ist z.B. die programminterne Speicherung von Daten aus der Datenbank.
Die folgende Liste enthält einige Beispiele für komplexe Datentypen, geordnet nach steigender Komplexität:
...
1. Strukturen, die aus einer Serie von elementaren Datentypen fixer Länge bestehen (nicht-geschachtelte, flache Strukturen).
2. Interne Tabellen, deren Zeilentyp ein elementarer Typ ist (Vektor).
3. Interne Tabellen, deren Zeilentyp eine nicht-geschachtelte Struktur ist ('echte' Tabellen)
4. Strukturen mit Strukturen als Komponenten (geschachtelte Strukturen, flach oder tief).
5. Strukturen mit internen Tabellen als Komponenten (Beispiel für tiefe Strukturen)
6. Interne Tabellen, deren Zeilentyp wiederum interne Tabellen enthält.
Die Abbildung zeigt, wie aus Einzelfeldern komplexe Typen beliebiger Komplexität aufgebaut werden können.
- Definition und Sichtbarkeit von Datentypen auf unterschiedlichen Ebenen des SAP-Systems.