如何直接访问内部表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.
我看到问题也可能出在您的指针运算符(->(上,我觉得这可能是编码问题。
请尝试这个