SELECT SUM( DISTINCT totcart ) SUM( weight )
INTO (itab-carton, itab-t_growei)
FROM ZTSDJ61970
WHERE vbeln = xztshhr-vbeln.
이게 타입이 totcart 는 numeric이고 weight는 quantity타입이어서,
SUM을 사용할수 없다고 하더라구요 -
그래서,
SELECT SINGLE COUNT(*)
INTO l_count
FROM ztsdj61970
WHERE vbeln = xztshhr-vbeln.
DO l_count TIMES.
SELECT SINGLE weight totcart
INTO (l_t_growei, l_carton)
FROM ztsdj61970
WHERE vbeln = xztshhr-vbeln.
itab-t_growei = itab-t_growei + l_t_growei.
itab-carton = itab-carton + l_carton.
ENDDO.
이렇게 바꿨거든요 -
그런데 DO문은 사용하지 않는다고,
다시 루프로 바꾸라고 하십니다 -
그러면서 제시해주신 것이,
SELECT client vbeln matnr matoption boxno qty qmeins seqno
totcart weight wgewei exedate exetime worweek workdate
work_ztimlo boxflag zgrade con_no zcm_ernam zcm_erdat
zcm_erzet zcm_aenam zcm_aedat zcm_aezet
FROM ztsdj61970 into CORRESPONDING FIELDS OF TABLE lt_ztsdj61970
WHERE vbeln = xztshhr-vbeln.
itab-carton = itab-carton + distinct( totcart ).
itab-t_growei = itab-t_growei + distinct( weight ).
ENDSELECT.
이것인데요, 에러가 발생합니다 -
syntax for a method specification is "objref->method" or "class=>method" ... 이렇게요 -
물론 ENDSELECT 때문에 퍼포먼스에 문제도 있구요 -
효율적인 방법이 없을까요?
댓글 4
-
현준탱
2008.10.24 19:29
-
매서커
2008.10.24 19:34
Internal Table에 VBELN, TOTCART는 인티져타입으로, WEIGHT를 하나 더 선언하시고, 기존에 선언된 internal table에 data를 select해서 넣으세요.
그리고 그걸 loop돌면서 collect하시면 될것 같습니다.
-
SAP폐인
2008.10.24 23:34
select해서 테이블에 담아놓고 endselect를 해놓으니 시스템이 이게 머야? 이렇게 반응한거네요.. -
참참참
2008.12.13 00:11
고맙습니다 ^^
data: lv_carton like ztsdj6197-totcart,
lv_t_growei like ztsdj6197-weight.
select * into corresponding fields of table lt_ztsdj6197
from ztsdj61970
where vben = xztshhr-veln.
sort lt_ztsdj6197 by totcart.
delete adjacent duplicates from lt_ztsdj6197 comparing totcart.
loop at lt_ztsdj6197.
lv_carton = lv_carton + lt_ztsdj6197-totcart.
lv_t_growei = lv_tgrowei + lt_ztsdj6197-weight.
endloop.
이런식으로 구현하셔도 될것 같은데요...DATA 타입만 맞춰서 하시면 될것 같습니다. 여러 방법이 있을 것 같군요^^;;