CS Student’s SAP&Tech Journey✨
[SAP] 인터널 테이블(Internal Table) (3) 테이블에서 데이터 읽기 본문
SAP ABAP에서 데이터를 다룰 때 인터널 테이블(Internal Table, IT)은 필수적인 개념입니다.
인터널 테이블은 프로그램 실행 중 메모리에 저장되는 임시 데이터 테이블로, 대량의 데이터를 효과적으로 저장하고 조작하는 데 활용됩니다.
이번 글에서는 데이터를 읽는 다양한 방법에 대해을 상세히 알아보겠습니다.
인터널 테이블에서 데이터 삽입하는 방법과 관련된 포스팅 보러가기⬇️
ABAP 프로그래밍: 인터널 테이블(Internal Table) (2) 테이블에 데이터 삽입하기
SAP ABAP에서 데이터를 다룰 때 인터널 테이블(Internal Table, IT)은 필수적인 개념입니다. 인터널 테이블은 프로그램 실행 중 메모리에 저장되는 임시 데이터 테이블로, 대량의 데이터를 효과적으로
informatik.tistory.com
1. READ TABLE을 사용한 데이터 읽기
특정한 한 개의 데이터를 가져오는 방법이며, Index 또는 Key를 이용해서 검색한다.
✅READ TABLE (INDEX 방식 - 위치로 데이터 조회)
READ TABLE gt_flight INTO gw_flight INDEX 2. "INDEX 2에 해당하는 데이터가 gw_flight에 담긴다.
WRITE: / gw_flight-carrid, gw_flight-connid.
📌 특징
- 인덱스(Index)는 1부터 시작
- 정렬 순서에 따라 결과가 달라질 수 있음
- 데이터가 항상 같은 위치에 있는 경우 사용 가능
✅ READ TABLE (KEY 방식 - 특정 값으로 조회)
READ TABLE gt_flight INTO gw_flight WITH KEY carrid = 'AA'.
WRITE: / gw_flight-carrid, gw_flight-connid.
📌 특징
- 특정 키 값을 기준으로 데이터를 검색
- Hashed Table 또는 Sorted Table에서 빠른 검색 가능
- 중복된 값이 있을 경우, 첫 번째 값을 반환
2. LOOP AT을 사용한 데이터 읽기
인터널 테이블의 모든 데이터를 하나씩 읽어서 처리할 때 사용하며, 특정 조건을 만족하는 데이터만 필터링 가능합니다.
✅ LOOP AT (전체 데이터 조회)
LOOP AT gt_flight INTO gw_flight.
WRITE: / gw_flight-carrid, gw_flight-connid.
ENDLOOP.
📌 특징
- 특정 키 값을 기준으로 데이터를 검색
- Hashed Table 또는 Sorted Table에서 빠른 검색 가능
- 중복된 값이 있을 경우, 첫 번째 값을 반환
✅ LOOP AT (WHERE 조건을 활용한 필터링)
LOOP AT gt_flight INTO gw_flight WHERE percentage > '90.00'.
WRITE: / gw_flight-carrid, gw_flight-connid, gw_flight-percentage.
ENDLOOP.
📌 특징
- 특정 조건(WHERE)을 만족하는 데이터만 읽을 수 있음
- 읽기 성능이 향상됨 (불필요한 데이터 제외 가능)
3. SELECT INTO TABLE을 활용한 데이터 읽기 (DB 조회 후 인터널 테이블에 저장)
데이터베이스(DB)에서 데이터를 가져와 인터널 테이블에 저장하는 방식이다.
✅ SELECT INTO TABLE을 사용한 데이터 가져오기
SELECT * FROM SFLIGHT INTO TABLE gt_flight WHERE CARRID = 'AA'.
📌 특징
- DB에서 직접 데이터를 가져와 인터널 테이블을 채움
- 조건(WHERE)을 사용해 원하는 데이터만 가져올 수 있음
- 한 번에 여러 개의 데이터를 가져와 효율적
4. 유틸 클래스를 활용한 인터널 테이블 읽기 (cl_demo_output)
인터널 테이블의 데이터를 보기 좋게 출력할 때 사용한다. 디버깅할 때 유용하게 사용한다.
cl_demo_output=>display_data( gt_flight ). " 인터널 테이블 전체 데이터 출력
📌 특징
- 코드 한 줄로 테이블 전체 데이터를 출력 가능
- 개별 WRITE 없이 자동으로 정리된 포맷 제공
- 디버깅 시 빠르게 데이터 확인 가능
5. FOR ALL ENTRIES을 활용한 데이터 읽기 (대량 데이터 조회 최적화)
인터널 테이블의 데이터를 기반으로 DB에서 데이터를 가져올 때 사용한다.
✅ FOR ALL ENTRIES를 사용한 데이터 필터링
SELECT * FROM SFLIGHT INTO TABLE gt_flight
FOR ALL ENTRIES IN gt_request
WHERE CARRID = gt_request-carrid.
📌 특징
- 인터널 테이블(gt_request)과 매칭되는 데이터만 DB에서 가져올 수 있음
- JOINS를 사용하지 않고도 테이블 간 관계를 설정 가능
6. 정리
방법 | 설명 | 특징 |
1. READ TABLE (INDEX 방식) | 특정 위치(Index)에서 데이터를 읽음 | 데이터 위치를 알고 있을 때 유용 |
2. READ TABLE (KEY 방식) | 특정 키 값으로 데이터를 검색 | Sorted / Hashed Table에서 빠름 |
3. LOOP AT | 모든 데이터를 순차적으로 읽음 | 조건을 추가하여 필터링 가능 |
4. SELECT INTO TABLE | DB에서 데이터를 가져와 인터널 테이블로 저장 | SQL을 사용해 효율적 검색 가능 |
5. FOR ALL ENTRIES | 인터널 테이블을 기반으로 DB 조회 | 대량 데이터 조회 시 최적화 가능 |
6. 유틸 (cl_demo_output) | 인터널 테이블 데이터를 보기 좋게 출력 | 디버깅 및 데이터 확인에 유용 |
💡 인터널 테이블의 특정 데이터를 가져올 때? → READ TABLE WITH KEY
💡 인터널 테이블의 모든 데이터를 조회할 때? → LOOP AT
💡 DB에서 데이터를 가져와 인터널 테이블에 저장할 때? → SELECT INTO TABLE
💡 인터널 테이블을 기준으로 DB 데이터를 가져올 때? → FOR ALL ENTRIES
💡 디버깅 및 데이터 출력이 필요할 때? → cl_demo_output=> display_data()
🎯 헷갈리는 포인트
- SELECT → DB에서 데이터를 직접 읽어오는 것
- READ TABLE → 이미 생성된 인터널 테이블에서 데이터를 읽는 것(메모리(인터널 테이블) 조회)
'SAP > 인터널 테이블 Internal Table' 카테고리의 다른 글
[SAP] 인터널 테이블(Internal Table) (4) 테이블에서 데이터 수정, 삭제, 정렬하기 (0) | 2025.02.07 |
---|---|
[SAP] 인터널 테이블(Internal Table) (2) 테이블에 데이터 삽입하기 (0) | 2025.02.07 |
[SAP] 인터널 테이블(Internal Table) (1) 테이블 선언, 생성하기 (0) | 2025.02.07 |