abap - 使用动态方法名称调用方法,RuntimeException

标签 abap

我尝试在 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/

相关文章:

abap - 将字段符号作为更改参数传递会导致短转储。为什么?

abap - 当结构包含字符串字段时,将结构转换为字符串失败

sql - SAP ABAP如何进行海量选型

class - 如何找到调用此方法的 ABAP 程序/FM?

for-loop - FOR 循环中不兼容的 Field-Symbol 类型

php - 每 15 分钟将表导出到文件并在完成后调用 PHP 脚本

abap - 从内部表中提取唯一值

versioning - 除了锁定的对象之外,我可以将对象的更改保存到另一个 TR 中吗?

abap - 如何从 MIME 存储库向 SAP Adob​​e 表单添加图像?

abap - 从 CDS 实体中选择还是从 CDS 数据库 View 中选择