访问对象内部表行的成员



如何直接访问内部表CHILDREN中一个对象的属性DATA

CLASS class1 DEFINITION.
PUBLIC SECTION.
DATA: data TYPE string.
DATA: children TYPE STANDARD TABLE OF REF TO class1 WITH EMPTY KEY.
METHODS constructor
IMPORTING data TYPE string.
ENDCLASS.
CLASS class1 IMPLEMENTATION.
METHOD constructor.
me->data = data.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA children TYPE STANDARD TABLE OF REF TO class1.
APPEND NEW #( data = 'test' ) TO children.
WRITE children[ 1 ]->data.                      " <== syntax error

但是我收到语法错误消息:

意外的运算符"->"。

自 ABAP 7.40 SP 02 起允许表表达式 (children[ ... ](,但对象组件选择器仅在 ABAP 7.50 允许在表表达式之后->

从 7.50 版开始,对象组件选择器 -> 可以直接在返回引用变量的表表达式之后指定。这样就可以访问引用对象的组件。一个例外是其结果由值运算符 VALUE 确定的表表达式。

解决方法WRITE children[ 1 ]->data:使用:

DATA(child) = children[ 1 ].
WRITE child->data.

让我们知道您的SAP服务器的ABAP版本。您的代码在 ABAP 版本 7.4 及更高版本中完美运行。

对于低于 7.3 的版本,请使用以下代码。

DATA children TYPE STANDARD TABLE OF REF TO class1.
DATA: child TYPE REF TO class1.
CREATE OBJECT child EXPORTING data = 'test'.
append child to children.
write children[ 1 ]->data.

我看到问题也可能出在您的指针运算符(->(上,我觉得这可能是编码问题。

请尝试这个

相关内容

  • 没有找到相关文章

最新更新