Drunken Lion

Select ... into table ... 본문

SAP/ABAP

Select ... into table ...

DrkLion 2007. 12. 17. 14:34
Select 를 할때, Select ... Endselect. 로
건건히 DB 에 접근하는 방법도 있지만, INTO TABLE 또는 ,
APPEND TABLE , INTO CORRESPONDING FIELD OF TABLE 구문을 사용하면,
좀더 나은 퍼포먼스를 낼 수 있다.

전자의 경우는 데이터를 한건씩 가져오고 조건에 맞는 데이터가 없을 때까지
계속 LOOP 돌면서 데이터를 가져오게 되지만,
후자는 조건에 만족하는 데이터를 통채로 옯겨오게 되므로, DB Access 가 훨씬 줄어든다.

난 주로 APPENDING CORRESPONDING FIELDS OF TABLE itab 구문을 선호한다.
하지만 db 의 field 명과 internal table 에 필드명이 다를 경우는 select 되지 않는다.

예를 들어 DB : DBTAB-FDB1 , DBTAB-FDB2 라는 테이블을 select 해서
internal table ITAB-FIT1 , ITAB-FIT2 라는 field에 넣어야 한다면 ... corresponding 구문을 사용하면 데이터가 추출되지 않을 것이다.
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE itab
               FROM  dbtab
               WHERE ...

 드믈지만 여러 테이블을 조인 하거나, 동일한 조건으로 여러 테이블에서 데이터를
가져오는 경우에는 발생할 수 있는 상황이다.
 방법은 두가지가 있다.
 
1. SELECT fdb1 fdb2 INTO (itab-fit1, itab-fit2)
                            FROM dbtab
                           WHERE ...
APPEND itab.
ENDSELECT.      
앞서 설명한 대로, 이 방법은 퍼포먼스가 저하된다.

2. SELECT fdb1 AS fit1
                fdb2 as fit2
               APPENDING CORRESPONDING FIELDS OF TABLE itab
               FROM dbtab
             WHERE ...

2번의 구문처럼 AS 라는 명령어를 이용하면 Endselect 구문을 사용하지 않을 수 있다.