데이터
aaa 153
aaa 11
로직
LOOP AT GV_TEMP.
AT END OF MATNR.
SUM.
ENDAT.
COLLECT GV_TEMP.
ENDLOOP.
위 로직대로 한다면
aaa는 164 가 나와야되잖아요.
그런데...실제로 돌리면 317 이 나와요.
즉 , 153+153+11 이 된거죠.
제가 원하는 건 164 거든요.
왜 이런거죠?????
댓글 6
-
덩콘
2010.04.15 00:03
-
페리
2010.04.15 00:40
같은 인터널테이블에 넣으셔서 합쳐지는 듯 한데요.
gv_tmep에는 기존에
aaa 153
aaa 11 이 이미 들어가 있고, 루프돌면서 153+11 = 164를 합친게 collect gv_temp로 담으니
첫번재 라인에 원래 있던 aaa 153에 더해지는거 같아요 collect할때 다른 인터널테이블에 넣고 해보세요
-
맨날초보
2010.04.15 00:43
덩콘님 말씀대로 했는데도 여전히 317이 나옵니다. ㅠㅠ
페리님 말씀대로 다른 인터널테이블에 담아서 해결했습니다.
답변 달아주신 두 분께 감사드립니다. ^^
-
아빱초보
2010.04.15 01:15
페리님 말씀이 맞는 것 같습니다. 기존 인터널테이블에 collect를 진행하니까 기존에 있던 값중 첫번째 로우의 값 153에 더해진 거네요. 페리님 말씀처럼 다른 인터널에 담는 것이 좋을 듯 보입니다. -
덩콘
2010.04.15 01:15
어라 페리님 말대로 인터널 테이블이 같군요
LOOP 도는 테이블과 COLLECT하는 테이블을 똑같은 구조로 만들어서 따로 쓰세요
COLLECT GV_TEMP를 하지마시고
DATA : GV_COLLECT LIKE GV_TEMP OCCURS 0 WITH HEADER LINE. 선언해서
COLLECT GV_COLLECT 해보세요
CLEAR GV_COLLECT 도 다음줄에 넣어주시구요
-
양키
2010.04.16 01:15
AT END OF MATNR.
SUM.
ENDAT.
빼면 될듯..
collect뒤에
clear gv_temp
한번 추가해 보세요
그런 경우 많습니다