我尝试在 7.40 系统上演示具有动态方法名称的 CALL METHOD
语句。我使用下面的测试代码,在第 27 行得到一个 ABAP 运行时错误。异常描述中的错误分析状态 ... 在类 LCL 中,找不到方法“m”。
但独立方法调用成功调用m
。
REPORT ZUTEST10.
CLASS lcl DEFINITION.
PUBLIC SECTION.
METHODS m.
ENDCLASS.
CLASS lcl IMPLEMENTATION.
METHOD m.
write / 'success'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA oref TYPE REF TO lcl.
CREATE OBJECT oref.
oref->m( ). " works fine
DATA name TYPE c VALUE 'm'.
CALL METHOD oref->(name). " <-- Runtime Error
最佳答案
在后台所有方法名都是大写的,所以你必须像这样调用方法:
DATA name TYPE c VALUE 'M'.
另一方面,您可以捕获此异常,因此即使该方法不存在,程序也不会转储:
TRY.
CALL METHOD oref->(name).
CATCH cx_sy_dyn_call_illegal_method
INTO DATA(lx_illegal_method).
"handle illegal method call
ENDTRY.
关于abap - 使用动态方法名称调用方法,RuntimeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66312717/