Dependencies for Variables of Type Customer Exit
Use
If you execute a query containing variables with the customer exit replacement path (and these variables are filled depending on input-ready variables) the variable exit will sometimes not run, or incorrect data will be selected. To avoid this, you can control the dependencies using parameter I_STEP.
Features
Enhancement RSR00001 (Customer Exit Global Variables in Reporting; transaction SMOD; component or function module EXIT_SAPLRRS0_001) is called several times during the execution of the report. Parameter I_STEP dictates when the enhancement is called.
The following values are valid for I_STEP:
- I_STEP = 1
Call is made directly before variable entry.
- I_STEP = 2
Call is made directly after variable entry. This step is only executed if the same variable is not input-ready and could not be filled for I_STEP = 1.
- I_STEP = 3
In this call, you can check the values of the variables. When an exception (RAISE) is triggered, the Variables screen appears again. I_STEP = 2 is then also called again.
- I_STEP = 0
The enhancement is not called from the Variables screen. The call can originate from the authorization check or from the monitor.
Values of Other Variables
When calling enhancement RSR00001 (Customer-Exit Global Variables in Reporting), the system submits the current values for the other variables in table I_T_VAR_RANGE. The table type is RRS0_T_VAR_RANGE. Row type RRS0_S_VAR_RANGE references structure RRRANGEEXIT.
This structure has the following fields:
| Field | Description |
|---|---|
|
VNAM |
Variable name |
|
IOBJNM |
InfoObject name |
|
SIGN |
(I)ncluding [] or (E)xcluding ][ |
|
OPT |
Operators: EQ =, BT [], LE <=, LT <, GE >=, GT >, CP, and so on |
|
LOW |
Characteristic value |
|
HIGH |
Characteristic value of upper limit for intervals or node InfoObject for hierarchy nodes |
Activities
Any variable to be filled depending on an input-ready variable must never be filled in step I_STEP = 1. You have not yet entered values for the input-ready variables. No variables have been entered yet.
By inserting the following statement, you can force execution of the variable in I_STEP = 2 instead of I_STEP = 1.
CASE I_VNAM.
…
IF I_STEP <> 2.
RAISE no_processing.
ENDIF.
…
DATA: L_S_RANGE TYPE RSR_S_RANGESID.
DATA: L_S_VAR_RANGE TYPE RRRANGEEXIT.
CASE I_VNAM.
WHEN 'CUMMONTH'.
IF I_STEP = 2. "after the popup
READ TABLE I_T_VAR_RANGE INTO L_S_VAR_RANGE WITH KEY VNAM = 'MONTH'.
IF SY-SUBRC = 0.
CLEAR L_S_RANGE.
L_S_RANGE-LOW = LOC_VAR_RANGE-LOW(4)."low value, for example, 200601
L_S_RANGE-LOW+4(2) = '01'.
L_S_RANGE-HIGH = LOC_VAR_RANGE-LOW. "high value = input
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'BT'.
APPEND L_S_RANGE TO E_T_RANGE.
ENDIF.
ENDIF.
ENDCASE.