SELECT ... FOR ALL ENTRIES IN <itab> WHERE <cond>
FOR ALL ENTRIES 구문 사용 시 주의점
itab의 칼럼과 비교 대상 테이블의 칼럼 타입이 같아야 합니다.
LIKE, BETWEEN, IN과 같은 비교 구문은 사용할 수 없습니다.
itab의 중복된 값은 하나만 남습니다(Unique Key 기준)
itab가 NULL이면 모든 데이터를 읽습니다.
itab의 수가 많으면 LOOP 수가 증가하게 되므로 쿼리 속도가 느려집니다.
DATA gt_spfli TYPE TABLE OF spfli.
DATA gt_sflight TYPE TABLE OF sflight.
DATA gs_wa TYPE sflight.
SELECT * FROM spfli INTO TABLE gt_spfli.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE gt_sflight
FOR ALL ENTRIES IN gt_spfli
WHERE carrid = gt_spfli-carrid AND connid = gt_spfli-connid.
LOOP AT gt_sflight INTO gs_wa.
WRITE : / gs_wa-carrid, gs_wa-connid.
ENDLOOP.
gs_wa(sflight)에 일치하는 gt_sflight의 carrid와 connid가 담긴다.
2023.08.18 Update