SAP NetWeaver AS ABAP Release 740, ©Copyright 2014 SAP AG. All rights reserved.
ABAP Keyword Documentation → ABAP − Reference → Calling and leaving program units → Calling Processing Blocks → Calling Procedures → CALL FUNCTION →
CALL FUNCTION - parameter_list
Syntax
... [EXPORTING p1 = a1 p2 = a2 ...]
[IMPORTING p1 = a1 p2 = a2 ...]
[TABLES t1 = itab1 t2 = itab2 ...]
[CHANGING p1 = a1 p2 = a2 ...]
[EXCEPTIONS [exc1 = n1 exc2 = n2 ...]
[error_message = n_error]
[OTHERS = n_others] ].
Extras:
1. ... EXPORTING p1 = a1 p2 = a2 ...
2. ... IMPORTING p1 = a1 p2 = a2 ...
3. ... TABLES t1 = itab1 t2 = itab2 ...
4. ... CHANGING p1 = a1 p2 = a2 ...
5. ... EXCEPTIONS exc1 = n1 exc2 = n2 ... OTHERS = n_others
6. ... EXCEPTIONS ... error_message = n_error ...
Effect
With the exception of the EXCEPTIONS addition, these additions assign the actual parameters a1, a2, ... to the formal parameters p1, p2, ... or t1, t2, ... of the parameter interface of the function module in func. All data objects whose data type matches the typing of the appropriate formal parameter can be specified as actual parameters. Each formal parameter assumes all the properties of the actual parameter assigned to it when it is called. Non-class-based exceptions can be handled using the addition EXCEPTIONS. The order of the additions is fixed.
A handleable exception is raised whenever a formal parameter is incorrect and the name of the function
module is specified by a constant or as a character literal. Unlike in method calls, static checks are
performed only by the extended program check and not by the syntax check. If the name of the function module is specified by a variable, the specification of an incorrect formal parameter is ignored at runtime.
... EXPORTING p1 = a1 p2 = a2 ...
Effect
The addition EXPORTING assigns actual parameters to the input parameters of the called function module. The syntax and semantics of these additions are the same as in method calls.
a1, a2, ... are general expression positions. In other words, functions and expressions can be passed as actual parameters, alongside data objects. Special rules apply in this case. Unlike in method calls, types cannot be specified generically (#) when a constructor expression is specified. This is because the typing of the parameters is not determined until runtime.
Note
No substring access is possible after an actual parameter
of type string or xstring specified after EXPORTING.
... IMPORTING p1 = a1 p2 = a2 ...
Effect
The addition IMPORTING assigns actual parameters to the output parameters of the called function module. The syntax and meaning of this addition are the same as in
method calls, but it is not possible to specify
writable expressions.
... TABLES t1 = itab1 t2 = itab2 ...
Effect
With the addition TABLES, internal tables itab1,
itab2, ... must be assigned to all non-optional table parameters t1,
t2, ... of the called function module. For itab1, itab2, ... , only
standard tables can be specified. The data is passed using a reference (with the exception of
RFC). If a specified table itab1, itab2, ... has a
header line, this is also
passed. Otherwise, the header line of the corresponding table parameter t1, t2, ... is initial after the call.
... CHANGING p1 = a1 p2 = a2 ...
Effect
The addition CHANGING assigns actual parameters to the input/output parameters of the called function module. The syntax and semantics of these additions are the same as in
method calls.
... EXCEPTIONS exc1 = n1 exc2 = n2 ... OTHERS = n_others
Effect
You can use EXCEPTIONS to assign return values to non-class-based exceptions exc1 exc2 ... declared in the parameter interface. Each exception exc1 exc2 ... that the caller wants to handle must be assigned to a directly specified number n1 n2 .... You can specify all numbers between 0 and 65535. The behavior outside of this range is undefined.
By specifying OTHERS as the last item after EXCEPTIONS, you can assign all exceptions not listed explicitly in exc1 exc2... a common return code, by assigning a number n_others. You can assign the same return code to different exceptions (including OTHERS). The behavior when an exception is raised is as follows:
If no exception is raised, a call sets sy-subrc to 0.
If class-based exceptions are declared in the parameter interface, the addition EXCEPTIONS cannot be specified in the call.
When a function module is called, the extended program check responds only if a specified exception is not declared in its interface. This is not checked while the program is being executed.
Notes
... EXCEPTIONS ... error_message = n_error ...
Effect
If the predefined exception error_message is specified after EXCEPTIONS, all messages
during function module processing are affected as follows:
Notes
Example
Calling the function module GUI_DOWNLOAD for saving the content of an internal table to a file on the current presentation server. The name of the function module is specified as an untyped character literal, which is the most frequent type of specification in static parameter assignment.
CONSTANTS path TYPE string VALUE `c:\temp\`.
DATA: line TYPE c LENGTH 80,
text_tab LIKE STANDARD TABLE OF line,
fleng TYPE i.
...
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = path && `text.txt`
filetype = 'ASC'
IMPORTING
filelength = fleng
TABLES
data_tab = text_tab
EXCEPTIONS
file_write_error = 1
invalid_type = 2
no_authority = 3
unknown_error = 4
OTHERS = 10.
CASE sy-subrc.
WHEN 1.
...
...
ENDCASE.