Listing 7.21  ZPTB00_OBJ_DOC_SAVE  Buchungsbelege abspeichern
FUNCTION zptb00_obj_doc_save.
*"----------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     REFERENCE(I_STR_DOC) TYPE  ZPTB00_STR_DOC 
*"       OPTIONAL
*"     REFERENCE(I_TAB_DOC) TYPE  ZPTB00_TTY_DOC 
*"       OPTIONAL
*"  EXCEPTIONS
*"      FAILED
*"----------------------------------------------------

  DATA:
* Structure like header and item table
    l_tab_doc TYPE zptb00_tty_doc,
    l_str_docheader TYPE zptb00_docheader.
  FIELD-SYMBOLS:
    <l_str_doc>     TYPE zptb00_str_doc.

  l_tab_doc = i_tab_doc.
  IF NOT i_str_doc IS INITIAL.
    APPEND i_str_doc TO l_tab_doc.
  ENDIF.

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

    DELETE FROM zptb00_docitem WHERE header_id = 
      l_str_docheader-id.
    MODIFY zptb00_docitem FROM TABLE 
      <l_str_doc>-tab_item.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.
  ENDLOOP.

ENDFUNCTION.