1. 인터널 테이블 값 할당

 

- 다른 변수와 같이 인터널 테이블도 MOVE 구문을 사용하여 값을 할당할 수 있다.

- 헤더라인이 있는 인터널 테이블은 헤더 라인 값만 복사됨

MOVE itab1 to itab2. " itab2 = itab1

 

MOVE itab1[] to itab2[]. "itab2[] = itab1[]. 구문과 동일

 

- 인터널 테이블 타입이 같아야 함 

- 타입이 다르면 칼럼 순서대로 값을 할당함 

- Unicode check active이 설정되어 있으면, 문자 타입과 숫자 타입 사이에 Alignment GAP이 생성되기에 에러가 발생할 수 있음

MOVE-CORRESPONDING itab1 to itab2.

- 헤더라인이 있으면 헤더 라인과 인터널 테이블이름은 같다. 이를 구분하기 위해 인터널 테이블의 BODY를 []기호를 이용해 구분한다.

- 대괄호 [] 는 헤더 라인이 있는 인터널 테이블의 Body내용을 가르킨다.

 

 

2. 인터널 테이블 초기화 

- `clear, refresh, free`

 

 1. CLEAR  변수나 내부 테이블의 내용을 초기화

  • 모든 타입에 사용 가능
  • 변수일 경우: 기본값으로 초기화
  • 내부 테이블일 경우: 데이터만 삭제, 구조는 남음
CLEAR lv_name.          " 문자열 → ''
CLEAR lv_num.           " 숫자형 → 0
CLEAR gt_itab.          " 내부 테이블 → 데이터만 삭제

- 구조(타입)은 그대로 남아 있음

- 메모리 공간을 반환(Release)하지만, 처음 메모리양을 요구한 정보는 삭제하지 않는다. 

 

 

2. REFRESH  내부 테이블의 모든 행 삭제 (데이터만 초기화)

  • CLEAR와 유사하지만 내부 테이블에만 사용
  • 내부적으로는 DELETE gt_itab WHERE 1 = 1. 과 유사
REFRESH gt_itab.

- 구조는 유지

- 메모리는 남아 있음

 

 

3. FREE  메모리까지 완전히 해제

  • 내부 테이블 사용 후 메모리를 반납하고 싶을 때 사용
  • 대용량 데이터 처리 후 자원 최적화에 도움됨
FREE gt_itab.

- 구조까지 삭제됨. 모든 행 데이터 삭제됨!

- 다시 쓰려면 `DATA:` 로 재선언 필요

- `READ` `APPEND` 등 다시 쓰면 에러가 발생할 수 있음

- 내부 테이블에 할당된 메모리까지 반납됨! 

명령어 대상 기능 요약 메모리해제 구조유지
CLEAR 변수, 구조체, 테이블 기본값 초기화
REFRESH 내부 테이블 모든 행 삭제
FREE 내부 테이블 데이터 삭제 + 메모리 해제

 

=> Internal Table has no data가 뜬다!

 

3. 인터널 테이블 정렬

SORT itab.   " 기본 정렬: 내부 테이블 구조 기준, 기본 키 순

- Standard or Hashed type의 인터널 테이블을 정렬할 수 있음

 - sort 정렬의 기본 값은 AS이다.

- Sorted table은 테이블 자체에 정렬된 데이터를 가지고 있기 때문에 SORT명령어를 사용하면 syntax error가 뜬다.

 

SORT BY — 정렬 기준 지정

SORT itab BY carrid connid.

- by 뒤에 정렬할 필드 지정 가능

- 여러 필드도 가능핟/ 먼저 carrid로 정렬하고, 그 안에서 connid 기준으로 정렬됨

write 하면 AA 0017, AA 0019, BA 0018이 출력된다.

 

 

STABLE — 정렬 시 기존 순서 유지

즉, 동일한 값들끼리는 원래의 순서를 그대로 유지
SORT gs_flight STABLE BY carrid.

- STABLE 옵션은 같은 데이터라도 처음 위치한 순서가 SORT에 의해서 순번이 변경되지 않도록 하는 것.

- sort 명령어를 사용할 때 마다 sort sequence가 계속 변한다.

- stable sort 구문을 활용하면, sort sequenc가 보존된다=> 하지만 정렬시간은 더 소요되는 단점이 있다. 

- 이미 정렬된 순서가 유지되게끔 쓰기 위해서 쓰기도함 

 

4. 인터널 테이블 속성 알아내기 

- internal table속성을 알고싶다면 DESCRIBE구문을 사용한다.

 

DESCRIBE TABLE itab [LINES gv_ line] [OCCURS gv_init] [KIND gv_kind].

 

- LINES는 인터널 테이블에 존재하는 현재 라인수를 반환

- OCCURS는 인터널 테이블의 초기 라인 수를 반환

- KIND는 인터널 테이블의 종류를 반환

- T => Standard Table

- S => Sorted Table

- H => Hashed Table

DESCRIBE FIELD <var> LENGTH <len> IN CHARACTER MODE.

- Length : 바이트 단위

- In character mode : 문자 단위

 

이렇게 하면 gv_line에 gt_flight의 행의 개수를 출력할 수 있다.

=> 총 4개!

 

'SAP' 카테고리의 다른 글

easy abap 27. append  (0) 2025.05.13
easy abap 26. INSERT  (0) 2025.05.13
easy abap 24. standard / sorted table / hashed table  (0) 2025.05.12
easy abap 23. Internal Table 정의, 생성  (0) 2025.05.11
easy abap - 22. Function Module & Function Group  (0) 2025.05.11

+ Recent posts