SAP ABAP ( Itab 활용 )

misohb·2025년 9월 16일

ABAP

목록 보기
2/3

안녕하세요..
지난 글에서는 ABAP에서의 변수 선언과 Structure, Internal Table의 기본 개념을 살펴봤습니다.
이번 글에서는 Internal Table의 활용법에 대해 구체적으로 다뤄보겠습니다.

Internal Table은 ABAP 프로그래밍에서 데이터를 다루는 핵심 요소입니다.
데이터를 담는 것뿐만 아니라,
추가(Append), 읽기(Read), 삭제(Delete), 루프(Loop) 처리 등 다양한 기능을 제공합니다.

Internal Table 기본 선언 복습

DATA : BEGIN OF gs_scarr,
         carrid   TYPE scarr-carrid,
         carrname TYPE scarr-carrname,
       END OF gs_scarr,
       gt_scarr LIKE TABLE OF gs_scarr.
  • gs_scarr : 한건의 데이터를 담는 구조체 ( Structure / Work Area )
  • gt_scarr : 여러건의 데이터를 담는 형태

1. 데이터 추가 (APPEND, INSERT)

Internal Table에 데이터를 넣는 방법은
대표적으로 APPENDINSERT가 있습니다.

"APPEND 예시
CLEAR gs_scarr.	"변수 초기화
gs_scarr-carrid   = 'AA'.
gs_scarr-carrname = 'American Airlines'.
APPEND gs_scarr TO gt_scarr.    

"INSERT 예시
CLEAR gs_scarr.
gs_scarr-carrid   = 'LH'.
gs_scarr-carrname = 'Lufthansa'.
INSERT gs_scarr INTO gt_scarr INDEX 1.   
  • APPEND → 테이블 끝에 데이터 추가
  • INSERT ... INDEX → 원하는 위치 ( Index 뒤 )에 데이터 삽입
    • 위의 코드에서는 1번째 위치에 데이터를 삽입

데이터 읽기 (READ TABLE)

Internal Table에서 데이터를 찾을 때는 READ TABLE을 사용합니다.

DATA gv_index TYPE sy-tabix.

READ TABLE gt_scarr INTO gs_scarr WITH KEY carrid = 'AA' BINARY SEARCH.

IF sy-subrc = 0.
  WRITE: / '항공사 이름:', gs_scarr-carrname.
ENDIF.
  • 조건에 맞는 단 한건만 가져옵니다.
    • 만약 조건에 맞는 데이터가 여러건이라면... 가장 최상단의 데이터 1건을 가져옵니다.
  • WITH KEY : 조건에 맞는 데이터를 검색
    • 뒤에다가 찾는 Field명과 조건을 작성합니다
  • sy-subrc : 검색 성공 여부 확인 (0 = 성공, 그 외 = 실패)
  • Binary Search : 이진 탐색
    • 선행적으로 찾으려는 필드로 정렬되어 있어야 함
    • READ TABLE의 속도 향상에 도움

루프 처리 (LOOP)

Internal Table을 순회하면서 데이터를 처리할 수 있습니다

LOOP AT gt_scarr INTO gs_scarr.
  WRITE: / gs_scarr-carrid, gs_scarr-carrname.
ENDLOOP.
  • LOOP AT ... INTO → 테이블 데이터를 한행씩 읽어서 Work Area(gs_scarr)에 담습니다.
  • LOOP 조건에 WHERE(원하는 조건), FROM(원하는 순번부터) 도 함께 사용할 수도 있습니다.

예시(조건부 출력)

LOOP AT gt_scarr INTO gs_scarr WHERE carrid = 'AA'.
  WRITE: / gs_scarr-carrid, gs_scarr-carrname.
ENDLOOP.

데이터 삭제 (DELETE)

Internal Table에서 특정 데이터를 삭제할 수도 있습니다.

DELETE gt_scarr WHERE carrid = 'AA'.
  • 조건에 맞는 데이터가 모두 삭제됩니다.
  • 인덱스로도 삭제 가능: DELETE gt_scarr INDEX 2.
    • 2번째 데이터가 삭제됩니다.

정렬 (SORT)

원하는 필드에 맞춰서 정렬할 수 있습니다.

"하나의 필드
SORT gt_scarr BY carrname ASCENDING.

"어려개의 필드
SORT gt_scarr BY carrid ASCENDING carrname DESCENDING.
  • ASCENDING : 오름차순 ( 기본정렬이라 생략 가능 )
  • DESCENDING : 내림차순

중복 제거 (DELETE ADJACENT DUPLICATES)

필드 정렬후 중복을 제거할 수 있습니다.

SORT gt_scarr BY carrid.
DELETE ADJACENT DUPLICATES FROM gt_scarr COMPARING carrid.
  • 동일한 carrid 값을 가진 데이터 중 첫 번째만 남기고 삭제합니다.

마무리

이번 글에서는 Internal Table의 기본적인 활용법을 정리했습니다.

  • APPEND, INSERT → 데이터 추가
  • READ TABLE → 데이터 읽기
  • LOOP → 반복 처리
  • DELETE, SORT, DELETE ADJACENT DUPLICATES → 데이터 관리

Internal Table은 ABAP 프로그래밍의 핵심 자료구조로,
실무에서 데이터를 처리할 때 반드시 이해하고 있어야 합니다.

profile
ABAP 개발자

0개의 댓글