ABAP loop at itab

2024-12-27 19:26:08
推荐回答(2个)
回答1:

在ABAP中,对内表的操作是要将内表的数据取出到工作区来进行的,表头也是一个工作区,只是工作区的名称与内表的名称一样而已,带表头的内表在LOOP的时候也可以用INTO将它里面的数据循环到与内表名称不一样的工作区中来处理。如:
DATA: BEGIN OF wa_tab,
col1 TYPE char20,
col2 TYPE char20,
col3 TYPE char20,
END OF wa_tab,
itab TYPE TABLE OF wa_tab WITH HEADER LINE.

LOOP AT itab into wa_tab.
ENDLOOP.
在写代码的时候,一般不推荐用带表头的内表,因为ABAP里面很对语句中内表出现的位置也是工作区可以出现的位置,如IF itab IS INITIAL就是判断工作区itab是否为空,而IF itab[] IS INITIAL才是判断内表是否为空
在不带表头的内表中,如果要修改内表的内容,则可以用字段符号来方便操作,而不需要额外的MODIFY一下,如:
FIELD-SYMBOLS: TYPE wa_tab.
LOOP AT itab ASSIGN .
-col1 = 'AA'.
ENDLOOP.
这样内表的每一行数据中的col1字段的内容就变成了AA

回答2:

这主要看你内表是怎么定义的。如果定义内表是带表头的话在LOOP AT时就不用 INTO 工作区。
LOOP AT ITAB.
如果不带表头就要定义相应的工作区。
LOOP AT ITAB INTO WA_ITAB.
同理在内表APPEND时也是一样。
APPEND ITAB.
APPEND WA_ITAB TO ITAB.