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.