matnr, aufnr, hogi별 count를 SUM하려고 합니다.
help나 다른 예제를 보고 응용을 하려 해도 해결이 잘되지 않아 문의드립니다.
at new나 at end of에 익숙치 않아서 그런데
1)에서 aufnr의 count를 셀수 있나요?
select matnr aufnr hogi
from ztqm0015
into corresponding fields of table itab01
where matnr = s_plnbez.
loop at itab01 .
at new aufnr.
~ ==> 1)
endat.
append itab.
endloop.
댓글 9
-
가오만땅
2008.03.24 23:54
-
썬바바
2008.03.24 23:58
AT NEW .
AT END OF를 사용할땐느 반드시 해당 인터널 테이블을 sort해야 합니다.
그리고 AT NEW에 걸리는 필드 뒤의 필드 ( 인터널 테이블 구조상의 필드위치) 는 ******* 이런식을 필드값을 알수가 없으므로
미리 값을 Work Area에 넘겨주고 사용하시면 될듯 싶네요..
-
activeman
2008.03.25 00:09
collect 문을 사용하시면 간단하게 카운터가 될것 같습니다.
data: begin of lt_aufnr occurs 0.
aufnr like aufk-aufnr,
cnt type i,
end of lt_aufnr.
loop at itab01.
clear: lt_aufnr.
lt_aufnr-aufnr = itab01-aufnr.
it_aufnr-cnt = 1.
collect lt_aufnr.
endloop.
참고하세요..
-
풍뎅이
2008.03.25 00:18
itab01 이라는 테이블에 count 라는 필드는 있습니다. 서브쿼리를 이용하는 for all entries in 테이블명을 써보려 했지만
where 조건에서 matnr는 알수 있지만 aufnr는 테이블에서 읽어야 하기때문에 쓸 수 없었습니다.
그리고 sort itab01 by matnr aufnr hogi. 로 sort는 했구요..
그런데 1)부분에 sum.이라고 넣게되면 테이블 안의 수량을 sum하는지..
초보라 감이 잡히지 않습니다.
경험있으신분께서 도움주시면 감사드리겠습니다.
-
가오만땅
2008.03.25 02:44
DATA: BEGIN OF ITAB OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
COUNT(4) TYPE I,
END OF ITAB.
SELECT A~MBLNR COUNT( DISTINCT B~ZEILE ) AS COUNT
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM MKPF AS A
JOIN MSEG AS B
ON A~MBLNR = B~MBLNR
GROUP BY A~MBLNR.
조인관계를 만들수 있다면.. 이런식으로 해보시면 되겠네요..
엄청 대충 해놓은 소스니... 걍 양식만 가져다 쓰세요.. WHERE 절도 없네요;; ㅎㅎ
-
DBnoid
2008.03.25 04:44
On change Of matnr aufnr hogi 를 써보시는건 어떨지요...문자도 안 깨질거고...
인터널테이블을 Select 할수 있음 좋겠지만...ㅎㅎ
On Chane OF 를 쓰시던 At new를 쓰시던 Loop를 돌며 처리하셔야 할 듯합니다.
-
풍뎅이
2008.03.26 00:03
답변주신 모든 분께 감사드립니다.
-
아밥초짜
2008.05.16 18:52
답변감사합니다. -
드라곤
2009.02.03 19:31
감사합니다.
이전 질문과 조합해서 생각해 보면 itab01 이라는 테이블에 count 라는 필드가 있을것 같은데.. 맞나요?
at new ... 구문을 쓰면 그 인터널 테이블에서 해당 필드 뒤에 지정되는 필드들에는 값이 *** 로 들어가게 됩니다.
이점 주의해서 로컬 변수 사용하시면 가능하겠네요..
그리고, 테스트 해보지는 않았지만, 서브쿼리를 사용해서 count 를 뽑아낸다면 조금더 간단할 수도 있을것 같네요 ^^