Customer-Exit (ABAP)
Aus MattWiki
Nachfolgend ein Listing eines Customer Exists, welcher für eine Query im SAP ABAP Backend erstellt wurde.
Hinweise:
- I_VNAM enthält bei I_STEP 1 und I_STEP 2 den Namen der Customer Exit Variable
- Wenn der Durchlauf mit I_STEP = 3 läuft, ist I_VNAM leer
- Für RAISE EXCEPTION muss eine Exception im Ausnahmen-Register des Funktionsbausteins definiert werden
- e_t_range enthält die Rückgabewerte des Customer Exists in Form einer RRRANGE-Tabelle.
- i_t_var_range enthält alle Input-Werte aus allen Variablen. Zum Feststellen des Werts einer bestimmten Variable muss man im vnam-Feld der Tabelle nach dem gewünschten Variablennamen suchen.
FUNCTION zqry_custex05.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" REFERENCE(I_VNAM) TYPE RSZGLOBV-VNAM
*" REFERENCE(I_VARTYP) TYPE RSZGLOBV-VARTYP
*" REFERENCE(I_IOBJNM) TYPE RSZGLOBV-IOBJNM
*" REFERENCE(I_S_COB_PRO) TYPE RSD_S_COB_PRO
*" REFERENCE(I_S_RKB1D) TYPE RSR_S_RKB1D
*" REFERENCE(I_PERIV) TYPE RRO01_S_RKB1F-PERIV
*" REFERENCE(I_T_VAR_RANGE) TYPE RRS0_T_VAR_RANGE
*" REFERENCE(I_STEP) TYPE I
*" EXPORTING
*" REFERENCE(E_T_RANGE) TYPE RSR_T_RANGESID
*" REFERENCE(E_CHECK_AGAIN) TYPE RS_BOOL
*"----------------------------------------------------------------------
DATA: ls_range TYPE rsr_s_rangesid,
loc_var_range TYPE rrrangeexit.
CASE i_vnam.
" Default value for CalDay/Year
WHEN 'VAR_CALDAY_DEF'.
IF i_step = 1.
ls_range-low = sy-datum.
ls_range-sign = 'I'.
ls_range-opt = 'EQ'.
APPEND ls_range TO e_t_range.
ENDIF.
" Calculate year out of CALDAY
" Implemented in i_step = 2 in order to do it after user has entered a CALDAY
WHEN 'VAR_FISCYEAR'.
IF i_step = 2.
READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZQRY_P05_CALDAY_DEF'.
ls_range-low = loc_var_range-low(4).
ls_range-sign = 'I'.
ls_range-opt = 'EQ'.
APPEND ls_range TO e_t_range.
ENDIF.
ENDCASE.
" After all inputs are done and all customer exists have been processed
IF i_step = 3.
READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'VAR_P05_PLANT'.
IF sy-subrc = 0.
IF loc_var_range-low = 'ITALIEN'.
RAISE EXCEPTION.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.