CLEAR : ITAB00, ITAB00[].
PERFORM SET_RANGE.
SELECT AUFNR AS DELNR1
RUECK
RMZHL <=====차수
STOKZ
LMNGA AS WEMNG
INTO CORRESPONDING FIELDS OF TABLE ITAB00
FROM AFRU
WHERE AUFNR = '10002336'.
LOOP AT ITAB00.
IF ITAB00-STOKZ = 'X'.
ITAB00-SWEMNG = ITAB00-SWEMNG - ITAB00-WEMNG.
ELSEIF ITAB00-STOKZ = ' '.
ITAB00-SWEMNG = ITAB00-SWEMNG + ITAB00-WEMNG.
ENDIF.
MODIFY ITAB00.
CLEAR ITAB00.
ENDLOOP.
제가 하려는건 ITAB00-STOKZ = ' '.인건 SUM하고 ITAB00-STOKZ = 'X'.인건 감산하려고 합니다.
그리고 계산한값을 ITAB00-SWEMNG에 넣어 차수인 RMZHL가 가장 큰것에만 넣어 출력하려고 하는데
위와 같이 하면 ITAB00건수가 8개라면 ITAB00-SWEMNG에 ITAB00-WEMNG 값이 차례로 해당 ROW에 들어
갑니다.
합의 데이터를 다신 선언해서 저장시켜야 하는 것인지
초보자라 힘이 듭니다. 고수님들의 의견 부탁드립니다.
RMZHL LMNGA AUFNR SWEMNG
1 20 10002336 20
2 20 10002336 20
3 -20 10002336 -20
4 30 10002336 30
와 같을때 위와 같이 출력되는데
RMZHL이 4인 것만 SWEMNG의 값이 50으로 나오게 하려는 것입니다.
댓글 6
-
초봡
2007.12.07 03:53
-
초봡
2007.12.07 03:57
아.. 위에서 field1은.. 차수랑 관련된 오더번호(AUFNR)필드입니다. -
SSong
2007.12.07 04:01
DATA : I_SWEMNG LIKE AFRU-LMNGA. 우선 먼저 선언 하시고
SORT ITAB00 RMZHL BY ASCENDING 를 한다음에
하시고
LOOP 를 돌리면서
IF ITAB00-STOKZ = 'X'.
I_SWEMNG = ITAB00-SWEMNG - ITAB00-WEMNG.
ELSEIF ITAB00-STOKZ = ' '.
I_SWEMNG = ITAB00-SWEMNG + ITAB00-WEMNG.
ENDIF.
AT LAST. -> LOOP 문 마지막일때
ITAB00-SWEMNG = I_SWEMNG.
ENDLOOP.
이렇게 하시면 될것 같은데요 ^^
SORT를 이용하세요 . 성공하시길 바래요
-
풍뎅이
2007.12.07 04:31
답변 감사드립니다.
-
풍뎅이
2007.12.07 18:40
SELECT AUFNR AS DELNR1
RUECK
RMZHL
STOKZ
LMNGA AS WEMNG
INTO CORRESPONDING FIELDS OF TABLE ITAB00
FROM AFRU
WHERE AUFNR IN S_DELNR1.
* WHERE AUFNR = '000010002336'.
SORT ITAB00 BY MATNR DELNR1 RMZHL ASCENDING.
LOOP AT ITAB00.
IF ITAB00-STOKZ = 'X'.
I_SWEMNG = I_SWEMNG - ITAB00-WEMNG.
ELSEIF ITAB00-STOKZ = ' '.
I_SWEMNG = I_SWEMNG + ITAB00-WEMNG.
ENDIF.
AT LAST.
ITAB00-SWEMNG = I_SWEMNG.
ENDAT.
MODIFY ITAB00.
CLEAR ITAB00.
ENDLOOP.
SSOong님 주신 답변 고맙게 잘 받았습니다.
열심히 노력해서 분발하겠습니다.
그런데 한가지 또 막히는 부분이 있습니다.
WHERE AUFNR = '000010002336'.로 줄땐 AT LAST.를 써서 RMZHL(차수)의 마지막에
출력을 바로 햇는데요.
WHERE AUFNR IN S_DELNR1.로 주고
SORT ITAB00 BY MATNR DELNR1 RMZHL ASCENDING.로 되어 있을시에는
해당 MANTR의 AUFNR의 RMZHL(차수)의 마지막행을 어떻게 찾아야 하나요? -
초봡
2007.12.07 20:02
MATNR DELNR1 RMZHL
1 A 001
1 A 002
2 A 003
2 B 004
2 B 005
실제 데이타가 어떻게 들어오는 지는 모르겠지만
예를들어 위와 같다면.. 필요한 차수번호는 002 003 005가 될테니까요.....
AT END OF MATNR.
.............
CONTINUE.
ENDAT.
AT END OF DELNR1.
....................
ENDAT.
차수가 가장 높을때만 SWEMNG값을 설정하시려는 건가요?
그러면 SORTING을 하시고 AT END OF field1 ............ ENDAT. 을 써보세요...
AT 구문안에 들어올때만 MODIFY되게 하믄 될겁니다....