*==============================================================
* Zugriff auf Tabellenzeilen
*============================================================== 

types: begin of Stadt,
         name(50) type C,
         einwohnerzahl type I,
         bundesland(50) type C,
       end of Stadt.

types Zeichenkette(250) type C.

data meineZeichenkette1 type Zeichenkette.
data meineZeichenkette2 type Zeichenkette.
data meineStadt1 type Stadt.

data standardtabelle1 type standard table of Zeichenkette.
data standardtabelle2 type standard table of Stadt. 

data sortierteTabelle1 type sorted table 
                       of Zeichenkette
                       with unique key table_line. 

data sortierteTabelle2 type sorted table 
                       of Stadt 
                       with unique key name. 

data hashedTable1 type hashed table 
                  of Zeichenkette
                  with unique key table_line. 

data hashedTable2 type hashed table 
                  of Stadt 
                  with unique key name.
    
*==============================================================
* Read table (Standardtabellen)
*==============================================================   

read table standardtabelle1 index 3 into meineZeichenkette1.

write / meineZeichenkette1.

read table standardtabelle2 index 1 into meineStadt1.

write / meineStadt1-name.
write / meineStadt1-einwohnerzahl.
write / meineStadt1-bundesland.

*==============================================================
* Read table (sortierte Tabellen)
*============================================================== 

meineZeichenkette2 = 'Dortmund'.

read table sortierteTabelle1
     with table key table_line = meineZeichenkette2
     into meineZeichenkette1.

write / meineZeichenkette1.

read table sortierteTabelle2
     with table key name = 'Hamburg' 
     into meineStadt1.        

write / meineStadt1-name.
write / meineStadt1-einwohnerzahl.
write / meineStadt1-bundesland.

*==============================================================
* Read table (Hash-Tabellen)
*============================================================== 

meineZeichenkette2 = 'Dortmund'.

read table hashedTable1
     with table key table_line = meineZeichenkette2
     into meineZeichenkette1.

write / meineZeichenkette1.

read table hashedTable2
     with table key name = 'Hamburg' 
     into meineStadt1.        

write / meineStadt1-name.
write / meineStadt1-einwohnerzahl.
write / meineStadt1-bundesland.

*==============================================================
* Read table mit beliebigen Feldern einer Struktur
*==============================================================     

read table standardtabelle2 
           with key einwohnerzahl = 170000
           into meineStadt1.

* Vorherige Sortierung standardtabelle2 nach einwohnerzahl

sort standardtabelle2 by einwohnerzahl.

read table standardtabelle2 
           with key einwohnerzahl = 170000
           into meineStadt1
           binary search.

*==============================================================
* Schleife über alle Zeilen einer internen Tabelle
*==============================================================   

loop at standardtabelle2 into meineStadt1.

  write / meineStadt1-name.
  write / meineStadt1-einwohnerzahl.
  write / meineStadt1-bundesland.      

endloop.

*==============================================================
* Schleife über ausgewählte Zeilen einer internen Tabelle
*==============================================================   

loop at standardtabelle2 into meineStadt1
                         where name = 'Neustadt' and
                               bundesland = 'Bayern'.

      write: / meineStadt1-name.
      write: / meineStadt1-einwohnerzahl.
      write: / meineStadt1-bundesland.      

endloop.