전표번호가 같은 것끼리 더해서 빈필드(ITAB_AMT)에 더한값(A)을 넣어야 합니다.
하지만 문제가 값이 옮겨갈뿐 더해지지 않습니다.
예를 들면.
더한 값 넣어 줄 필드 = 더한 값 넣어 줄 필드 + 더할값
0 = 0 +1
1 = 1 + 1
2 = 2 + 3
5 = 5 + 2
.
.
.
이런식으로 되어져야 하는데
0 = 0 +1
1 = 0 + 1
3 = 0 + 3
2 = 0 + 2
.
.
.
이렇게 됩니다.
=====================================================
SORT ITAB BY BELNR.
DATA : A TYPE BSEG-DMBTR,
B TYPE BSEG-DMBTR.
LOOP AT GT_B.
IF ITAB-BELNR = ITAB-BELNR .
A = ITAB-AMT.
B = ITAB-DMBTR.
A = A + B.
MOVE A TO ITAB-AMT.
MODIFY ITAB.
CLEAR ITAB.
ELSE.
ENDIF.
ENDLOOP.
======================================================
A = ITAB-AMT. 이부분 때문에 계속 0이 되어서 더해지는거 같은데
어떤식으로 바꿔야 할지 모르겠습니다.
바쁘시겠지만 해결 방법 좀 알려주세요~
댓글 4
-
storyroom.net™
2008.09.20 00:13
-
dndb
2008.09.20 00:51
우선 c를 넣을 빈 필드를 만들어줬는데 결과는 똑같이 나왔습니다~^^
답글 완료를 눌러야 하는데
질문에 해당하는 종료를 눌러서 [완료]처리가 되어버렸네요...ㅠㅠ
-
데이
2008.09.20 03:50
모디파이 시키고 클리어 시키니 루프돌면서 itab-amt 값에 0이 들어가겠죠?
clear itab 을 제거하면 일단 원하시는 결과를 볼수 있을것 같고요..
루프 안에서 itab을 읽어오는 로직도 필요하지 않을까 싶기도 하네요
-
dndb
2008.09.23 02:13
L_IDX = L_IDX + 1. 써서 같은 것은 더하고 다른것은 한줄 아래로 값이 들어가게 했더니 덧셈이 되더라구요.
SORT ITAB BY BELNR.
DATA : A TYPE BSEG-DMBTR,
B TYPE BSEG-DMBTR.
LOOP AT GT_B.
IF ITAB-BELNR = ITAB-BELNR .
A = ITAB-AMT.
B = ITAB-DMBTR.
C = C + A + B.
MOVE C TO ITAB-AMT.
MODIFY ITAB.
CLEAR ITAB.
ELSE.
CLEAR C.
ENDIF.
ENDLOOP.
이렇게 하면 더한값을 C에 계속 가지고 있으니까 더한 값에 계속 누적된 값이 들어갈것 같은데요.
물론 BELNR의 값이 바뀌면 C를 CLEAR 해줘야 할테구요..
제가 문제의 요지를 잘못이해한거라면... 죄송합니다 ^^;;