loop 안에 select single 넣어서 돌릴껀데 데이터가 많아서 속도가 느립니다
위의 방법과 같은 코딩이 4번정도는 더 써먹어야 되구요
그러다 보니 속도가 정말 느린데..
loop 안에 select single 넣는것과 같은 효과이면서
속도를 개선할 수 있는 다른 코딩법 없나요?
좋은방법있음 알려주세요 ㅠㅠ
================================================
제가 한 loop 안에 select single 넣은거 첨부합니다
loop at IT_CLAIM.
select single menge
from bseg
into it_claim-menge
where bukrs eq p_bukrs
and belnr eq it_claim-belnr
and gjahr eq it_claim-gjahr
and buzei eq it_claim-buzei.
select single ERFMG
from bseg
into it_claim-ERFMG
where bukrs eq p_bukrs
and belnr eq it_claim-belnr
and gjahr eq it_claim-gjahr
and buzei eq it_claim-buzei.
select single MATNR
from bseg
into it_claim-MATNR
where bukrs eq p_bukrs
and belnr eq it_claim-belnr
and gjahr eq it_claim-gjahr
and buzei eq it_claim-buzei.
MODIFY it_claim.
endloop.
여기서 찾아서 it_claim 에 넣은후에
또 다른 필드 찾아서 조건에 맞는것들만 select single 해서 넣어줄 생각입니다..
댓글 8
-
테라스
2010.12.16 19:22
-
오렌지겅주님
2010.12.16 19:34
앗 좋은코딩 감싸요 ㅎ
근데 다른방법은 안적어주셨군요 ㅎ
또 다른방법 없나요?
-
테라스
2010.12.16 20:22
IT_CLAIM 을 처음 읽어올때 어떤 테이블에서 읽어오신건가요?
만약 BSEG에서 읽어오신거라면 처음 읽어올때부터 필요한 필드들을 다 읽어오시면 됩니다.
-
맨날초보
2010.12.16 20:28
bseg 테이블은 클러스트 테이블이라 무거워요. single로 돌리면 아무래도 속도가 떨어질거에요.
그러므로....
select bukrs gjahr belnr buzei
into corresponding fields of it_bseg
from bseg
for all enteries in it_claim
where bukrs = it_claim-bukrs
and gjahr = it_claim-gjahr
and belnr = it_claim-belnr.
loop at it_claim.
read table it_bseg with key bukrs = it_claim-bukrs
gjahr = it_claim-gjahr
belnr = it_claim-belnr
buzei = it_claim-buzei.
if sy-subrc = 0.
it_claim-menge = it_bseg-menge.
it_claim-erfmg = it_bseg-erfmg.
it_claim-matnr = it_bseg-matnr.
endif.
endloop.
-
123456
2010.12.16 20:37
read table에 binary search를 쓰면 좀 더 빠르지 않나요?
-
원니컴
2010.12.16 20:38
속도를 좀더 높이고 싶다면.........다른 방법이 있죠. 정확한 형태를 잘 몰라서 말하긴 뭐한뎅.
해당 전표번호와 품번 회계연도로 해당 bseg에서 select한 필드를 다 가져오세요.
하나의 인터널테이블 담아두시고..루프 돌면서 read table 임시테이블 with key 회계연도 품번 전표번호 BINARY SEARCH 해주면 엄청 빨라지겠죠.
read table 하기전에 검색조건순으로 sort 하시는것 잊지마시고...ㅋㅋㅋ
그럼 수고하세요.
-
원니컴
2010.12.16 20:40
흐미 답글 다는 사이에 다 달아두셨넹....BINARY SEARCH 하시면 빨라요..튜닝방법입니다.^^ -
오렌지겅주님
2010.12.16 22:11
음... Binary search 한번 해보겠습니다.
모두들 답변감싸염 ^______________________^
즐거운하루되세요~
일단 위의 SELECT SINGLE 3개는 아래처럼 하나로 만들 수 있습니다.
select single MENGE ERFMG MATNR
from bseg
into CORRESPONDING FIELDS OF it_claim
where bukrs eq p_bukrs
and belnr eq it_claim-belnr
and gjahr eq it_claim-gjahr
and buzei eq it_claim-buzei.
동일한 조건으로 다른 필드들을 찾는다면 읽어올 필드들만 추가해주면 됩니다.