如何在itob INTO <field symbol> </field symbol>中使用LOOP

时间:2013-06-26 15:34:41

标签: syntax-error abap

由于我很少循环到字段符号,我经常忘记使用ASSIGNING而不是INTO,这会立即导致异常终止。 INTO<fieldsymbol>是否有效使用,或者这是语法检查器真正应该捕获的内容吗?

3 个答案:

答案 0 :(得分: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将无用,除非您有某种动态编程要求。

答案 1 :(得分:4)

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

答案 2 :(得分:2)

这是一个非常有效的陈述:

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

字段符号只取代变量 - 几乎在任何点上 - 因此语法检查不能将此标记为无效。它可能会发出警告,但是......