Ansicht
Dokumentation
ABAPCALL_FUNCTION- - CALL FUNCTION-
BAL Application Log Documentation Vendor Master (General Section)This documentation is copyright by SAP AG.
CALL FUNCTION
Variant 1
CALL FUNCTION func.
Additions
Static Parameter Passing
1. ... EXPORTING
p1 = f1 ... pn = fn
2. ... IMPORTING
p1 = f1 ... pn = fn
3. ... TABLES
p1 = itab1 ... pn = itabn
4. ... CHANGING
p1 = f1 ... pn = fn
5. ... EXCEPTIONS except1 = rc1 ... exceptn = rcn
Dynamic Parameter Passing
6. ... PARAMETER-TABLE itab
7. ... EXCEPTION-TABLE itab
Effect
Calls the function module func; func can be a literal (static call) or a variable (dynamic call).
The name of the function module must be uppercase.
To edit function modules, choose
Tools → ABAP Workbench → Function Builder.
The assignment of parameters is by name (p1, p2, etc.), not by sequence.
To return from the function module, use the key word EXIT, unless EXIT occurs in a loop or a subroutine.
Return Value
SY-SUBRC = 0:
Function executed successfully.
SY-SUBRC <> 0:
An exception occurred in the function module (see EXCEPTIONS.
Notes
Please consult Data Area and Modularization Unit Organization documentation as well.
You can use a namespace prefix with function modules.
-
You can insert a function call in the ABAP
Editor by choosing Pattern and entering a function
func in the CALL FUNCTION field. The additions for the function are automatically included as well as the function call itself.
See Passing SY-REPID Not Allowed and SY-SUBRC Not Passed
Addition 1
... EXPORTING p1 = f1 ... pn = fn
Effect
EXPORTING passes fields, structures, or internal
tables to the function module. You must declare the parameters p1 ... pn in the function
interface as import parameters. When you call the function module, you must assign values to all import parameters that are not flagged in the interface definition as optional and do not have any default values.
Addition 2
... IMPORTING p1 = f1 ... pn = fn
Effect
IMPORTING passes fields, structures, or internal
tables from the function module back to the calling program. The parameters p1 ... pn must be declared as export parameters in the function interface.
Addition 3
... TABLES p1 = itab1 ... pn = itabn
Effect
TABLES passes references to internal tables.
The parameters p1 ... pn must be declared as table parameters in the function interface. When
you call the function module, you must assign values to all table parameters that are not flagged as optional in the interface definition.
Addition 4
... CHANGING p1 = f1 ... pn = fn
Effect
CHANGING passes fields, structures, or internal
tables to the function module and the changed values are returned. The parameters p1 ... pn
must be declared as CHANGING parameters in the function interface. When you call the function
module, you must assign values to all CHANGING parameters of the function module that are not flagged as optional in the interface definition and have no default values.
Addition 5
... EXCEPTIONS except1 = rc1 ...
exceptn = rcn
Effect
EXCEPTIONS lists the exceptions to be handled by the calling program itself. At the end of the exception list, you can use OTHERS to refer to all the remaining exceptions.
If one of the listed exceptions occurs, SY-SUBRC is set to the appropriate value rc (a numeric
literal!) and control passes back to the calling program. By specifying a return code, you can divide
the exceptions into classes. With the second form, without "=rc", SY-SUBRC is set to a value other than 0 if an exception occurs.
If the function module triggers an exception (with the statements RAISE
and MESSAGE ... RAISING) and the exception cannot be handled by the calling program itself, then:
-
the program is terminated with a runtime error during RAISE
-
the message is issued during MESSAGE ... RAISING
Note
The following EXCEPTIONS are predefined by the system and have a special meaning:
-
OTHERS: Covers all user-defined exceptions in the called function module.
-
ERROR_MESSAGE: This exception instructs the system to ignore S messages, I messages, and W messages
until return from the function module (although they still appear in the log during background processing).
When an E message or an A message occurs, the called function module terminates, as if the exception
ERROR_MESSAGE has been triggered. If an A message is handled using ERROR_MESSAGE, the ROLLBACK WORK statement is triggered implicitly.
Example
DATA: WA_SFLIGHT TYPE SFLIGHT,
P_LOSS LIKE SFLIGHT-PAYMENTSUM,
P_REVENUE LIKE SFLIGHT-PRICE,
P_CARRID LIKE SFLIGHT-CARRID.
...
SELECT * FROM SFLIGHT INTO WA_SFLIGHT WHERE CARRID = P_CARRID ... .
CALL FUNCTION 'CALCULATE_REVENUE_LOSS'
EXPORTING
PAYMENTSUM = WA_SFLIGHT-PAYMENTSUM
SEATSOCC = WA_SFLIGHT-SEATSOCC
PRICE = WA_SFLIGHT-PRICE
IMPORTING
LOSS = P_LOSS
REVENUE = P_REVENUE
EXCEPTIONS
OTHERS = 1.
...
ENDSELECT.
...
Example
TABLES SFLIGHT.
DATA: ITAB TYPE STANDARD TABLE OF BCAXX WITH
NON-UNIQUE DEFAULT KEY INITIAL SIZE 10.
P_YEAR ... .
CALL FUNCTION 'FILL_SEATTAB'
EXPORTING
YEAR = P_YEAR
TABLES
SEATTAB = ITAB
EXCEPTIONS
NO_ENTRY = 1
OTHERS = 2.
CASE SY-SUBRC.
WHEN 1. ...
WHEN 2. ...
ENDCASE.
...
Addition 6
... PARAMETER-TABLE itab
Effect
With this addition, the interface of a function module can be dynamically supplied with parameters. The addition PARAMETER-TABLE excludes parallel use of the static additions 1 through 5.
The parameter table itab must be a sorted table of the table type ABAP_FUNC_PARMBIND_TAB or of
the line type ABAP_FUNC_PARMBIND. These types are defined in the type group ABAP in the ABAP dictionary. The table has the following four columns:
-
NAME For the name of the formal paramter
-
KIND for the type of parameter passing
-
VALUE of the type REF TO DATA for the value of the actual parameter
-
TABLES_WA of the type REF TO DATA for the value of the table work area, if a TABLES parameter is passed.
The columns NAME and KIND form the unique table key. For each non-optional parameter, you must fill exactly one line of the internal table.
In NAME, you must specify the name of the parameter, and in KIND the parameter type. For the parameter type, you must use solely the following constants from the type group ABAP:
Modules>
-
ABAP_FUNC_EXPORTING for EXPORTING parameters
-
ABAP_FUNC_IMPORTING for IMPORTING parameters
-
ABAP_FUNC_CHANGING for CHANGING parameters
-
ABAP_FUNC_TABLES for TABLES parameters
The descriptions correspond to the caller's view. If the specified and actual parameter types do not correspond to each other, the system initiates, at runtime, an exception that cannot be handled.
For the value of the actual parameter, the reference in the column VALUE of the table line must point to a data object that contains the required value. For this you can use the command GET REFERENCE OF f INTO g.
If internal tables are passed to the TABLES parameter of a function module, that is, the column
KIND contains the constant ABAP_FUNC_TABLES, the reference in the column VALUE must point to the table
body of the internal table. In addition to the table body, you can pass on a reference to a table work
area suitable for the type in the column TABLES_WA. This work area fills the header line of the formal
parameter TABLES in the function module. In this way, it is possible, as in the static case,
to pass internal tables with the header line, that is, table body and header line, to the TABLES parameter.
Example
type-pools ABAP.
data NAME type STRING value `ABAP_DOCU_SHOW`.
data PARA_TAB type ABAP_FUNC_PARMBIND_TAB.
data PARA_LINE like line of PARA_TAB.
data AREA(4) type C.
data OBJECT(30) type C.
AREA = 'ABAP'.
PARA_LINE-NAME = 'AREA'.
PARA_LINE-KIND = ABAP_FUNC_EXPORTING.
get reference of AREA into PARA_LINE-VALUE.
append PARA_LINE to PARA_TAB.
OBJECT = 'CLASS'.
PARA_LINE-NAME = 'NAME'.
PARA_LINE-KIND = ABAP_FUNC_EXPORTING.
get reference of OBJECT into PARA_LINE-VALUE.
append PARA_LINE to PARA_TAB.
call function NAME
parameter-table PARA_TAB.
In this example, the function module ABAP_DOCU_SHOW is called dynamically in full form, whereby its IMPORTING parameters AREA and NAME are supplied with data.
Addition 7
... EXCEPTION-TABLE itab
Effect
With this addition, the classic exceptions of the function module can be handled dynamically. The addition EXCEPTION-TABLE excludes simultaneous use of static addition 5.
The exception table itab must be a hash table of the table type ABAP_FUNC_EXCPBIND_TAB or of
the line type ABAP_FUNC_EXCPBIND. These types are defined in the type group ABAP in the ABAP dictionary. The table has the following three columns:
-
NAME for the name of the exception
-
VALUE of type I for the value to be assigned to SY-SUBRC
-
MESSAGE of the type REF TO DATA. This column is current ly not required.
The column NAME is the unique table key. For each exception, exactly one line of the internal table
can be filled. Here, the component VALUE is assigned the numeric value that should be in SY-SUBRC after initiation of the exception.
Example
type pools ABAP.
data NAME type STRING value `READ_SPFLI_INTO_TABLE`.
data PARA_TAB type ABAP_FUNC_PARMBIND_TAB.
data PARA_LINE like line of PARA_TAB.
data EXCP_TAB type ABAP_FUNC_EXCPBIND_TAB.
data EXCP_LINE like line of EXCP_TAB.
data CARRIER type SPFLI-CARRID.
data JTAB type SPFLI_TAB.
CARRIER = 'XYZ'.
PARA_LINE-NAME = 'ID'.
PARA_LINE-KIND = ABAP_FUNC_EXPORTING.
get reference of CARRIER into PARA_LINE-VALUE.
append PARA_LINE to PARA_TAB.
PARA_LINE-NAME = 'ITAB'.
PARA_LINE-KIND = ABAP_FUNC_IMPORTING.
get reference of JTAB into PARA_LINE-VALUE.
append PARA_LINE to PARA_TAB.
EXCP_LINE-NAME = 'NOT_FOUND'.
EXCP_LINE-VALUE = 1.
insert EXCP_LINE into table EXCP_TAB.
EXCP_LINE-NAME = 'OTHERS'.
EXCP_LINE-VALUE = 4.
insert EXCP_LINE into table EXCP_TAB.
call function NAME
parameter-table
PARA_TAB
exception-table
EXCP_TAB.
case SY-SUBRC.
when 1.
message id SY-MSGID type SY-MSGTY number SY-MSGNO.
when 2.
message E888(SABAPDOCU) with 'Error in function module'.
endcase.
In this example, the function module READ_SPFLI_INTO_TABLE is called in full form, whereby its exceptions are handled via the internal table EXCP_TAB.
Exceptions
Catchable Exceptions
-
Cause: The called function is known but not active.
Runtime Error: CALL_FUNCTION_NOT_ACTIVE -
Cause: The called function is unknown.
Runtime Error: CALL_FUNCTION_NOT_FOUND
-
Cause: The type of actual parameter does not meet the requirements of the function interface.
Runtime Error: CALL_FUNCTION_CONFLICT_GEN_TYP -
Cause: The actual parameter does not have the length expected by the function.
Runtime Error: CALL_FUNCTION_CONFLICT_LENG -
Cause: The actual parameter does not have the type expected by the function.
Runtime Error: CALL_FUNCTION_CONFLICT_TYPE -
Cause: Only functions in the update task that are designed for this purpose may be called.
Runtime Error: CALL_FUNCTION_NO_VB -
Cause: An actual parameter does not meet the alignment requirements of the corresponding formal parameter.
Runtime Error: CALL_FUNCTION_WRONG_ALIGNMENT
-
Cause: The function expects a parameter that was not specified by the caller.
Runtime Error: CALL_FUNCTION_PARM_MISSING
CX_SY_DYN_CALL_PARAM_NOT_FOUND
-
Cause: The caller specified a parameter that the function does not recognize.
Runtime Error: CALL_FUNCTION_PARM_UNKNOWN
Additional help
General Data in Customer Master ROGBILLS - Synchronize billing plans
This documentation is copyright by SAP AG.
Length: 19914 Date: 20240419 Time: 210412 sap01-206 ( 228 ms )