ABAP接口:方法未知,受保护或私有

时间:2018-08-15 08:17:41

标签: abap

我正在看下面的示例,该示例发布在ABAP Keyword Documentation, page INTERFACE上。我的更改只是其他几行:REPORT语句和以START-OF-SELECTION开头的语句。

在SAP系统上检查此代码会得到

  

方法“ M1(”未知,受保护或私有。

但不是所有人都定义并公开吗?我写了类似的代码,只是没有界面并且检查工作正常。

REPORT ZUTEST2.

INTERFACE i1.
  DATA    a1 TYPE string.
  METHODS m1.
  EVENTS  e1 EXPORTING value(p1) TYPE string.
ENDINTERFACE.

CLASS c1 DEFINITION.
  PUBLIC SECTION.
    INTERFACES i1.
ENDCLASS.

CLASS c1 IMPLEMENTATION.
  METHOD i1~m1.
    RAISE EVENT i1~e1 EXPORTING p1 = i1~a1.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.

data r type ref to c1.
create object r.
call method r->m1( ).

2 个答案:

答案 0 :(得分:2)

您的班级建设错误,应该是:

data: r type ref to i1.
create object r type c1.
call method r->m1( ).

答案 1 :(得分:1)

首先,在接口i1中定义方法m1。

您应按以下方式致电

CALL METHOD r->i1~m1( ).

如果要在类上调用方法,则可以在类上定义 ALIAES

CLASS c1 DEFINITION.
  PUBLIC SECTION.
  INTERFACES i1.
  ALIASES m1
    FOR i1~m1 .
ENDCLASS.

然后致电

call method r->m1( ).

希望有帮助。