Skip to content

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

Short Reference

Other versions: 7.31 | 7.40 | 7.54


... [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]].


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 of CALL FUNCTION, class-based exception handling is activated. The callback routine must contain a RECEIVE statement and this statement must not have an EXCEPTIONS addition.
  • If the EXCEPTIONS addition is specified in the call, non-class-based exception handling is activated and the addition must also be specified in RECEIVE.

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.


  • Class-based exceptions cannot be propagated out of a callback routine. They must be handled within the callback routine.
  • CALL FUNCTION and RECEIVE are currently independent of each other as far as the addition EXCEPTIONS is concerned. This changes when class-based exceptions are introduced. For this reason, we recommend that you use the addition EXCEPTIONS in the same way for CALL FUNCTION and RECEIVE.