Show TOC Anfang des Inhaltsbereichs

Strukturierte Datentypen  Dokument im Navigationsbaum lokalisieren

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.

Beispiel

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.

Beispiel

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.

Beispiel

* 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.

Beispiel

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.

Strukturen

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.

Beispiel

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.

 

Ende des Inhaltsbereichs