<인터널테이블 : tab>
순번 | 사번 | 이름 | 전화번호 | |
000001 | 9845327 | 김몰라 | 031-999-9999 | |
000002 | 9845327 | 김몰라 | 031-999-9999 |
예를들어 tab라는 인터널테이블에 값이 이렇게 들어있다고 하면.
사번이 중복인걸 삭제하고싶습니다.
그래서
DELETE ADJACENT DUPLICATES FROM tab COMPARING 사번.
이 구문을 써봤습니다.
그런데 중복제거가 되지않네요.
사번앞에있는 순번이 중복값이 아니라서 중복제거가 되지않는것 같습니다.
이럴땐 어떤 구문을 써야하나요.
AT NEW 구문도 들어봤는데
도통 이해가 안되서요 ㅠ
고수님들 해결해주세요~!~!
댓글 6
-
버미!
2010.02.12 04:28
-
국화꽃향
2010.02.12 04:45
DATA : BEGIN OF WA,
A(1),
B(1),
C(2),
END OF WA.
DATA : GT_DATA LIKE STANDARD TABLE OF WA WITH HEADER LINE WITH KEY B.
GT_DATA-A = '1'.
GT_DATA-B = 'A'.
GT_DATA-C = '10'.
APPEND GT_DATA.
GT_DATA-A = '2'.
GT_DATA-B = 'B'.
GT_DATA-C = '11'.
APPEND GT_DATA.
GT_DATA-A = '2'.
GT_DATA-B = 'A'.
GT_DATA-C = '10'.
APPEND GT_DATA.
CLEAR GT_DATA.
LOOP AT GT_DATA.
WRITE :/ GT_DATA-A, GT_DATA-B, GT_DATA-C.
ENDLOOP.
SKIP.
WRITE :/ '------------------------------------'.
CLEAR : GT_DATA.
SORT GT_DATA BY B.
DELETE ADJACENT DUPLICATES FROM GT_DATA COMPARING B.
LOOP AT GT_DATA.
WRITE :/ GT_DATA-A, GT_DATA-B, GT_DATA-C.
ENDLOOP. -
량돌
2010.02.12 18:39
sort tab by 사번.
DELETE ADJACENT DUPLICATES FROM tab COMPARING 사번.
sort를 먼저 해주신후 중복제거 해야 적용됩니다.~
-
진현태
2010.02.12 19:19
DELETE ADJACENT DUPLICATE 사용시 COMPARING 뒤에 지시된 필드순데로 정렬 후 사용하셔야 합니다.
-
박종환
2010.02.13 01:42
Sort Int by Field1 Field2 Field3.
Delete adjacent duplicates comparing Field1 Field2.
이런 식으로 해주면 Delete를 할때 인접한 값 중 해당 값이 중복된 열만 삭제해 줍니다.
-
오대독자
2010.04.29 07:57
고수님들의 좋은 답변 잘보았습니다. 감사합니다.
어차피 Loop을 돌려야 하니
Sort itab by sabun.
Data : l_tabix type sy-tabix,
l_sabun type sabun.
Loop at itab.
clear : l_tabix.
l_tabix = sy-tabix.
if l_sabun eq itab-sabun.
delete itab index l_tabix.
else.
l_sabun = itab-sabun.
endif.
ebdloop.