一个内表itab1(没有表头)有n行m列我想找出重复的行(并非完全相同的行,而是其中有某两列相同就算其重复)我不想loop里面套loop这样太慢了我准备用field-sy...
一个内表itab1(没有表头)有n行m列 我想找出重复的行 (并非完全相同的行,而是其中有某两列相同就算其重复)
我不想loop里面套loop这样太慢了
我准备用field-symbol. 我设了两个field symbol 分别为<fs1>和<fs2>, 然后:
loop at itab assigning <fs1>.
<fs2>和<fs1>指向同一行 *
while <fs2>指向的不是itab的最后一行时 *
<fs2> 指当前<fs2>所指的下一行.*
if <fs1>和<fs2>中的某两项相同.将<fs1>和<fs2>移到另外一个内表itab2.endif.
endwhile.
endloop.
我感觉这样应该比用两个loop会快一些吧?
其中打星号的这几个语句我不知道怎么写,在abap里能实现吗?
或者有没有别的更好的办法? 求高手解答谢谢
跟有没有表头没关系 习惯写有表头的 没表头的自己去写
ITAB是原始数据表
ITAB2是中转表
ITAB3是最后结果表
DATA: BEGIN OF ITAB OCCURS 0,
COL1 TYPE I,
COL2 TYPE I,
COL3 TYPE I,
FLAG TYPE CHAR1,
END OF ITAB.
ITAB-COL1 = 1.
ITAB-COL2 = 2 .
ITAB-COL3 = 3.
APPEND ITAB.
ITAB-COL1 = 1.
ITAB-COL2 = 2 .
ITAB-COL3 = 4.
APPEND ITAB.
ITAB-COL1 = 1.
ITAB-COL2 = 2 .
ITAB-COL3 = 5.
APPEND ITAB.
ITAB-COL1 = 1.
ITAB-COL2 = 2 .
ITAB-COL3 = 5.
APPEND ITAB.
ITAB-COL1 = 3.
ITAB-COL2 = 2 .
ITAB-COL3 = 3.
APPEND ITAB.
DATA: ITAB2 LIKE TABLE OF ITAB WITH HEADER LINE.
DATA: ITAB3 LIKE TABLE OF ITAB WITH HEADER LINE.
LOOP AT ITAB.
READ TABLE ITAB2 WITH KEY COL1 = ITAB-COL1 COL2 = ITAB-COL2.
IF SY-SUBRC <> 0.
APPEND ITAB TO ITAB2.
ELSE.
APPEND ITAB TO ITAB3.
READ TABLE ITAB3 WITH KEY COL1 = ITAB-COL1 COL2 = ITAB-COL2 FLAG = 'X'.
IF SY-SUBRC <> 0.
ITAB2-FLAG = 'X'.
APPEND ITAB2 TO ITAB3.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT ITAB3.
WRITE:/ ITAB3-COL1, ITAB3-COL2, ITAB3-COL3.
ENDLOOP.