Customer-Exit (ABAP): Unterschied zwischen den Versionen
Aus MattWiki
Matt (Diskussion | Beiträge) K (Matt verschob die Seite Listing Customer-Exit (ABAP) nach Customer-Exit (ABAP)) |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Nachfolgend ein Listing eines Customer Exists, welcher für eine Query im SAP ABAP Backend erstellt wurde. | Nachfolgend ein Listing eines Customer Exists, welcher für eine Query im SAP ABAP Backend erstellt wurde. | ||
== Allgemeines == | |||
* Customer-Exits werden in der Systemtabelle RSZGLOBV gespeichert (Siehe auch [[Tabellen (SAP BW)]]) | |||
* Der Name der Variable wird in Spalte VNAM gespeichert | |||
* Für Customer Exits für DTP-Filter und Berechtigungsvariablen muss der Code in I_STEP = 0 implementiert werden | |||
Anders gesagt: Wenn es kein Variablenbild gibt, werden die anderen I_STEPs nicht durchlaufen | |||
* Für Customer-Exits in DTP-Variablenauswahl muss der Typ Einzelwert sein und der Eingabetyp "Obligatorisch mit Initial" | |||
== Parameter von Customer Exits == | |||
* I_VNAM enthält bei I_STEP 1 und I_STEP 2 den Namen der Customer Exit Variable | * 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 | * Wenn der Durchlauf mit I_STEP = 3 läuft, ist I_VNAM leer | ||
Zeile 8: | Zeile 17: | ||
* 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. | * 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. | ||
== Anlegen == | |||
# BW Modeling Tools öffnen | |||
# Zu Merkmal navigieren / Merkmal suchen | |||
# Rechtsklick auf Merkmal | |||
# Variable erstellen | |||
# Code erstellen | |||
Die Variablen werden im Repository entweder in der InfoArea des Merkmals selbst oder im Abschnitt NODESNOTCONNECTED abgelegt. | |||
== Listing == | |||
<syntaxhighlight lang="abap"> | <syntaxhighlight lang="abap"> |
Aktuelle Version vom 17. Juni 2019, 13:03 Uhr
Nachfolgend ein Listing eines Customer Exists, welcher für eine Query im SAP ABAP Backend erstellt wurde.
Allgemeines
- Customer-Exits werden in der Systemtabelle RSZGLOBV gespeichert (Siehe auch Tabellen (SAP BW))
- Der Name der Variable wird in Spalte VNAM gespeichert
- Für Customer Exits für DTP-Filter und Berechtigungsvariablen muss der Code in I_STEP = 0 implementiert werden
Anders gesagt: Wenn es kein Variablenbild gibt, werden die anderen I_STEPs nicht durchlaufen
- Für Customer-Exits in DTP-Variablenauswahl muss der Typ Einzelwert sein und der Eingabetyp "Obligatorisch mit Initial"
Parameter von Customer Exits
- 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.
Anlegen
- BW Modeling Tools öffnen
- Zu Merkmal navigieren / Merkmal suchen
- Rechtsklick auf Merkmal
- Variable erstellen
- Code erstellen
Die Variablen werden im Repository entweder in der InfoArea des Merkmals selbst oder im Abschnitt NODESNOTCONNECTED abgelegt.
Listing
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 = 'VAL_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_PLANT'.
IF sy-subrc = 0.
IF loc_var_range-low = 'ITALIEN'.
RAISE EXCEPTION.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.