Listing 7.15  ZPTB00_OBJ_BTA_LOAD  Laden von Geschftsvorfllen
FUNCTION zptb00_obj_bta_load.
*"----------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     REFERENCE(I_BOOKED) TYPE  ZPTB00_DTE_BTA_BOOKED 
*"        DEFAULT '1'
*"  EXPORTING
*"     REFERENCE(E_TAB_BTA) TYPE  ZPTB00_TTY_BTA
*"  EXCEPTIONS
*"      FAILED
*"----------------------------------------------------
  DATA:
* db
    l_tab_bta_header   TYPE STANDARD TABLE OF 
      zptb00_btaheader,
    l_tab_bta_item     TYPE STANDARD TABLE OF 
      zptb00_btaitem,
* local
    l_str_bta TYPE zptb00_str_bta.
  FIELD-SYMBOLS:
* db
    <l_str_bta_header> TYPE zptb00_btaheader,
    <l_str_bta_item>   TYPE zptb00_btaitem.

* read the header data
  SELECT * FROM zptb00_btaheader INTO TABLE 
    l_tab_bta_header
  WHERE booked = i_booked.
  IF sy-dbcnt = 0.
    RAISE failed.
  ENDIF.

* read the item data
* abap statement "for all entries" only works up to ca. 
* 1700 entries so we better loop
  LOOP AT l_tab_bta_header ASSIGNING 
   <l_str_bta_header>.
    MOVE-CORRESPONDING <l_str_bta_header> TO l_str_bta.
    SELECT * FROM  zptb00_btaitem INTO TABLE 
   l_tab_bta_item
    WHERE header_id = <l_str_bta_header>-id.
    l_str_bta-tab_item = l_tab_bta_item.
    APPEND l_str_bta TO e_tab_bta.
  ENDLOOP.
  IF sy-dbcnt = 0.
    RAISE failed.
  ENDIF.

ENDFUNCTION.