给定一个指向表的字段符号,如何将它分配给结构字段符号?
问题描述:
我有一个字段符号<lt_something>
它指向一个表。此表格包含一行内容。如何将表中的该行分配给新的字段符号,如<ls_something>
?给定一个指向表的字段符号,如何将它分配给结构字段符号?
我想:
READ TABLE <lt_something> INDEX 1 REFERENCE INTO <ls_something>.
但上面的代码转储,什么是这个问题的正确方法?
答
您在混合字段符号和数据引用。使用
DATA lr_foo TYPE REF TO something.
READ TABLE lt_something INDEX 1 REFERENCE INTO lr_foo.
lr_foo->bar = 'baz'.
或
FIELD-SYMBOLS <ls_foo> TYPE something.
READ TABLE lt_something INDEX 1 ASSIGNING <ls_foo>.
<ls_foo>-bar = 'baz'.
但不合并两种方式无论是。
答
您确定您的字段符号表是在您执行读取之前分配的吗?你读出表的一般结构看起来不错,但你应该在你读的语句中使用分配:
FIELD-SYMBOLS: <lt_something> TYPE ANY TABLE,
<ls_something> TYPE ANY.
" ... blah blah presume you did some work on <lt_something>...
IF <lt_something> IS ASSIGNED.
READ TABLE <lt_something> INDEX 1 ASSIGNING <ls_something>.
" Check sy-subrc or <ls_something> IS ASSIGNED.
" Do work.
ENDIF.
答
现场符号需要在表格的行类型,而不是表本身。
DATA:
i_vbak type standard table of vbak.
FIELD-SYMBOLS:
<i_vbak> type vbak.
READ TABLE i_vbak ASSIGNING <i_vbak>.
+0
字段符号:
不能与 类型“HASHED TABLE”或“ANY TABLE”表使用显式或隐式索引操作。 “”具有“任何表”类型。 有可能在 “”之前未指定“TABLE”添加。 –
icbytes
2016-11-30 13:42:59