Für die Konstruktion eines neuen programmlokalen strukturierten Datentyps struc_type verwendet man mehrere TYPES-Anweisungen:
TYPES BEGIN OF struc_type.
...
{TYPES dtype ...} | {INCLUDE {TYPE|STRUCTURE} ...}.
...
TYPES END OF struc_type.
Innerhalb der beiden TYPES-Anweisungen mit den Zusätzen BEGIN OF und END OF können beliebige TYPES-Anweisungen, insbesondere auch weitere abgeschlossene Strukturdefinitionen, und die Anweisungen INCLUDE TYPE und INCLUDE STRUCTURE stehen. Auf diese weise können geschachtelte Strukturen erzeugt werden.
Die einzelnen Komponenten eines strukturierten Datentyps werden im Programm mit dem Strukturkomponenten-Selektor (-) zwischen Strukturname und Komponentenname benannt: struc_type-dtype.
Für weitere Informationen: siehe Schlüsselwortdokumentation.
TYPES: spfli_type TYPE spfli,
surname(20) TYPE c,
BEGIN OF address,
name TYPE surname,
street(30) TYPE c,
city TYPE spfli_type-cityfrom,
END OF address,
town TYPE address-city.
Dieses Beispiel zeigt die programmlokalen Definitionen zweier Strukturtypen spfli_typeund address. Die Struktur des Datentyps spfli_typewird von der Datenbanktabelle SPFLI aus dem ABAP Dictionary übernommen. Die einzelnen Komponenten von spfli_typespiegeln die Spalten von SPFLI wieder. Die einzelnen Datentypen der Komponenten sind die ABAP-Entsprechungen der Datentypen der Spalten im ABAP Dictionary. Der Strukturtyp address wird neu definiert. Die Komponente address-nameübernimmt den Datentyp vom vorher definierten Typ surname, die Komponente address-street wird neu definiert, die Komponente address-city übernimmt den Datentyp der Spalte cityfrom des Strukturtyps spfli_type.
TYPES: BEGIN OF struct1,
col1 TYPE i,
BEGIN OF struct2,
col1 TYPE i,
col2 TYPE i,
END OF struct2,
END OF struct1.
TYPES mytype TYPE struct1-struct2-col2.
Das Beispiel zeigt, wie ein geschachtelter Strukturtyp struct1 mit einer komplexen Komponente struct2 durch Schachtelung der Anweisungsblöcke TYPES BEGIN OF - TYPES END OFkonstruiert werden kann und wie die inneren Komponenten angesprochen werden.
* Programmlokale Typen,
* die auf eingebaute ABAP-Typen verweisen:
TYPES:
surname(20) TYPE c,
street(30) TYPE c,
zip_code(10) TYPE n,
city(30) TYPE
c,
phone(20) TYPE
n,
date LIKE
sy-datum.
* Programmlokale Struktur,
* die auf obige Typen verweist:
TYPES: BEGIN of
address,
name TYPE surname,
code TYPE zip_code,
town TYPE city,
str TYPE
street,
END OF address.
* Programmlokale geschachtelte Struktur,
* die auf obige Typen verweist:
TYPES: BEGIN of
phone_list,
adr TYPE address,
tel TYPE phone,
END OF phone_list.
Dieses Beispiel zeigt, wie man aus einfachen Typdefinitionen komplexe Datentypen aufbauen kannn. Nachdem eine Menge von elementaren Datentypen mit eingebauten ABAP-Typen angelegt wurde, wird ein Strukturtyp address mit den vorher definierten Datentypen definiert. Schließlich wird ein geschachtelter Strukturtyp phone_list angelegt, dessen erste Komponente den Typ address hat.
REPORT demo_structure.
TYPES: BEGIN OF name,
title TYPE c LENGTH 5,
first_name TYPE c
LENGTH
10,
last_name TYPE c
LENGTH
10,
END OF name.
TYPES: BEGIN OF mylist,
client TYPE name,
number TYPE i,
END OF mylist.
DATA list TYPE mylist.
list-client-title = 'Lord'.
list-client-first_name = 'Howard'.
list-client-last_name = 'Mac Duff'.
list-number = 1.
WRITE list-client-title.
WRITE list-client-first_name.
WRITE list-client-last_name.
WRITE / 'Number'.
WRITE list-number.
Das Programm erzeugt die folgende Bildschirmausgabe
Lord Howard Mac
Duff
Number
1
Es werden die programmlokalen Datentypen name und mylist mit der Anweisung TYPES als Strukturen definiert. Die Struktur name enthält die drei Komponenten title first_name und last_name mit Bezug auf den eingebauten ABAP-Typ c. Die Struktur mylist enthält die beiden Komponenten client und number. client ist eine Unterstruktur, da sie sich auf die Struktur name bezieht. number ist elementar mit dem eingebauten Typ i. Ein Datenobjekt list wird mit Bezug auf den Datentyp mylistdeklariert. Den Komponenten werden Werte zugewiesen, und ihre Inhalte werden auf die Ausgabeliste geschrieben.
Die Syntax für die direkte Deklaration einer Variablen als Struktur entspricht der Definition eines strukturierten Datentyps mit der TYPES-Anweisung:
DATA BEGIN OF struc.
...
{DATA comp ...} | {INCLUDE
{TYPE|STRUCTURE} ...}.
..
DATA END OF
struc.
Die einzelnen Komponenten einer Struktur werden im Programm mit dem Strukturkomponenten-Selektor (-) zwischen Strukturname und Komponentenname benannt: struc-comp.
Für weitere Informationen: siehe Schlüsselwortdokumentation.
DATA: BEGIN OF
address,
name
TYPE c LENGTH 20,
street TYPE c
LENGTH 20,
number TYPE
p,
postcode TYPE n LENGTH 5,
city
TYPE c LENGTH 20,
END OF address.
Dieses Beispiel definiert eine Struktur namens address. Die Komponenten können durch address-name, address-street usw. angesprochen werden.