[ABAP] Interne Tabellen: Speicherung und Suche von Key-Value-Paaren mit Hilfe von tiefen Strukturen

* Typ für Eingabedaten (Key)
TYPES: BEGIN OF ty_in,
         key1 TYPE string,
         key2 TYPE string,
       END OF ty_in.

* Typ für Ausgabedaten (Value)
TYPES: BEGIN OF ty_out,
         vorname  TYPE string,
         nachname TYPE string,
       END OF ty_out.

* Zusammengesetzte Tabellenzeile (tiefe Struktur) für Key-Value-Paare
TYPES: BEGIN OF ty_s_line,
         in  TYPE ty_in,
         out TYPE ty_out,
       END OF ty_s_line.

* Tabellentyp für Speicherung von Key-Value-Paaren
TYPES: ty_it_data TYPE HASHED TABLE OF ty_s_line WITH UNIQUE KEY in-key1 in-key2.

* Testdaten
DATA(it_data) = VALUE ty_it_data( ( in-key1 = 'A1' in-key2 = 'A2' out-vorname = 'Hans'     out-nachname = 'Müller' )
                                  ( in-key1 = 'B1' in-key2 = 'B2' out-vorname = 'Ida'      out-nachname = 'Schulze' )
                                  ( in-key1 = 'C1' in-key2 = 'C2' out-vorname = 'Heinz'    out-nachname = 'Lehmann' )
                                  ( in-key1 = 'D1' in-key2 = 'D2' out-vorname = 'Marianne' out-nachname = 'Meier' )
                                ).

* Struktur mit Suchkriterium
DATA(lv_in) = VALUE ty_in( key1 = 'A1' key2 = 'A2' ).
* Rückgabestruktur
DATA(lv_out) = VALUE ty_out( ).

* Übergabe der Struktur mit den Key-Werten
IF line_exists( it_data[ in = lv_in ] ).
* wenn Key gefunden, dann Rückgabestruktur übergeben
  lv_out = it_data[ in = lv_in ]-out.
* Datenausgabe
  cl_demo_output=>display( lv_out ).
ELSE.
  WRITE: / 'Nichts gefunden.'.
ENDIF.