由于我很少循环到字段符号,我经常忘记使用ASSIGNING
而不是INTO
,这会立即导致异常终止。 INTO
与<fieldsymbol>
是否有效使用,或者这是语法检查器真正应该捕获的内容吗?
答案 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.
字段符号只取代变量 - 几乎在任何点上 - 因此语法检查不能将此标记为无效。它可能会发出警告,但是......