2

由于我很少循环进入字段符号,因此我经常忘记使用它ASSIGNING来代替INTO会立即导致异常终止。是否有效使用INTOwith<fieldsymbol>或者这是语法检查器真正应该捕获的东西?

4

3 回答 3

5

LOOP...INTO是完全有效的,但它会以不同的方式工作。 LOOP...INTO将值传输到提供的结构,但ASSIGNING将字段符号分配给实际的表行。

唯一的区别是您是否要更改表格内容。请参阅以下内容:

* Changes all entries in the CARRID column of lt_flights to 50.
LOOP AT lt_flights ASSIGNING <flight>.
  <flight>-carrid = 50.
ENDLOOP.

* Does not change the entries in lt_flights (MODIFY...FROM would be required).
ASSIGN <flight> TO ls_flight.
LOOP AT lt_flights INTO <flight>.
  <flight>-carrid = 50.
ENDLOOP.

LOOP...INTO除非您有某种动态编程要求,否则使用字段符号将毫无用处。

于 2013-06-26T18:03:24.267 回答
4

<fieldsymbol>当先前分配给具有您循环的表的行类型的结构时,它是有效的。

于 2013-06-28T11:50:46.797 回答
2

这是一个完全有效的陈述:

APPEND INITIAL LINE TO lt_foo ASSIGNING <ls_foo>.
READ TABLE lt_bar INTO <ls_foo> INDEX 1.

字段符号几乎在任何时候都代替了变量,因此语法检查无法将其标记为无效。它可能会发出警告,但...

于 2013-06-26T17:09:12.480 回答