SAP NetWeaver AS ABAP Release 752, ©Copyright 2017 SAP AG. All rights reserved.ABAP - Keyword Documentation → ABAP - Reference → Calling and leaving program units → Calling Processing Blocks → Calling Procedures → Method Calls → Static Method Calls →
meth( ... ) - Functional Method Call
Functional call of a functional method static_meth in a suitable reading position for functions and expressions. The return code of the method declared using RETURNING is used as an operand and its full typing determines the data type of the operand. The actual parameters bound to output parameters and input/output parameters are handled in the same way as in standalone method calls.
The semantics of the syntax used in parameter passing are the same as in standalone method calls. Functional method calls differ from standalone method calls in the following ways:
If the return code of the method has a structured data type, a functional method call can, like a structure, be specified in front of the structure component selector - and use this to access a component of the structure.
If the functional method has the same name as a built-in function, the functional method is always called.
If an exception is raised when the functional method call is used as an operand, the exception cannot always be handled, and a runtime error can occur instead (depending on the position of the operand).
Functional call of a method. Unlike in the example for standalone method calls, the return code is assigned to the result. The inline declarations made in that example, however, are not possible here.
CLASS c1 DEFINITION.
CLASS-METHODS do_something IMPORTING p1 TYPE i
p2 TYPE i
EXPORTING p3 TYPE i
p4 TYPE i
RETURNING VALUE(r) TYPE i.
CLASS c1 IMPLEMENTATION.
METHOD do_something .
DATA: a1 TYPE i,
a2 TYPE i.
c1=>do_something( EXPORTING p1 = 333
p2 = 444
IMPORTING p3 = a1
p4 = a2 ).
The functional method factorial in this example has the return code fact of type int8, used on the right side of an assignment in an expression.
CLASS math DEFINITION.
IMPORTING n TYPE i
RETURNING VALUE(fact) TYPE int8.
CLASS math IMPLEMENTATION.
fact = COND int8( WHEN n < 0 THEN 0
ELSE REDUCE int8(
INIT f = CONV int8( 1 )
FOR i = 1 UNTIL i > n
NEXT f = f * i ) ).
DATA(result) = 100 + NEW math( )->factorial( 4 ).
The functional method get in this example has a structured return code whose component carrname is accessed.
CLASS carriers DEFINITION.
IMPORTING carrid TYPE scarr-carrid
RETURNING VALUE(r) TYPE scarr.
CLASS carriers IMPLEMENTATION.
SELECT SINGLE *
WHERE carrid = @carrid
cl_demo_output=>display( NEW carriers( )->get( 'LH' )-carrname ).