Skip to content

ABAP Keyword Documentation →  ABAP Programming Guidelines →  Structure and Style →  Alternative Spellings 

Method Calls

Other versions: 7.31 | 7.40 | 7.54

Background

Static calls of methods can be formulated in two different ways. The long form

CALL METHOD meth EXPORTING ...

is based on the notation of the function module call. Alternatively, you can use a short form

meth( ... ).
which uses a parenthesis notation instead of the introductory ABAP words CALL METHOD. You can also use a combination of CALL METHOD and parentheses.

Rule

Formulatestatic method calls without

Use the long form of the method call using CALL METHOD only for dynamic method calls.

Details

The short form of the static method call is clearer. The redundant ABAP words CALL METHOD provide no additional information to the reader. Using the short form, self-contained method calls have the same appearance as functional method calls on operand positions. For dynamic method calls, the long form with CALL METHOD is syntactically necessary. If it is only used there, the different notations provide the reader with another distinguishing feature between the static and dynamic method call.

Bad example

The following source code shows the long form of a static method call using CALL METHOD, which is no longer recommended.

...
CALL METHOD cl_class=>do_something
  EXPORTING
    some_input = value1
  IMPORTING
    some_output = value2
  CHANGING
    some_change = value3.
...

The following source code shows the same static method call as above, but with parentheses inserted. In this form, which is also syntactically correct, either CALL METHOD or the parentheses are superfluous.

...
CALL METHOD cl_class=>do_something(
  EXPORTING
    some_input = value1
  IMPORTING
    some_output = value2
  CHANGING
    some_change = value3 ).
...

Good example

The following source code shows the same method call as above, but as recommended, without CALL METHOD. If a method has only importing parameters, you can omit IMPORTING and CHANGING, and also the EXPORTING addition. If it is a single importing parameter, you can also omit its name.

...
cl_class=>do_something(
  EXPORTING
    some_input = value1
  IMPORTING
    some_output = value2
  CHANGING
    some_change = value3 ).
...