ABAP Keyword Documentation → ABAP - Reference → Data Interfaces and Communication Interfaces → Remote Function Call → CALL FUNCTION - RFC → CALL FUNCTION - STARTING NEW TASK → RECEIVE
RECEIVE - parameter_list
Other versions: 7.31 | 7.40 | 7.54
Syntax
... [IMPORTING p1 = a1 p2 = a2 ...]
[TABLES t1 = itab1 t2 = itab2 ...]
[CHANGING p1 = a1 p2 = a2 ...]
[EXCEPTIONS [exc1 = n1 exc2 = n2 ...]
[system_failure = ns [MESSAGE smess]]
[communication_failure = nc [MESSAGE cmess]]
[OTHERS = n_others]].
Effect
These additions are used to pass the specified formal parameters of the function module specified in
func
to the actual parameter of the callback routine in the calling program. The meaning of the additions is the same as in
synchronous RFC, but values are only adopted by actual parameters specified using CHANGING
, not passed on by them.
The excepttion handling conforms with the asynchronous call.
-
If the
EXCEPTIONS
addition is not specified in the parameter list ofCALL FUNCTION
, class-based exception handling is activated. The callback routine must contain aRECEIVE
statement and this statement must not have anEXCEPTIONS
addition. -
If the
EXCEPTIONS
addition is specified in the call, non-class-based exception handling is activated and the addition must also be specified inRECEIVE
.
The correct usage of EXCEPTIONS
is checked at runtime. In class-based exception
handling, the RECEIVE
statement can be executed in a
TRY
block, to handle any class-based exceptions of the call. In non-class-based exception handling, the non-class-based exceptions are assigned return codes.
The same exceptions can occur as in synchronous
RFC. This means exceptions that are defined in the interface of the function module and the predefined
exceptions of the RFC interface. If a non-class-based exception occurs, RECEIVE
sets the content of sy-subrc
to 0.
Notes
- Class-based exceptions cannot be propagated out of a callback routine. They must be handled within the callback routine.
-
CALL FUNCTION
andRECEIVE
are currently independent of each other as far as the additionEXCEPTIONS
is concerned. This changes when class-based exceptions are introduced. For this reason, we recommend that you use the additionEXCEPTIONS
in the same way forCALL FUNCTION
andRECEIVE
.