ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Interne Daten verarbeiten →  Strukturen →  Beispiele zu Strukturen → 

Füllen einer Struktur

Das Beispiel demonstriert das Füllen einer geschachtelten Struktur.

Quelltext

REPORT demo_structure_filling.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    TYPES:
      BEGIN OF name_type,
        title   TYPE string,
        prename TYPE string,
        surname TYPE string,
      END OF name_type,
      BEGIN OF street_type,
        name   TYPE string,
        number TYPE string,
      END OF street_type,
      BEGIN OF city_type,
        zipcode TYPE string,
        name    TYPE string,
      END OF city_type,
      BEGIN OF address_type,
        name   TYPE name_type,
        street TYPE street_type,
        city   TYPE city_type,
      END OF address_type.
    CLASS-METHODS main.
ENDCLASS.
CLASS demo IMPLEMENTATION.
  METHOD main.
    DATA: name TYPE name_type,
          addr TYPE address_type.
    name-title   = `Mr.`.
    name-prename = `Duncan`.
    name-surname = `Pea`.
    addr-name = name.
    addr-street-name   = `Vegetable Lane`.
    addr-street-number = `11`.
    addr-city-zipcode = `349875`.
    addr-city-name    = `Botanica`.

    DATA(address) =
      VALUE address_type(
        name-title   = `Mr.`
        name-prename = `Duncan`
        name-surname = `Pea`
        street = VALUE #( name   = `Vegetable Lane`
                          number = `11` )
        city   = VALUE #( zipcode = `349875`
                          name    = `Botanica` ) ).

    ASSERT address = addr.

    cl_demo_output=>new(
      )->write( address-name
      )->write( address-street
      )->write( address-city
      )->display( ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  demo=>main( ).

Beschreibung

In diesem Beispiel wird die Struktur aus dem ausführbaren Beispiel Deklaration einer geschachtelten Struktur mit TYPES als Datentyp address_type definiert und für die Datenobjekte addr und address verwendet. Auch für die Unterstrukturen ist jeweils ein eigener Strukturtyp definiert.

Wenn eine Struktur wie hier gezeigt durch Bezug auf einen Strukturtyp deklariert wird, kann der Zusatz VALUE nicht verwendet werden. Statt dessen muss die Struktur durch Zugriff auf die Komponenten gefüllt werden. Dies gilt insbesondere auch beim häufig vorkommenden Bezug auf Strukturen des ABAP Dictionary.

Der Inhalt beider Strukturen ist gleich. Durch den Wertoperator VALUE können viele voll ausgeschriebene Namen einfach durch Klammerungen ersetzt werden.