Der TYPE-Zusatz wird in verschiedenen ABAP-Anweisungen zur Definition von Datentypen und zur Typisierung von Schnittstellenparametern oder von Feldsymbolen verwendet. Je nach Syntax und Kontext kann der TYPE-Zusatz dabei eine andere Bedeutung haben:
Bezug auf bekannte Datentypen
Mit dem Zusatz
TYPE <type>
kann in den unten aufgeführten ABAP-Anweisungen auf alle an dieser Stelle sichtbaren Datentypen <type> verwiesen werden. Dabei ist der Ausdruck <type> entweder der Name eines Datentyps oder der Ausdruck
LINE OF <table-type>
In diesem Fall bezieht sich der TYPE-Zusatz sinngemäß auf den Zeilentyp eines an dieser Stelle sichtbaren Tabellentyps <table-type>.
ABAP-Anweisungen mit TYPE-Bezug
TYPES <t>
TYPE <type>.Der neue Datentyp <t> entspricht vollständig dem bekannten Typ <type>.
DATA <f>
TYPE <type>.CLASS-DATA <f>
TYPE <type>.CONSTANTS <f>
TYPE <type>.STATICS <f>
TYPE <type>.PARAMETERS <f>
TYPE <type>.Das Datenobjekt <f> erhält einen Datentyp, der vollständig dem bekannten Typ <type> entspricht.
CREATE DATA <dref>
TYPE <type>.FORM <sub> ... USING|CHANGING <p>
TYPE <type> ...Die technischen Eigenschaften des Formalparameters <p> sind vollständig durch die Eigenschaften des bekannten Typs <type> festgelegt. Es dürfen nur Aktualparameter des gleichen Typs übergeben werden.
METHODS <meth> ... IMPORTING|EXPORTING|CHANGING <p>
TYPE <type> ...Die technischen Eigenschaften des Formalparameters <p> sind vollständig durch die Eigenschaften des bekannten Typs <type> festgelegt. Es dürfen nur Aktualparameter des gleichen Typs übergeben werden.
FIELD-SYMBOLS <fs>
TYPE <type>.Die technischen Eigenschaften des Feldsymbols <FS> sind vollständig durch die Eigenschaften des bekannten Typs <type> festgelegt. Es dürfen nur Datenobjekte des gleichen Typs zugewiesen werden.
Sichtbarkeit von Datentypen
Beim Bezug auf bekannte Datentypen mit dem TYPE-Zusatz spielt die Sichtbarkeit der Datentypen eine Rolle.
Die Abbildung veranschaulicht die Sichtbarkeit von programmlokalen und Dictionary-Datentypen:
Das System sucht von innen nach außen. Wenn im Programm TYP1 in einem TYPE-Zusatz angegeben ist, wird sowohl in der Prozedur als auch im Rahmenprogramm der Typ aus dem Dictionary verwendet. Wird TYP2 in der Prozedur angegeben, wir der lokale Typ der Prozedur verwendet. Wird TYP2 im Rahmenprogramm angegeben, wird der Typ des Rahmenprogramms verwendet. TYP2 aus dem Dictionary ist unsichtbar. Wird TYP3 angegeben, wird sowohl in der Prozedur als auch im Rahmenprogramm der Typ des Rahmenprogramms verwendet. TYP3 aus dem Dictionary ist unsichtbar.
Konstruktion neuer Datentypen
Mit dem Zusatz TYPE können in den ABAP-Anweisungen TYPES, DATA, CONSTANTS und STATICS neue Datentypen konstruiert werden. In der Anweisung TYPES sind dies eigenständige programmlokale Datentypen. In den anderen Anweisungen sind es Attribute von neuen Datenobjekten.
Für die Konstruktion neuer Datentypen kann der TYPE-Zusatz mit folgenden Typ-Konstruktoren verwendet werden:
REF TO <class>|<interface>
BEGIN OF <struct>.
...
END OF <struct>.
<tabkind> OF <linetype> [WITH <key>]
Solche Datentypen sind nur während der Laufzeit eines ABAP Programms vorhanden.
Bezug auf generische Typen bei der Typisierung
Für die Typisierung von Schnittstellenparametern und Feldsymbolen ist ein Satz vordefinierter generischer Typen in die Syntax eingebaut worden, die nur in den Anweisungen FORM, METHODS und FIELD-SYMBOLS hinter TYPE verwendet werden können.
Generische Typen für die Typisierung
ANY |
Vollständig generischer Typ. |
ANY TABLE |
Generischer Typ für alle Tabellen |
INDEX TABLE |
Generischer Typ für Tabellen mit linearem Index. |
TABLE STANDARD TABLE |
Generische Typen für unsortierte Tabellen mit linearem Index. |
SORTED TABLE |
Generischer Typ für sortierte Tabellen mit linearem Index. |
HASHED TABLE |
Generischer Typ für Tabellen mit Hash-Verwaltung. |
Diese Typen können nicht bei der Definition von programmlokalen Datentypen oder von Datenobjekten verwendet werden. Sie ermöglichen ausschließlich die Überprüfung des Datentyps von Feldern, die an Prozeduren übergeben oder Feldsymbolen zugewiesen werden.