Listing 7.17  ZPTB00_OBJ_BTA_SAVE  Geschftsvorfall abspeichern
FUNCTION zptb00_obj_bta_save.
*"----------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     REFERENCE(I_STR_BTA) TYPE  ZPTB00_STR_BTA 
*"       OPTIONAL
*"     REFERENCE(I_TAB_BTA) TYPE  ZPTB00_TTY_BTA 
*"       OPTIONAL
*"  EXCEPTIONS
*"      FAILED
*"----------------------------------------------------
  DATA:
* Structure like header and item table
    l_tab_bta       TYPE zptb00_tty_bta,
    l_str_btaheader TYPE zptb00_btaheader.
  FIELD-SYMBOLS:
    <l_str_bta>     TYPE zptb00_str_bta.

  l_tab_bta = i_tab_bta.
  IF NOT i_str_bta IS INITIAL.
    APPEND i_str_bta TO l_tab_bta.
  ENDIF.

* loop through all the data for saving
  LOOP AT i_tab_bta ASSIGNING <l_str_bta>.
* Get header data and write to database table
    MOVE-CORRESPONDING <l_str_bta> TO l_str_btaheader.
    MODIFY zptb00_btaheader FROM l_str_btaheader.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.

    DELETE FROM zptb00_btaitem WHERE header_id = 
      l_str_btaheader-id.
    MODIFY zptb00_btaitem FROM TABLE 
      <l_str_bta>-tab_item.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.
  ENDLOOP.

ENDFUNCTION.