CS Student’s SAP&Tech Journey✨

[SAP] 인터널 테이블(Internal Table) (2) 테이블에 데이터 삽입하기 본문

SAP/인터널 테이블 Internal Table

[SAP] 인터널 테이블(Internal Table) (2) 테이블에 데이터 삽입하기

인포마틱 2025. 2. 7. 19:54

SAP ABAP에서 데이터를 다룰 때 인터널 테이블(Internal Table, IT)은 필수적인 개념입니다.
인터널 테이블은 프로그램 실행 중 메모리에 저장되는 임시 데이터 테이블로, 대량의 데이터를 효과적으로 저장하고 조작하는 데 활용됩니다.

이번 글에서는 다양한 데이터 삽입 방식을 상세히 알아보겠습니다.

 

 

인터널 테이블 생성 및 선언하는 방법과 관련된 포스팅 보러가기⬇️

 

ABAP 프로그래밍: 인터널 테이블(Internal Table) (1) 테이블 선언, 생성하기

SAP ABAP에서 데이터를 다룰 때 인터널 테이블(Internal Table, IT)은 필수적인 개념입니다.인터널 테이블은 프로그램 실행 중 메모리에 저장되며, 데이터베이스와 달리 임시 데이터 저장소 역할을 합

informatik.tistory.com


 


인터널 테이블에 데이터 삽입하기

인터널 테이블에 데이터를 삽입하는 방법은 여러 가지가 있습니다.
각 방법을 비교해보고, 실제로 사용할 때 어떤 방식이 적절한지 알아보겠습니다.

  1. Work Area(WA)를 이용한 개별 데이터 삽입
    • APPEND를 사용한 삽입 (Standard Table 전용)
    • INSERT를 사용한 삽입 (Sorted & Hashed Table 포함)
  2. Work Area(WA)를 활용한 다중 데이터 삽입 (LOOP + APPEND 활용)
    • DO, LOOP, CLEAR를 이용한 반복 삽입
  3. Work Area(WA) 없이 직접 데이터 추가하기 
    • APPEND VALUE #( ... )를 활용한 간편한 삽입

 

 

1.  Work Area(WA)를 이용한 개별 데이터 삽입


✅ APPEND로 데이터 삽입 (Standard Table 전용)

DATA gw_flight TYPE ts_flightinfo.

gw_flight-carrid = 'AA'.
gw_flight-connid = '0017'.
gw_flight-fldate = sy-datum.
gw_flight-percentage = '98.00'.

APPEND gw_flight TO gt_flight. " Standard Table에서 맨 뒤에 추가

📌 Standard Table에서만 사용 가능, APPEND 시 자동으로 마지막 위치에 추가됨

 

✅ INSERT로 데이터 삽입 (Standard & Sorted & Hashed Table 모두 가능)

INSERT gw_flight INTO TABLE gt_flight.

📌 Sorted Table과 Hashed Table에서는 반드시 INSERT 사용

 

🎯 예시

DATA gt_carrier TYPE BC400_T_CARRIERS. "IT 선언
DATA gw_carrier TYPE BC400_S_CARRIER. "WA 선언

* 첫번째 행 추가
gw_carrier-carrid ='KA'.
gw_carrier-carrname = 'Korean Air'.
gw_carrier-currcode = 'KRW'.
gw_carrier-url = 'http://www.ka.com'.

APPEND gw_carrier TO gt_carrier.

* 두번째 행 추가
CLEAR gw_carrier. 
gw_carrier-carrid = 'UA'.
gw_carrier-carrname = 'United Air'.
gw_carrier-currcode = 'USD'.


INSERT gw_carrier INTO TABLE gt_carrier.

📌 설명

  •  한 개의 Work Area(WA)를 사용하여 개별적으로 데이터 삽입
  •  APPEND → Standard Table의 맨 끝에 추가
  •  INSERT → Key에 따라 적절한 위치에 삽입
  • WA를 활용하여 데이터 삽입할 때, CLEAR 해준 후 사용
  • 반복문 없이 개별적으로 데이터를 할당 & 추가

 

📌 출력

 

 

2.  Work Area(WA)를 활용한 LOOP + APPEND를 활용한 다중 데이터 삽입

DATA gt_carrier TYPE BC400_T_CARRIERS.
DATA gw_carrier TYPE BC400_S_CARRIER.

DO 10 TIMES.
  CLEAR gw_carrier. " Work Area 초기화
  gw_carrier-carrid = 'KA'.
  gw_carrier-carrname = 'Airline' && sy-index. " 동적으로 데이터 변경
  gw_carrier-currcode = 'KRW'.
  gw_carrier-url = 'http://www.ka.com'.

  APPEND gw_carrier TO gt_carrier. " 테이블에 추가
ENDDO.

📌 설명

  • Work Area(WA)를 먼저 선언 (DATA gw_flight TYPE ts_flightinfo.)
  • CLEAR gw_flight. → 매 반복마다 Work Area 초기화
  • 반복문(DO 10 TIMES.)을 이용해 10개의 데이터 삽입
  • APPEND gw_flight TO gt_flight. → Work Area의 데이터를 인터널 테이블로 추가

 

📌 출력

 

 

3.  Work Area(WA) 없이 직접 데이터 추가하기

✅ ABAP 7.4 이상에서 사용 가능, 한 줄로 간편하게 데이터 삽입 가능

APPEND VALUE #( carrid = 'AA' connid = '0017' fldate = sy-datum percentage = '98.00' ) TO gt_flight.