콘텐츠
이번 시간에는 SAP 의 테이블을 생성하는 방법을 정리해볼 생각이다. 이전 시간에 다루던 Internal Table(내부 테이블)과 달리 이번에 다루는 것은 우리가 프로그래밍을 하면 꼭 다루게 될 DB(데이터베이스) 테이블을 생성할 예정이다.
SAP는 손쉽게 DB 테이블을 만들 수 있다.
만든 이후엔 다음 포스팅에서 SQL 같은 쿼리 언어로 쉽게 데이터를 조회, 수정, 삭제 할 수 있다. 이 포스팅 에선 로컬 오브젝트로 DB 테이블을 만들고 SQL 조회 해 사용해 보겠다.
DB 테이블 생성
생성하는 방법은 아주 간단한데 로컬 오브젝트를 다룬 글 안에 프로그램 생성 방법과 거의 비슷하게 생성할 수 있다.
SE80 에서 생성
T-CODE SE80으로 접속하고 표시되는 Object Navigator 에서 $TMP 에 우클릭 -> Create -> Dictionary Object -> Database Table 을 선택한다.
그럼 Create Table 팝업 창에 사용할 Table 명을 입력 한다. 나는 로컬 오브젝트로 테이블을 생성할 것이기에 Y로 시작하는 이름을 사용했다. 이번에도 “Y + 계정명 + 오브젝트 유형 + 숫자” 을 고려하여 생성했다.
SE11 에서 생성
SE11 은 테이블, 타입, 도메인 등의 Dictionary 오브젝트를 생성, 유지보수 하는 프로그램으로 접속하는 T-CODE 이다. 여기서 Database table 에 라디오 버튼을 선택한 이후 테이블 명을 입력한 다음 Create 버튼을 누르면 된다.
테이블 관련 정보 입력
Table 명을 입력하면 Description 등 설명을 입력하는 화면이 나온다. 해당 화면의 구성을 좀 더 살펴보자.
Short Dscription
Short Dscription 은 내가 만든 테이블의 간략한 설명을 적는 곳이다.
Delivery Class
Delivery Class 는 한글로 번역하면 “배송 클래스” 정도로 테이블에 저장될 데이터가 무엇인지 정의하는 것이다. 보통은 A 로 작성하면 되지만 한번 상세하게 값을 정리하면 다음과 같다.
- A: 애플리케이션 테이블 (마스터 및 트랜잭션 데이터)
- C: 사용자 정의 테이블, 사용자만 유지 관리, SAP 수입은 없음
- L: 임시 데이터 저장용 테이블, 비어 있는 상태로 제공
- G: 사용자 정의 테이블, SAP 업데이트로부터 보호, 오직 삽입만 가능.
- E: 제어 테이블, SAP와 고객은 별도의 키 영역을 가짐
- S: 시스템 테이블, SAP만 유지 관리, 변경은 수정을 의미함
- W: 시스템 테이블, 별도의 TR 객체에 의해 내용이 전송 가능
보통은 A만 썼다. 스탠다드 테이블엔 S 타입도 좀 있을 것 같고 로컬 오브젝트로 잠시 다룰 테이블은 C나 L 로 만들어도 무방할 듯 하다. 어차피 여긴 혼자 사용하는 서버니까 A나 L로 만들면 무방할 듯 하다.
Data Browser/Table View Editing
이 설정은 테이블의 “데이터를 데이터 브라우저”나 “테이블 뷰” 라는 기능으로 데이터를 보고 편집 할 수 있게 할 지에 대한 설정을 말한다.
여기서 의 설정은 SE16N, SM30 등의 편집 기능으로 편집 가능 여부를 불가능 하게 하거나 설정하는 기능이다. 보통 Allowed 하고 바꿔 본 적이 없어 한번 테스트 해보려고 했는데…
엇, 그런데 디벨롭버전 SAP 에서 SE16N 이 접근이 안된다…? 이건 한번 다음에 해결해 봐야겠다.
어쨌든 설정 값은 다음 세 가지가 있다.
- Display/Maintenance Allowed with Restrictions: 편집이 가능하나 특정 필드를 제한, 특정 권한만 가능 등 예외를 둔다. 기본으로 설정되어 있다.
- Display/Maintenance Allowed: 제한을 두지 않고 편집을 허용한다.
- Display/Maintenance Not Allowed: 편집을 허용 하지 않는다.
최종적으로 다음과 같이 설정 했다.
필드 설정
다음으로 해야 할 작업은 위의 탭 중 필드 탭에 들어가 테이블 내의 필드를 설정하는 과정이다. 나는 가볍게 개발 용 테이블을 만드는 중이니까 다음과 같이 설정했다.
기본적으론 테이블인 Key 필드가 한 개 이상 필요하다. 해당 화면에서 Key 체크 박스를 체크한 필드가 Key 필드가 된다. 주의할 점은 Key 필드는 맨 앞부터 순서대로 위치해야 한다.
그리고 필드의 데이터 요소를 설정해 줘야 하는 데, 이는 SAP 내의 또 다른 Dictionary 오브젝트 인 Data Eletement 를 가져오거나 생성 해 두었으면 사용하면 되지만, 굳이 그렇지 않다면 위에 Built-In Type 버튼을 누를 시 Data Type 과 Length 를 직접 화면 내에서 입력해 설정할 수 있다.
여기까지 설정 했다면 Ctrl + S 혹은 상단의 디스켓 모양을 눌러 저장하고 Ctrl + F3 혹은 상단의 마술봉 모양 버튼을 눌러 활성화 해주면 된다. 단, 활성화 시 다음과 같은 화면이 출력 될 것이다.
Define Technical Settings
해당 화면은 한글론 “기술적 요소” 설정 정도로 표현되는데 Delivery Class 은 데이터가 어떻게 저장되고 사용 될 지가 주된 내용이면 테이블의 어떤 유형의 데이터가 저장 할지를 설정한다.
이 설정에 따라 물리적인 저장 방식, 성능 최적화에 영향을 준다.
Data Class
이 안엔 다음과 같은 값들이 있다.
- APPL0:마스터 데이터, 투명 테이블
- APPL1: 트랜잭션 데이터, 투명 테이블
- APPL2: 조직 및 사용자 정의
- DDIM: BW에서의 차원 테이블
- DFACT: BW에서의 사실(Facts) 테이블
- DODS: BW에서의
- ODS: 테이블
- USER: 고객 데이터 클래스
- USER1: 고객 데이터 클래스
보통은 APPL0, APPL1 둘 중 하나를 사용 했는데 APPL0 은 설정 값, 사원정보와 같은 마스터 데이터 테이블을 만들 때, APPL1 은 매일 생성 되는 데이터 (전표 등) 를 담을 때 사용 했다.
Size Category
Data Class 를 서정하고 나면 숫자를 입력해서 카테고리를 정할 수 있다. 이름과 같이 예상되는 테이블 데이터 양의 범위를 지정하는 것. 운영 중 이 설정으로 크게 문제 생긴 적은 없다.
Size Category 까지 설정 했으면 저장 하게 되면 다음 메세지가 출력 되며 활성화가 완료 된다.
No 를 누르면 생성이 완료 된다.