Dependencies for Variables of Type Customer Exit [SAP Help]

leniz發表於2009-05-25

Use

If you execute a query that contains variables with the customer exit replacement path (and these variables are filled depending on input-ready variables), sometimes, the variable exit is not run or incorrect data is selected. To avoid this, you can control the dependencies using the I_STEP parameter.

Features

The enhancement RSR00001 (BI: Enhancements for Global Variables in Reporting; transaction SMOD; component or function module EXIT_SAPLRRS0_001) is called several times during the execution of the report. The I_STEP parameter specifies 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 variable screen appears again. I_STEP = 2 is then also called again.

      I_STEP = 0

The enhancement is not called from the variable screen. The call can originate from the authorization check or from the monitor.

Values of Other Variables

When the enhancement RSR00001 is called (BI: Enhancements for Global Variables in Reporting), the system passes the current values of the other variables in table I_T_VAR_RANGE. The table type is RRS0_T_VAR_RANGE, and 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 that is 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; variable entry is still to be completed.

By inserting the following statement, you can force the variable to be executed in I_STEP = 2 and not in I_STEP = 1.

CASE I_VNAM.

IF I_STEP <> 2.

RAISE no_processing.

ENDIF.

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.

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/554557/viewspace-604040/,如需轉載,請註明出處,否則將追究法律責任。

相關文章