Listing 3.6  Der Quelltext des Programms ZPTB00_INTERNAL_TABLE_JUGGLER
REPORT zptb00_internal_table_juggler.
* Definition
TYPES:
  BEGIN OF str_address,
    street_and_number(40) TYPE c,
    zipcode_and_city(40) TYPE c,
  END OF str_address,
  BEGIN OF str_customer,
    name(80) TYPE c,
    address TYPE str_address,
  END OF str_customer.
DATA:
* Customer
  l_tab_customer TYPE STANDARD TABLE OF str_customer,
  l_str_customer TYPE str_customer.
* Fill some data
l_str_customer-name = 'John Miller'.
l_str_customer-address-street_and_number = 'Yorkstr. 3'.
l_str_customer-address-zipcode_and_city = '69120 Heidelberg'.
APPEND l_str_customer TO l_tab_customer.
l_str_customer-name = 'Linda Evens'.
l_str_customer-address-street_and_number = 'Yorkstr. 4'.
APPEND l_str_customer TO l_tab_customer.
l_str_customer-name = 'Robbie Bush'.
l_str_customer-address-street_and_number = 'Yorkstr. 5'.
APPEND l_str_customer TO l_tab_customer.
* Use loop to write all data to screen
LOOP AT l_tab_customer INTO l_str_customer.
  WRITE: l_str_customer-name, l_str_customer-address-    street_and_number. 
ENDLOOP.
* Read data of first customer into structure
READ TABLE l_tab_customer INDEX 1 INTO l_str_customer.
* Modify name
l_str_customer-name = 'Zeta Jones'.
* Write it back to first line of internal table
MODIFY l_tab_customer INDEX 1 FROM l_str_customer.
* Sort the table by the content of name column
SORT l_tab_customer BY name.
* Just to train the read statement
WRITE sy-uline AS LINE.
READ TABLE l_tab_customer INDEX 1 INTO l_str_customer.
WRITE: l_str_customer-name, l_str_customer-address-street_and_number.
READ TABLE l_tab_customer INDEX 2 INTO l_str_customer.
  WRITE: l_str_customer-name, l_str_customer-address-    street_and_number.
READ TABLE l_tab_customer INDEX 3 INTO l_str_customer.
  WRITE: l_str_customer-name, 
         l_str_customer-address-street_and_number.
* Actually, clearing l_tab_customer would be better
DELETE l_tab_customer FROM 1 TO 3.