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

问题描述:

我有一个字段符号<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. 
+0

不能与 类型“HASHED TABLE”或“ANY TABLE”表使用显式或隐式索引操作。 “”具有“任何表”类型。 有可能在 “”之前未指定“TABLE”添加。 – icbytes 2016-11-30 13:42:59

现场符号需要在表格的行类型,而不是表本身。

DATA: 
    i_vbak   type standard table of vbak. 

FIELD-SYMBOLS: 
    <i_vbak> type vbak. 

READ TABLE i_vbak ASSIGNING <i_vbak>. 
+0

字段符号:键入vbak。 – user2341316 2013-05-02 01:12:55