Function Module Interfaces
The parameter interface of a
function module is defined in the Function Builder. It includes the definition of interface parameters
and the specification of exceptions that can be triggered by a function module. The Function Builder
automatically generates comment lines below the
FUNCTION statement in the source code of the function module, which represent the interface of the function module with the following syntax:
Syntax
... [IMPORTING parameters]
[EXPORTING parameters]
[CHANGING parameters]
[TABLES table_parameters]
[{RAISING|EXCEPTIONS} exc1 exc2 ...]
The syntax and semantics of IMPORTING,
EXPORTING, CHANGING,
RAISING, and EXCEPTIONS mainly correspond to
the definition of method interfaces with
[CLASS-]METHODS. The additional option of defining table parameters using TABLES is obsolete.
Interface parameters
The interface parameters are defined on the relevant tab pages in the Function Builder.
- IMPORTING parameters are input parameters. When the
function module is called, a suitable actual parameter must be specified for every non-optional input
parameter. The content of the actual parameter is passed to the input parameter when the call is made.
The content of an input parameter for which 'pass by reference' is defined cannot be changed in the function module.
- EXPORTING parameters are output parameters. When the
function module is called, a suitable actual parameter can be specified for every output parameter.
The content of an output parameter that is defined for 'pass by value' is transferred to the actual
parameter if the function module is completed without errors. An output parameter that is defined for pass by reference is not initialized when the function module is called.
- CHANGING parameters are input and output parameters.
When the function module is called, a suitable actual parameter must be specified for every non-optional
input or output parameter. When the function module is called, the content of the actual parameter is
passed to the input/output parameter, and when the function module is completed, the content of the input/output parameter is passed to the actual parameter.
- TABLES parameters are table parameters. Table parameters are obsolete CHANGING parameters that are typed as
standard tables with a
header line. If an internal table without a header line or a
table body is passed as an actual parameter
to a formal parameter of this type, an empty local header line is generated in the function module.
If an internal table with a header line is used as an actual parameter, both the table body and the
header line are passed to the function module. Pass by value is not possible in formal parameters defined
using TABLES. Formal parameters defined with
TABLES can be replaced by formal parameters defined with CHANGING.
A local work area can be created for the internal table in the function module by using the addition
LIKE LINE OF itab of the DATA statement.
Exceptions
The exception of a function module are defined on the Exceptions tab page in the Function Builder. Here you can select exception classes to define whether
class-based exceptions are declared or
non-class-based exception are defined. Class-based exceptions
are represented in the above syntax by RAISING, and non-class-based exceptions are represented by EXCEPTIONS.
- The addition RAISING is used to declare class-based
exceptions that can be propagated from the function module to the caller. Exceptions in the categories
CX_STATIC_CHECK and CX_DYNAMIC_CHECK must be explicitly declared, otherwise a propagation can lead to
an interface violation. A violation of the interface leads to the treatable exception CX_SY_NO_HANDLER.
Exceptions of the category CX_NO_CHECK are implicitly always declared. The declaration of exceptions
of the category CX_STATIC_CHECK is statically checked in the syntax check. For exceptions of the category
CX_DYNAMIC_CHECK, the check is not performed until runtime. In a function module in which class-based
exceptions are declared with the RAISING addition, the
statement CATCH SYSTEM-EXCEPTIONS
cannot be used. Instead, the relevant treatable exceptions should be handled in a TRY control structure.
- The addition EXCEPTIONS is used to define a list of
non-class-based exceptions that can be triggered in the function module using the statements
RAISE or MESSAGE RAISING.
Exceptions defined in this way - as with formal parameters - are bound to the function module and cannot
be propagated. If an exception of this type is triggered in a function module, and no return value has
been assigned to it with the homonymous addition EXCEPTIONS
of the CALL FUNCTION statement when the call was made, this leads to a runtime error.
Note
For new developments after release 6.10, SAP recommends that you work with class-based exceptions that are independent of the function module.