动态调用方法时使用dynamic符号()
call method ref->(f)
调用静态方法:
call method class=>(f)
call method (c)=>meth
call method (c)=>(f)
使用动态调用方法时,传递的str类型中内容最好为大写,否则会报错
*&---------------------------------------------------------------------*
*& Report ZOO_ZF5
*&
*&---------------------------------------------------------------------*
*&
*&调用动态方法
*&---------------------------------------------------------------------*
REPORT zoo_zf5 NO STANDARD PAGE HEADING.
*----------------------------------------------------------------------*
* CLASS c5 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS c5 DEFINITION.
PUBLIC SECTION.
DATA: gt_itab TYPE TABLE OF sflight,
gs_str TYPE sflight.
METHODS: get_data,
wri_data.
ENDCLASS. "c5 DEFINITION
*----------------------------------------------------------------------*
* CLASS c5 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS c5 IMPLEMENTATION.
METHOD: get_data.
SELECT * INTO TABLE gt_itab
FROM sflight
UP TO 5 ROWS.
ENDMETHOD.
METHOD: wri_data.
LOOP AT gt_itab INTO gs_str.
WRITE:/ gs_str-carrid,gs_str-connid.
ENDLOOP.
ENDMETHOD. "get_data
ENDCLASS. ".
DATA: go_oref TYPE REF TO c5.
DATA: gv_mth TYPE string.
START-OF-SELECTION.
CREATE OBJECT go_oref.
gv_mth = 'GET_DATA'.
call METHOD go_oref->(gv_mth).
gv_mth = 'WRI_DATA'.
call METHOD go_oref->(gv_mth).