我正在查看以下示例,该示例发布在ABAP关键字文档,页面INTERFACE。我的更改只是附加行:REPORT
语句和以START-OF-SELECTION
开头的语句。
在 SAP 系统上检查此代码会给出
方法 "M1(" 是未知的、受保护的或私有的。
但是,不是所有的定义和公共的吗?我写了类似的代码,只是没有接口和检查工作正常。
报告ZUTEST2。 接口 i1。 数据 A1 类型字符串。 方法 m1. 事件 E1 导出值 (P1( 类型字符串。 结束接口。 C1 类定义。 公共部分。 接口 i1。 结束类。 C1 类实现。 方法i1~m1。 引发事件 i1~e1 导出 p1 = i1~a1。 结束方法。 结束类。 选择开始。 数据 R 类型 ref 到 C1。 创建对象 R。 调用方法 R->M1( (。
首先,在接口i1
中定义方法m1
。
你应该像下面这样打电话
CALL METHOD r->i1~m1( ).
如果要调用类的方法,可以在类中定义ALIASES
。
CLASS c1 DEFINITION.
PUBLIC SECTION.
INTERFACES i1.
ALIASES m1
FOR i1~m1 .
ENDCLASS.
然后你打电话
call method r->m1( ).
希望对您有所帮助。
你的类结构是错误的,应该是:
data: r type ref to i1.
create object r type c1.
call method r->m1( ).