SAP/ABAP

[SAP/ABAP] FOR ALL ENTRIES IN 구문

AmeliaY 2024. 4. 25. 18:04
728x90

 

 

운영 업무를 하면서 정말정말 많이 봤던 구문인 FOR ALL ENTRIES IN.

 

프로그램 퍼포먼스를 위해 지양되어야 하는 구문일 뿐더러,

SAP ABAP 교육생 시절엔 배워본 적도 없는 구문이다. (배웠는데 까먹었을수도...)

 

아무튼 유지보수 하는 입장에서 해당 구문을 정리해 보았다.

 

 

FOR ALL ENTRIES IN 구문

 

 

1. 문법 기능

  • 특정 인터널 테이블에 담겨 있는 데이터와 관련된 것만 SELECT 할 때 사용 가능.
  • 인터널 테이블 안에 담긴 데이터 수 만큼 순차적으로 LOOP를 돌며 값을 찾음

 

 

2. 구문 예시

SELECT col1 col2 ... coln
  INTO CORRESPONDING FIELDS OF lt_mska
  FROM mska
   FOR ALL ENTRIES IN lt_mara
 WHERE matnr EQ lt_mara-matnr.

 

 

3. 주의 사항

  • 인터널 테이블 (lt_mara) 의 컬럼과 비교 대상 테이블 (mska) 의 컬럼 타입이 같아야 함
  • 인터널 테이블 (lt_mara) 이 NULL 값이면 모든 데이터를 읽게 됨
  • 인터널 테이블 (lt_mara) 의 라인 수가 많으면 LOOP 횟수가 증가하게 되므로 쿼리 속도 저하
  • 인터널 테이블 (lt_mara) 의 중복된 값은 하나만 남음 (UNIQUE KEY 기준)
  • LIKE, BETWEEN, IN과 같은 비교 구문은 사용 불가

 

 

- End.

728x90