Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

In macro call method of object

Former Member
0 Kudos

Hi,

is it possible to call method provides in parameter to macro ?

From the call of my macro i provide object instancied and the name of my method. In my macro i wanted to do : CALL METHOD &1->&2 but it don't work.

I provided you my code which does not function :

REPORT z_erca_test.

----


  • CLASS lcl_ee_data DEFINITION

----


CLASS lcl_ee_data DEFINITION.

PUBLIC SECTION.

METHODS:

get_data_list,

get_data_list_suisse.

ENDCLASS. "lcl_ee_data DEFINITION

----


  • CLASS lcl_ee_data IMPLEMENTATION

----


CLASS lcl_ee_data IMPLEMENTATION.

METHOD get_data_list.

WRITE 'Default'.

ENDMETHOD. "get_data_list

METHOD get_data_list_suisse.

WRITE 'Suisse'.

ENDMETHOD. "get_data_list_suisse

ENDCLASS. "lcl_ee_data IMPLEMENTATION

*----


  • DEFINE MACRO

DEFINE launch.

data: l_method type string.

l_method = 'get_data_list'.

concatenate l_method &2 into l_method separated by '_'.

write l_method.

call method &1->&2.

END-OF-DEFINITION.

*----


START-OF-SELECTION.

DATA : l_ee TYPE REF TO lcl_ee_data.

CREATE OBJECT l_ee.

launch l_ee 'suisse'.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

partly...

From the ABAP documentation:

+Using the standard ABAP parenthesis semantics you can call methods dynamically.

· Calling an instance method meth:

CALL METHOD ref->(f)

· Calling a static method meth:

CALL METHOD class=>(f)

CALL METHOD (c)=>meth

CALL METHOD (c)=>(f)

· Calling a user-defined method meth:

CALL METHOD (f)

CALL METHOD ME->(f)

+

Regards,

Gianpietro

4 REPLIES 4

Former Member
0 Kudos

Hi,

partly...

From the ABAP documentation:

+Using the standard ABAP parenthesis semantics you can call methods dynamically.

· Calling an instance method meth:

CALL METHOD ref->(f)

· Calling a static method meth:

CALL METHOD class=>(f)

CALL METHOD (c)=>meth

CALL METHOD (c)=>(f)

· Calling a user-defined method meth:

CALL METHOD (f)

CALL METHOD ME->(f)

+

Regards,

Gianpietro

0 Kudos

And ?

0 Kudos

So it will work,

remark that uppercase ist necessary


define launchd.
  data:
    l_method type string.
  l_method = 'GET_DATA_LIST'.


  concatenate l_method &2 into l_method separated by '_'.

  write l_method.
  call method &1->(l_method).

end-of-definition.

and after

  launchd l_ee 'SUISSE'.

Regards,

Gianpietro

Former Member
0 Kudos

Hi,

call method &1->&2.

This syntax is not possible - because the compiler wont know whether u r accessing public or private method. So when u ll actually call the macro .. it will give u a syntax error.

hope it helps.