LIST2테이블에는 값이 없고 ITAB테이블에는 값이 있을 경우에 LIST2테이블로 값을 추가해 주려고 합니다.
LOOP AT ITAB.
READ TABLE LIST2 INDEX SY-TABIX.
IF ITAB-MATNR <> LIST2-IDNRK.
...
APPEND LIST2.
ENDIF.
ENDLOOP.
이렇게 해주니까 데이터가 한줄씩 맞아 들어갈 경우에는 상관이 없는데 LIST2나 ITAB에서 한줄씩 밀리는 경우는 무조건 다른 값으로 인식해서 다 LIST2에 추가해버리더군요.
그래서 어떤 거는 데이터가 이중으로 되어 버리네요.
정렬해서 다시해볼까 하는 생각을 했는데 ITAB로 LIST2값을 만들었기 때문에 그것도 소용이 없는 것 같고...
고민을 해보니 제일 좋은 방법은 LOOP를 돌려서 ITAB의 데이터 하나와 LIST2의 필드를 비교해서 하나라도 일치하지 않는 값을 찾아야 하는데 이중 LOOP를 돌리면 값을 하나씩 비교해서 다른것만 가지고 오고... 제 머리로는 이 두가지 방법 밖에 코딩을 할 수가 없어요.
혹시 데이터 한개랑 필드전체를 비교할 수 있는 방법이 없을까요?
참고로 숫자가 있어서 COLLECT 쓰면 안되요 ㅡㅡ;;
댓글 5
-
윤군친구(bsp개발자)
2007.11.27 02:33
-
윤군친구(bsp개발자)
2007.11.27 02:45
where 조건은 없나봐요..^^ 없는게 맞는게 당연한것같은데... 한번썩던 기억이 나서 ㅠㅠ 아닌가봐요.. 암튼 성공하시길바래요^^ -
행복한외계인
2007.11.27 22:39
윤군친구님 고맙습니다. 덕분에 해결됐어요.
LOOP AT ITAB.
READ TABLE LIST2 WITH KEY IDNRK = ITAB-MATNR.
IF SY-SUBRC NE '0'.
....
APPEND LIST2.
ENDIF.
ENDLOOP.
이렇게 작성하니까 되더라구요. 근데 SY-SUBRC NE '0' 이 부분이 무슨 뜻인건가요?
-
최창환
2007.11.28 04:51
감사합니다.
-
unicrn
2008.02.27 00:04
좋은 의견 감사합니다.
안녕하세요.. 일단은 구문에서 READ TABLE LIST2 INDEX SY-TABIX. 이구문이 잘못되었내요..^^
itab의 대한 tabix를 list2에 적용하시니.. data가 순식간에 계속 꼬이게 되겠군요..^^
2개의 테이블이 구조가 같다고하신다면 loop at itab into lw_itab. read table list2 from lw_itab. if sy-subrc ne '0'. append 하시면되구요
위를 보면 머트리얼코드랑 idnrk랑 비교를하시네요?^^ 그럼 read table list2 with key idnrk = matnr. if sy-subrc ne '0'. or
where 조건을 쓰시면되는데요.. . 생각이 안나네요..찾아서 또 올려드릴께요