본문 바로가기
- SAP ABAP 기초부터 시작하기

SAP ABAP 기초 4-3 ) 데이터 가공 3 - FOR ALL ENTRIES IN

by 아기와나 SAP 2022. 12. 5.
728x90
반응형

안녕하세요 오늘은 FOR ALL ENTRIES IN에 대해 알아보겠습니다.

 


[FOR ALL ENTRIES IN의 이해]

 

  • FOR ALL ENTRIES IN은 조인이랑 같은 개념입니다.
  • 정확하게는 Abap Dictionary(se11)에 존재하는 테이블과 우리가 만든 인터널 테이블을 조인해주는 역할입니다.

[FOR ALL ENTRIES IN의 사용이유]

 

SAP ECC 버전에서는 쿼리를 사용하여 인터널 테이블을  조인하는게 불가능합니다.

그래서 인터널 테이블 조인과 비슷한 역할을 하는 FOR ALL ENTRIES IN을 사용하는 것입니다.

 

 


[FOR ALL ENTRIES IN 예제]

 

 

 


[FOR ALL ENTRIES IN 로직 설명]

 

이번 예제는

1. LT_SFLIGHT에 담긴 데이터를 기준으로

2. SPFLI테이블에서 데이터를 찾되

3. LT_SFLIGHT 테이블의 CARRID컬럼의 값들과 CONNID 컬럼의 값들이 일치하는 것만

4. LT_SPFLI 인터널 테이블에 담아줄 것입니다.

 


먼저 SFLIGHT에서 데이터 20개를 가져오고 키 값을 기준으로 오름차순으로 정렬을 하였습니다.

LT_SFLIGHT 인터널 테이블에 데이터가 어떻게 들어와있는지 볼까요??

 

.

CARRID 컬럼엔 AA와 AZ가 , CONNID에는 0017, 0064, 0555 값이 들어와있네요.

 


 

이제 LT_SFLIGHT에 담긴 CARRID, CONNID컬럼의 값들과 일치하는 값을 SPFLI 테이블에서 찾아보겠습니다.

FOR ALL ENTRIES IN은 LOOP문과 SELECT문을 동시에 사용합니다.

 

위 로직을 해석하자면

1. LT_SFLIGHT에 담긴 데이터 갯수만큼 LOOP를 돌며

2. LT_SFLIGHT에 담긴 CARRID, CONNID가 일치 하는 값을 SPFLI 테이블에서 찾아

3. LT_SPFLI 인터널 테이블에 담아주고

4. LT_SPFLI에 담긴 인터널 테이블 데이터의 정렬을 SPFLI 테이블의 기본 키 기준으로 한다.

 

 

즉, 쿼리에서 사용하는 ORDER BY(정렬) 구문을 사용할 수 있다는 것 자체가 쿼리죠??

 


(결과)

 

LT_SFLIGHT에 담긴 CARRID, CONNID 값으로 SPFLI 테이블에 일치하는 건 위 3개의 값이네요.

728x90
반응형