CALL METHOD - Static Method Call (Obsolete)
Both statements have the same semantics and call the method that is specified statically by the name
The first statement prefixes the standalone method call with a
The second statement does not have any parentheses for passing values to the parameter interface. Instead, either an explicit
parameter list is specified or no parameter list at all
- It is not necessary to prefix the recommended syntax with
CALL METHODsince this would make programs harder to read.
- The syntax without parentheses is based on function module calls and is obsolete. The syntax involving parentheses, however, standardizes both standalone and functional method calls.
CALL METHODis now only intended for dynamic method calls and distinguishes them clearly from static calls.
The three method calls in the following source code have the same meaning. The first two calls are the
obsolete variants with
CALL METHOD: one without parentheses and one with. The third call is the recommended variant, without
CLASS cls DEFINITION. PUBLIC SECTION. METHODS do_something IMPORTING p1 TYPE i p2 TYPE i EXPORTING p3 TYPE i p4 TYPE i RETURNING VALUE(r) TYPE i. ENDCLASS. CLASS cls IMPLEMENTATION. METHOD do_something. ... ENDMETHOD. ENDCLASS. START-OF-SELECTION. DATA(oref) = NEW cls( ). CALL METHOD oref->do_something EXPORTING p1 = 333 p2 = 444 IMPORTING p3 = DATA(a1) p4 = DATA(a2) RECEIVING r = DATA(a3). CALL METHOD oref->do_something( EXPORTING p1 = 333 p2 = 444 IMPORTING p3 = DATA(b1) p4 = DATA(b2) RECEIVING r = DATA(b3) ). oref->do_something( EXPORTING p1 = 333 p2 = 444 IMPORTING p3 = DATA(c1) p4 = DATA(c2) RECEIVING r = DATA(c3) ).