데이터베이스에서 데이터를 SELECT해올 때 INTERNAL TABLE에 있는 데이터와 비교하여 INTERNAL TABLE에 있는 데이터 기준으로 WHERE절 조건이 맞는 데이터만 검색해 온다.
예시 코드
이와 같은 방법으로 사용할 수 있는데,
FOR ALL ENTRIES IN 문구를 사용할 때 주의점이 있다.
- FOR ALL ENTRIES 이후의 인터널 테이블과 INTO 뒤의 테이블은 동일해도 된다.
테이블의 내용은 FOR ALL ENTRIES로 평가된 이후 INTO 절로 덮어 씌워진다. - WHERE의 조건이 인터널테이블의 필드와 비교대상 테이블의 필드타입이 같아야 한다.
- 인터널테이블의 중복된 값은 하나만 남는다. (DISTINCT)
필드값이 중복될 경우 자동으로 중복제거되어 원하는 결과를 받아오지 못할 수 있으니 중복되지 않을 키필드를 WHERE절에 꼭 명시해야 한다 - 인터널테이블에 값이 없다면 모든 데이터를 읽어온다
사전에 인터널테이블에 값이 있는지 꼭 체크해야 한다 - 인터널테이블의 수가 많으면 LOOP 수가 증가하므로 쿼리 속도는 느려진다
키의 기준에 따라 다르지만 약 10만건 정도 되어야 쿼리속도가 느려진다 - UNION, GROUP BY와 함께 사용할 수 없다
GROUP BY를 사용해도 GROUP BY를 사용한 결과는 적용할 수 없다
그리고 이걸 따로 공부하면서 SELECT를 하기 전에 인터널테이블을 SORT를 해야 하는가가 쟁점이었다.
이에 대한 자료를 여기저기 찾아봤지만, 어느 블로그 글에서는 SORT를 해야 한다라고 명시되어 있고, 또 다른 블로그 글에서는 명시되어 있지 않았다.
F1 HELP를 찾아보니 인터널테이블을 반드시 SORT 해야 한다는 내용은 없었다.
필요하다 생각되면 SORT를 진행하면 되고, 필요하지 않다고 생각하면 SORT를 안 해도 되는 것 같다.
'Language > ABAP' 카테고리의 다른 글
[ABAP] Exiting Loops (EXIT, CONTINUE, CHECK) (1) | 2023.10.04 |
---|---|
[ABAP] Obsolete Syntax - REFRESH (0) | 2023.10.03 |
[ABAP/Error Log] 다운로드한 엑셀 서식 에러 메시지(복구) 처리 (0) | 2023.09.06 |
[ABAP] INITIAL VALUE (0) | 2023.09.03 |
[ABAP] 텍스트 테이블(Text Table) 찾기 (0) | 2023.08.27 |