쌓고 쌓다
Primary, Secondary Key와 WITH TABLE KEY, WITH KEY 차이점 본문
Primary Key, Secondary Key

PRIMARY_KEY라는 키워드를 통해서 기본 키(Primary Key)를 설정할 수 있다.


PRIMARY_KEY가 Primary Key
CITY_KEY, COUNTRY_KEY가 Secondary Key가 된다.
- PRIMARY_KEY를 기재하지 않으면 기본으로 포함된것으로 간주한다. -

위의 선언으로 테이블을 만든다면

PRIMARY_KEY가 정의되어 있다.
아래는 PRIMARY_KEY와 WITH NON-UNIQUE KEY를 생략하고 선언한 테이블이다.

"DATA GT_SPFLI TYPE TABLE OF SPFLI"로 선언하면
PRIMARY_KEY라는 이름으로 모든 CHAR 필드를 기본키로 만든다.
PRIMARY_KEY를 생략하고 WITH UNIQUE KEY만 작성한 것과
모두 생략한 것에 차이가 있다.
전자의 경우 작성한 키로 PRIMARY_KEY를 자동으로 생성해주며
후자의 경우 모든 CHAR 키로 PRIAMRY_KEY를 생성한다.
READ TABLE
1. Primary Key

위의 3가지 방법 모두 동일한 방법이다.
2. Secondary Key
WITH TABLE KEY는 키 필드에 사용하는 문법이라 생각했지만
Secondary Key에도 WITH TABLE KEY를 사용한다.

보조 키(Secondary Key)에 정의된 모든 키 필드를 명시해줘야한다.
만약!
READ TABLE INDEX 1을 했다면
Secondary Key를 기준으로 정렬된 데이터를 반환하므로
의도치 않은 데이터가 나올 수 있음을 주의하자!
위의 SORTED KEY인 COUNTRY_KEY는
COUNTRYFR 필드 기준으로 정렬되어 INDEX 1을 뽑아냄을 주의하자!
WITH TABLE KEY와 WITH KEY 차이점
WITH TABLE KEY를 사용하면 Internal Table의 모든 키 필드를 명시해줘야한다.
WITH KEY는 모든 키 필드를 명시 안해도 된다.
그리고
BINARY SEARCH 부분에서 차이점을 갖는다.

WITH KEY를 사용할땐 정렬을하고 BINARY SEARCH를 사용하도록하자.
안하면 속도가 많이 느리다.
'SAP > ABAP' 카테고리의 다른 글
| [ABAP] 매크로 DEFINE 구문 (3) | 2025.12.14 |
|---|---|
| [ABAP] WHERE 조건절 STRING으로 동적으로 구성하기 (0) | 2025.11.22 |
| [ABAP] 피오리 GET_STREAM과 SMW0 엑셀 템플릿에 값을 넣고 응답하기 (0) | 2025.11.11 |
| Internal Table 종류와 Binary Search, OCCURS 0 구문 (0) | 2025.11.04 |
| [ABAP] TOP OF PAGE, TABLE 구조로 그리기 (0) | 2025.10.21 |