给定指向表的字段符号,如何将其分配给结构字段符号?

时间:2013-04-23 05:41:49

标签: sap abap

我有一个指向表格的字段符号<lt_something>。此表有一行作为内容。如何将表格中的该行分配给新的字段符号,例如<ls_something>

我试过了:

READ TABLE <lt_something> INDEX 1 REFERENCE INTO <ls_something>.

但是上面的代码转储,这个问题的正确方法是什么?

3 个答案:

答案 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>.