我有一个指向表格的字段符号<lt_something>
。此表有一行作为内容。如何将表格中的该行分配给新的字段符号,例如<ls_something>
?
我试过了:
READ TABLE <lt_something> INDEX 1 REFERENCE INTO <ls_something>.
但是上面的代码转储,这个问题的正确方法是什么?
答案 0 :(得分:3)
您正在混合字段符号和数据引用。使用
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'.
但不要合并两种方式。
答案 1 :(得分:0)
在执行阅读之前,您确定已分配字段符号表吗?您的阅读表的一般结构看起来没问题,但您应该在阅读声明中使用ASSIGNING:
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.
答案 2 :(得分:0)
字段符号必须是表格的行类型,而不是表格本身。
DATA:
i_vbak type standard table of vbak.
FIELD-SYMBOLS:
<i_vbak> type vbak.
READ TABLE i_vbak ASSIGNING <i_vbak>.