ABAP Keyword Documentation → ABAP − Reference → Calling and leaving program units → Calling Processing Blocks → Calling Procedures
CALL FUNCTION
Other versions: 7.31 | 7.40 | 7.54
Syntax Forms
General Function Module Call
1. CALL FUNCTION func {
parameter_list
| parameter_tables }.
Registration of an Update Task Function Module
2. CALL FUNCTION update_function IN UPDATE TASK
[EXPORTING p1 = a1 p2 = a2 ...]
[TABLES t1 = itab1 t2 = itab2 ...].
Remote Function Call
3. CALL FUNCTION... DESTINATION ...
Effect
Calls or registers a function module. Static and dynamic function module calls have no syntatic differences. The function module is always specified by a data object and the name of the called function module not determined until runtime.
System Fields
The system field sy-subrc
is set to 0 when a function module is called. If a
non-class-based exception is raised that was
handled by the assignment of a value, sy-subrc
is set to this value. After
the registration of an update function module using CALL FUNCTION ... IN UPDATE TASK
, sy-subrc
is undefined.
Notes
-
Unlike in method calls, there are no different syntax variants for static calls and dynamic calls of function modules. They can, however, be distinguished as follows
- In static function module calls, a known static function module is specified as a character literal or as a constant and the parameter is passed statically. This static data is evaluated by tools like the Extended Program Check or the where-used list.
- In a dynamic function module call, the name of the function module is specified in a variable and the parameter is passed dynamically. This is possible in general function module calls.
-
CALL CUSTOMER-FUNCTION
is another variant for calling obsolete function module exits.
Security Note
If the name of a program unit is specified dynamically when it is called, and this name is passed to a program from outside, the result is a serious security risk. Any names passed to a program from outside must be checked thoroughly before being used in calls. The system class CL_ABAP_DYN_PRG, for example, can be used to do this. See Dynamic Calls.