[ABAP] Tiefe Strukturen verwenden

* tiefe Struktur definieren
TYPES: BEGIN OF ty_deep_structure,
* Struktur vom Typ MARA
         s_mara TYPE mara,
* Tabelle vom Typ MARD
         t_mard TYPE STANDARD TABLE OF mard WITH DEFAULT KEY,
* Tabelle vom Typ MAKT
         t_makt TYPE STANDARD TABLE OF makt WITH DEFAULT KEY,
       END OF ty_deep_structure.

PARAMETERS: p_matnr TYPE matnr.

START-OF-SELECTION.
  DATA: lv_data TYPE ty_deep_structure.

* schrittweise Daten lesen
  SELECT SINGLE * FROM mara INTO @lv_data-s_mara WHERE matnr = @p_matnr.

  IF sy-subrc = 0.
    SELECT * FROM mard INTO TABLE @lv_data-t_mard WHERE matnr = @p_matnr.

    IF sy-subrc = 0.
      SELECT * FROM makt INTO TABLE @lv_data-t_makt WHERE matnr = @p_matnr.

      IF sy-subrc = 0.
        WRITE: / 'MATNR:', lv_data-s_mara-matnr.
        WRITE: / 'Coutner MARD:', lines( lv_data-t_mard ).
        WRITE: / 'Coutner MAKT:', lines( lv_data-t_makt ).
      ENDIF.

    ENDIF.

  ENDIF.

[ABAP] Interne Tabelle deklarieren

Variante 1

* Definition Zeilen-Typ
TYPES: BEGIN OF ty_bestand,
         isbn     TYPE n LENGTH 10,
         titel    TYPE string,
         bestand  TYPE i,
         autor    TYPE string,
       END OF ty_bestand.

* Definition Tabellen-Typ
TYPES: ty_it_bestand TYPE SORTED TABLE OF ty_bestand WITH UNIQUE KEY isbn.

DATA: it_bestand TYPE ty_it_bestand.

Variante 2

* Definition Zeilen-Typ
TYPES: BEGIN OF ty_bestand,
         isbn     TYPE n LENGTH 10,
         titel    TYPE string,
         bestand  TYPE i,
         autor    TYPE string,
       END OF ty_bestand.

DATA: it_bestand TYPE SORTED TABLE OF ty_bestand WITH UNIQUE KEY isbn.

* oder kurz, ohne Sortierung
DATA: it_bestand2 TYPE STANDARD TABLE OF ty_bestand WITH DEFAULT KEY.

[ABAP] Verwendung von Feldsymbolen (Zeiger)

* Zeilentyp
TYPES: BEGIN OF ty_data,
         name TYPE string,
         ort TYPE string,
       END   OF ty_data.

* Tabellentyp
TYPES: ty_it_itab TYPE STANDARD TABLE OF ty_data WITH DEFAULT KEY.

* Tabelle
DATA: it_itab TYPE ty_it_itab.

* Feldsymbol definieren
FIELD-SYMBOLS: <fs_line> TYPE ty_data.

* Beispielausgabe 1 mit Feldsymbol
LOOP AT itab ASSIGNING <fs_line>.
  WRITE: / <fs_line>-name, <fs_line>-ort.
ENDLOOP.

* Beispielausgabe 2 mit Inline-Feldsymbol
LOOP AT itab ASSIGNING FIELD-SYMBOL(<fs_inline>).
  WRITE: / <fs_inline>-name, <fs_inline>-ort.
ENDLOOP.

[ABAB] Struct (Datentyp) definieren

Einfaches Beispiel

* Definition
TYPES: BEGIN OF s_adresse,
         knr(8)  TYPE n,
         name    TYPE string,
         vorname TYPE string,
         plz(5)  TYPE n,
         ort     TYPE string,
       END OF s_adresse.

* Variable vom Typ
DATA: adresse TYPE s_adresse.

* Zugriff
adresse-knr = '1234'.
adresse-name = 'Hoffmann'.
adresse-vorname = 'Horst'.
adresse-plz = '01069'.
adresse-ort = 'Dresden'.

* Ausgabe
WRITE:  / adresse-knr,
        / adresse-name,
        / adresse-vorname,
        / adresse-plz,
        / adresse-ort.

Verschachtelung von Structen

TYPES: BEGIN OF s_type1,
         num TYPE i,
         name TYPE string,
       END OF s_type1.

TYPES: BEGIN OF s_type2,
         col TYPE i,
         text TYPE string,
       END OF s_type2.

TYPES: BEGIN OF s_mystruct,
         a TYPE s_type1,
         b TYPE s_type2,
       END OF s_mystruct.

[ABAP] Variablendeklaration

DATA zahl TYPE i.                         " ganze Zahl (int)
DATA zahl TYPE i VALUE '1'.               " ganze Zahl (int) mit vordefiniertem Wert '1'
DATA chk TYPE c LENGTH 1 VALUE 'X'.       " char Länge 1 Vorbelegung mit Wert 'X'
DATA preis TYPE p DECIMALS 2 VALUE '1.3'. " gepackte Gleitkommazahl, zwei Nachkommastellen, Wert '1.3'
DATA zk(5) TYPE c.                        " char Länge 5 (obsolet)

TYPES zk TYPE c LENGTH 5.                 " Typdef zk vom Typ char Länge 5
DATA text TYPE zk.                        " text vom Typ zk

DATA: dt TYPE sy-datum,                   " verkettete Anweisung mit Komma getrennt
      zt TYPE sy-uzeit.                   " Nutzung von Systemdatentypen

Links