안녕하세요
프로그램이 너무 느려서 속도 개선중에 있는데...
루프문 안에 SELECT ~ ENDSELECT문이 있어서 이 부분을 튜닝하고자 합니다
LOOP AT.
SELECT
ENDSELECT
ENDLOOP.
이 구문을 튜닝하려면 어떤 방법이 좋은지 알고 싶습니다!
댓글 2
-
로우랜즈
2020.02.12 01:46
-
꿀꿀윤뚱67
2020.02.13 01:55
SELECT FOR ALL ENTRIES를 이용한 OUTER JOIN
아래는 SELECT FOR ALL ENTRIES를 이용하여 ABAP에서 OUTER JOIN을 구현한 예이다.
*-- 개선 전.
SELECT vbeln auart …INTO …FROM vbak WHERE ….
SELECT posnr matnr …INTO …FROM vbap
WHERE vbeln = vbak-vbel n.
…
ENDSELECT.
ENDSELECT.
*----------------------------------------------------------------------*
*-- 개선 후.
SELECT vbeln auart …INTO TABLE it_vbak FROM vbak
WHERE vbeln IN so_vbeln.
SELECT vbeln posnr matnr …INTO TABLE it_vbap FROM vbap
FOR ALL ENT RIES IN it_vbak
WHERE vbeln = it_vbak-vbeln. “vbeln과 it_vbak-vbeln은 같은 형과 길이여야 한다.
LOOP AT it_vbak.
READ TABEL it_vbap WITH KEY vbeln = it_vbak-vbeln
BINARY SEARCH TRANSPORTING NO FIELDS.
LOOP AT it_vbap FROM sy-tabix.
…
ENDLOOP.
ENDLOOP.OUT ER JOIN을 할 경우 위처럼 FOR ALL ENTRIES IN 구문을 이용하여 SELECT한 후, 내부 테이블에서 처리하도록 한다 .
출처
저도 초보지만 제 생각에 지금 루프도시는 테이블에 대해 FOR ALL ENTRIES로 SELECT INTO TABLE하신 다음에 그 테이블에 대해 루프돌면서 처리하시면 되지 않을까용?