ABAP Dictionary란?
ABAP 프로그램에서 사용되는 오브젝트들을 뜻한다. 데이터 구조를 정의하고 관리하는 역할을 한다. ABAP Dictionary는 ABAP Workbench와 연결되어 있어 오브젝트 변경 시 바로 ABAP Program과 Screen에 영향을 미친다. 통상적으로 다음과 같은 3가지로 ABAP Dictionary를 분류한다.
1.Database Object : Table, View
2. Type Definition : Structure, Data Element, Table Type
3. Tool : Search Help, Lock Object
1. Database Object
Table은 실제 물리적인 공간으로 데이터베이스의 테이블을 구성한다. View는 하나 이상의 Table이 논리적으로 결합한 구조로서 실제 데이터를 가지는 것은 아니고 Table의 조합을 조건에 맞게 조회하고 수정할 수 있다.(일반적인 RDBMS와 달리 View가 수정가능하다.)
1.1 Table
테이블은 실제 데이터베이스의 물리적인 테이블과 ABAP Dictionary의 테이블이 존재한다. 위 그림과 같이 ABAP Dictionary에서 생성된 테이블은 SAP DB Utility가 번역하여 데이터베이스 테이블로 생성하게 된다.
ABAP Table은 3가지가 존재한다. Transparent Table, Pooled Table, Cluster Table이다. Pooled/Cluster Table은 여러 개의 테이블을 하나로 그룹 지어 놓은 오브젝트이다. 기본적으로 Transparent Table을 사용한다.
테이블 기본 속성은 DD02L에 저장되고 테이블 필드에 대한 정보는 DD03L에 저장된다.
유지보수를 허용하면 SM30에서 데이터를 유지보수할 수 있다.
필드 속성 정의
Data Element와 Predefined Type 두 가지 방식을 이용하여 지정할 수 있다. Data Element는 사용자가 직접 생성할 수 있는 오브젝트이다. 이미 존재하는 Data Element를 입력하면 데이터 타입과 길이와 내역이 자동으로 지정된다. Predefined Type을 이용하면 데이터 타입, 필드 길이, 내역을 직접 입력할 수 있다.
테이블의 필드는 데이터를 유일하게 구분할 수 있는 Key Field와 이외의 내용을 저장하는 Generic Field로 구성되어 있다.
1. Key Field는 총 16개까지 가능하다.
2. Key Field의 길이는 모두 합해서 최대 120자까지 가능하다.
3. Key Field는 Initial Value가 기본적으로 선택된다.
4. Key Field로 선택된 필드는 Primary Index로 자동 생성된다.
Null과 Initial Value의 차이
- Null은 값이 없는 것이다. 그러므로 메모리 공간을 차지하지 않는다. Null은 0, '', ' ', SPACE, 공백으로 표현될 수 없다. NULL은 할당. 연산. 비교할 수 없는 대상이다. ABAP언어에는 IS NULL, IS NOT NULL을 SQL 구문에서 사용할 수 있다.
- Initial Value는 값이 존재한다. 그러므로 메모리 공간을 차지한다. 0, '', ' ', SPACE, 공백 값으로 표현될 수 있다. Initial Value는 할당, 연산, 비교할 수 있는 대상이다. ABAP 언어네느 IS INITIAL, IS NOT INITIAL 비교연산자를 소스코드에 사용할 수 있다.
Reference Field와 Reference Table
수량 표현 데이터 타입 QUAN과 화폐량 표현 데이터 타입 CURR은 단위를 정의하는 참조 필드를 지정해야 한다. QUAN은 UNIT, CURR은 CUKY를 지정해야 한다. (밑의 예시 참조)
실제 데이터는 10.00으로 입력되어 있고 통화는 KRW를 쓴다면 소수점 두자리가 올라와 1000으로 표시된다.
Foreign Key
ABAP 영역에서 사용하는 Foreign Key는 ABAP Dictionary에만 저장되어 있으면 실제 DB에는 존재하지 않는다. 개념은 일반 RDBMS의 Foreign Key와 기본적으로 같다.
- Check Field : Foreign Key 필드에 입력되는 값이 존재하는지 체크하는 테이블의 필드를 말한다.
- Check Table에서 체크할 필요가 없는 필드를 Generic Foreign Key로 정의하면 된다. Constant Foreign Key를 설정하고 값을 입력하면 그 값을 가진 테이블의 row에서만 Foreign Key 값을 찾아서 입력할 수 있다. 가독성이 안 좋아 많이 사용하진 않을 것 같음..
Include Structure
공통으로 사용되는 필드들을 Structure로 생성하고 테이블에 Include하여 사용한다. 9단계 depth까지 가능하다.
Append Structure
하나의 테이블 또는 구조체에만 할당할 수 있는 구조체로서 테이블 자체를 수정하지 않고 필드를 추가할 수 있게 해준다. SAP입장에서는 이렇게 추가된 필드들을 Customer Field라고 한다.
Append Structure의 역할
1. Standard 또는 CBO 테이블에 신규 필드를 추가한다.
2. 이미 존재하는 테이블에 Foreign Key를 추가 및 정의한다.
3. 이미 존재하는 테이블에 필드의 탐색 도움말을 추가한다.
Index
SAP 내부에 인덱스 오브젝트는 없고 데이터베이스에 인덱스가 생성되고 ABAP Dictionary를 통해 사용하게 된다.
*ST05에서 실행계획 분석 가능
- 데이터의 입력/수정/삭제가 빈번하면 인덱스의 공간이 비대해져 성능이 떨어진다. 주기적으로 Rebuild를 통해 인덱스를 재정리할 수 있다. SAP에서는 Reorg라는 용어를 사용하고 BC가 OS에서 br*tools라는 SAP DB툴을 이용해서 주기적으로 Reorg를 수행하여 성능을 높힌다.
1.2 View
여러 테이블에 존재하는 데이터를 통합하여 조회하도록 지원한다. ABAP Dictionary에서 View를 활성화하면 데이터베이스에 생성된다. Maintenance Status는 View를 통해서 읽기 속성만 부여할 것인지 쓰기도 가능하게 할 것인지를 정의한다. 만약 Database view가 2개 이상의 테이블로 구성되어 있다면 이 View를 통해서는 읽기 작업만 할 수 있다.
View의 종류
- Database View : 여러 개의 테이블에서 데이터들을 추출한 View. SQL문에서 사용가능.
- Projection View
- Help View
- Maintenance View : 여러 개의 테이블을 동시에 유지보수할 수 있는 View를 의미하고 이 때 테이블들은 Foreign Key로 연결되어 있어야 한다. 프로그램 안의 SQL문에 사용불가능
2. Type Definition
2.1 Structure
구조체는 구조만 가지고 있다. ABAP 프로그램에서 참조로 사용되거나 테이블 또는 다른 구조체의 구조로 포함된다.(ICLUDE, APPEND). 프로그램에서 WORK AREA처럼 사용하기도 한다. Module Pool 화면(Screen)의 인터페이스를 정의하고 Function Module에서 파라미터 타입으로도 지정될 수 있다.
2.1 Table Type
Table Type은 ABAP Dictionary에 존재하며 인터널 테이블의 속성을 정의하는 목적으로 사용된다.
Table Type의 특성
- 인터널 테이블 라인의 데이터 타입 속성과 구조체를 정의하기 위한 Line Type.
- 인터널 테이블 데이터에 접근하고 관리하기 위한 옵션(Access Mode)
- 인터널 테이블의 Key(Key definition과 Key category)
RANGE Table Type
특별한 Table Type으로 ABAP 프로그램에서 RANGE 변수로 사용된다. 4개의 변수로 고정된 필드를 가진다. SIGN, OPTION, LOW, HIGH
RANGE 변수란?
- 개별 프로그램 내에서 RANGES 구문으로 변수를 선언하여 사용할 수 있다. RANGES 변수의 구조는 Header Line이 존재하는 SELECT-OPTIONS와 같은 구조이다. 외부에서 값을 입력받을 수 있는 것이 SELECT-OPTIONS라면 RANGES는 내부 변수로 사용하는 것을 주 목적으로 한다.
2.2 Domain
'SAP&ABAP > ABAP' 카테고리의 다른 글
(작업중)EASY ABAP - 11. Report Program (With ALV) (0) | 2024.06.10 |
---|---|
EASY ABAP - 10. FIELD SYMBOL(필드 심볼) (1) | 2024.06.05 |