Listing 7.18  ZPTB00_OBJ_BTC_CHECK  Geschftsvorfall prfen
FUNCTION ZPTB00_OBJ_BTC_CHECK.
*"----------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             REFERENCE(I_STR_BTA) TYPE  
*"               ZPTB00_STR_BTA
*"       EXCEPTIONS
*"              FAILED
*"----------------------------------------------------
  DATA:
   l_tab_dd07v LIKE STANDARD TABLE OF dd07v,
   l_str_currency TYPE tcurc,
   l_str_quantity TYPE t006.
  FIELD-SYMBOLS:
    <l_str_item> TYPE zptb00_btaitem.

************* check header
* check bp_id
  IF i_str_bta-bp_id IS INITIAL.
    RAISE failed.
  ENDIF.

* check bttype
  CALL FUNCTION 'DD_DOMVALUES_GET'
    EXPORTING
      domname              = 'ZPTB00_DOM_BTA_BTTYPE'
*         TEXT                 = ' '
*         LANGU                = ' '
*         BYPASS_BUFFER        = ' '
*       IMPORTING
*         RC                   =
    TABLES
      dd07v_tab            = l_tab_dd07v
    EXCEPTIONS
      wrong_textflag       = 1
      OTHERS               = 2.
  IF sy-subrc <> 0.
    RAISE failed.
  ENDIF.
  READ TABLE l_tab_dd07v WITH KEY domvalue_l = 
    i_str_bta-bttype TRANSPORTING NO FIELDS.
  IF sy-subrc <> 0.
    RAISE failed.
  ENDIF.

* check btdate
  IF i_str_bta-btdate IS INITIAL.
    RAISE failed.
  ENDIF.

************* check item
* check tab_item
  IF i_str_bta-tab_item IS INITIAL.
    RAISE failed.
  ENDIF.
  LOOP AT i_str_bta-tab_item ASSIGNING <l_str_item>.

* check pr_id
    CALL FUNCTION 'DD_DOMVALUES_GET'
      EXPORTING
        domname              = 'ZPTB00_DOM_BTA_PR_ID'
*         TEXT                 = ' '
*         LANGU                = ' '
*         BYPASS_BUFFER        = ' '
*       IMPORTING
*         RC                   =
      TABLES
        dd07v_tab            = l_tab_dd07v
      EXCEPTIONS
        wrong_textflag       = 1
        OTHERS               = 2.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.
    READ TABLE l_tab_dd07v WITH KEY domvalue_l = 
      <l_str_item>-pr_id TRANSPORTING NO FIELDS.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.

* check pstype
    CALL FUNCTION 'DD_DOMVALUES_GET'
      EXPORTING
        domname              = 'ZPTB00_DOM_BTA_PSTYPE'
*         TEXT                 = ' '
*         LANGU                = ' '
*         BYPASS_BUFFER        = ' '
*       IMPORTING
*         RC                   =
      TABLES
        dd07v_tab            = l_tab_dd07v
      EXCEPTIONS
        wrong_textflag       = 1
        OTHERS               = 2.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.
    READ TABLE l_tab_dd07v WITH KEY domvalue_l = 
      <l_str_item>-pstype TRANSPORTING NO FIELDS.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.

* check wh_id
    CALL FUNCTION 'DD_DOMVALUES_GET'
      EXPORTING
        domname              = 'ZPTB00_DOM_BTA_WH_ID'
*         TEXT                 = ' '
*         LANGU                = ' '
*         BYPASS_BUFFER        = ' '
*       IMPORTING
*         RC                   =
      TABLES
        dd07v_tab            = l_tab_dd07v
      EXCEPTIONS
        wrong_textflag       = 1
        OTHERS               = 2.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.
    READ TABLE l_tab_dd07v WITH KEY domvalue_l = 
      <l_str_item>-wh_id TRANSPORTING NO FIELDS.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.

* check currency
    SELECT SINGLE * FROM tcurc INTO l_str_currency 
      WHERE waers = <l_str_item>-currency.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.

* check unit
    SELECT SINGLE * FROM t006 INTO l_str_quantity WHERE 
      msehi = <l_str_item>-unit.
    IF sy-subrc <> 0.
      RAISE failed.
    ENDIF.
  ENDLOOP.

ENDFUNCTION.