CS Student’s SAP&Tech Journey✨

[SAP] 인터널 테이블(Internal Table) (4) 테이블에서 데이터 수정, 삭제, 정렬하기 본문

SAP/인터널 테이블 Internal Table

[SAP] 인터널 테이블(Internal Table) (4) 테이블에서 데이터 수정, 삭제, 정렬하기

인포마틱 2025. 2. 7. 21:42

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

이번 글에서는 데이터 수정, 삭제, 정렬에 대해 상세히 알아보겠습니다.

 

 

인터널 테이블에 데이터 읽는 방법과 관련된 포스팅 보러가기⬇️

 

[ABAP] 인터널 테이블(Internal Table) (3) 테이블에서 데이터 읽기

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

informatik.tistory.com


 

1. 인터널 테이블에서 데이터 수정 (MODIFY TABLE)

특정 데이터 수정 (READ TABLE + MODIFY)

READ TABLE gt_flight INTO gw_flight WITH KEY carrid = 'AA'.

IF sy-subrc = 0. * 데이터가 존재하는 경우
  gw_flight-percentage = '99.99'. * 값 변경
  MODIFY TABLE gt_flight FROM gw_flight. * 수정된 데이터 반영
ENDIF.

📌 특징

  • READ TABLE로 특정 데이터 검색 후 MODIFY로 반영
  • sy-subrc를 활용해 데이터 존재 여부 체크
  • MODIFY를 실행하면 기존 행이 업데이트됨
  • READ TABLE 없이 MODIFY TABLE을 실행하면 원하는 행이 수정되지 않을 수도 있음

 

✅ LOOP를 활용한 여러 개 데이터 수정

LOOP AT gt_flight INTO gw_flight WHERE percentage < '50.00'.
  gw_flight-percentage = '60.00'. * 특정 조건을 만족하는 데이터 수정
  MODIFY TABLE gt_flight FROM gw_flight.
ENDLOOP.

📌 특징

  • WHERE 조건을 사용해 여러 개의 데이터를 한 번에 수정 가능
  • LOOP를 사용하면 반복적으로 MODIFY를 실행할 필요 없음
  •  MODIFY는 테이블을 수정할 때 성능이 저하될 수 있으므로 한 번만 실행하는 것이 효율적

 

2. 인터널 테이블에서 데이터 삭제 (DELETE TABLE)

✅ 특정 Key 값을 기준으로 삭제 (DELETE ... WHERE)

DELETE gt_flight WHERE carrid = 'AA'.

📌 특징

  • 특정 조건을 만족하는 모든 데이터 삭제
  •  Standard, Sorted, Hashed Table 모두 사용 가능
  • Hashed Table에서는 WHERE 조건이 필수 (Index 삭제 불가능)

 

✅ 특정 Index의 데이터 삭제 (DELETE ... INDEX)

DELETE gt_flight INDEX 3.

📌 특징

  • 특정 위치(Index)에 있는 데이터 삭제 가능
  • Standard Table에서만 사용 가능

 

✅LOOP를 활용한 여러 개의 데이터 삭제

LOOP AT gt_flight INTO gw_flight WHERE percentage < '50.00'.
  DELETE gt_flight WHERE percentage < '50.00'.
ENDLOOP.

📌 특징

  •  WHERE 조건을 활용해 특정 값보다 작은 데이터 삭제
  • 여러 개의 데이터를 한 번에 삭제 가능
  • 반대로 역순(DESCENDING)으로 LOOP를 돌리면 안전하게 삭제 가능
  • LOOP 내부에서 DELETE를 사용하면 데이터가 삭제되면서 Index가 변할 수 있음

 

3. 인터널 테이블 정렬 (SORT TABLE)

📌 기본적으로 Primary Key 기준으로 정렬됨
📌  정렬 방향을 ASCENDING(오름차순) / DESCENDING(내림차순) 지정 가능
📌  여러 개의 필드를 기준으로 정렬 가능

 

✅ 기본 정렬 (SORT 사용)

SORT gt_flight. " 기본 정렬 (Primary Key 기준)

📌 특징

  • 기본 정렬 기준은 Primary Key
  • 정렬 기준이 없으면 알파벳 순서 또는 숫자 순서대로 정렬됨

 

✅ 특정 필드를 기준으로 정렬

SORT gt_flight BY percentage.

📌 특징

  • 특정 필드(percentage)를 기준으로 정렬 가능
  • 기본값은 오름차순(ASCENDING)

 

✅ 내림차순 정렬 (DESCENDING)

SORT gt_flight BY percentage DESCENDING.

📌 특징

  • DESCENDING을 사용하면 큰 값부터 작은 값 순서로 정렬됨
  • 성능 최적화를 위해 Sorted Table을 사용하면 자동 정렬됨

 

✅ 여러 개의 필드를 기준으로 정렬

SORT gt_flight BY percentage DESCENDING carrid ASCENDING.

📌 특징

  • percentage 기준으로 내림차순, 같은 값이면 carrid 기준으로 오름차순 정렬

 

 

 🎯 정리: 데이터 수정, 삭제, 정렬 방법

  방법 설명
데이터 수정 MODIFY TABLE 특정 행을 찾아서 값을 변경
  LOOP AT ... WHERE 여러 개의 행을 조건에 맞춰 변경
데이터 삭제 DELETE ... WHERE 특정 조건을 만족하는 행 삭제
  DELETE ... INDEX 특정 위치(Index)의 행 삭제
데이터 정렬 SORT TABLE 기본 정렬 (Primary Key 기준)
  SORT ... BY 필드명 특정 필드 기준 정렬
  SORT ... BY 필드명 DESCENDING 내림차순 정렬