Show TOC

Dependencies for Variables of Type Customer ExitLocate this document in the navigation structure

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.

Tip

In the following example, the current month is taken from an input-ready variable MONTH. This is then used to generate an interval that cumulates all months from January ('01') up to the current month. The customer exit variable CUMMONTH contains the interval as the value.

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.