SAP Table Data Class Size Category 설정시 고려사항

SAP Table Data Class Size Category 설정시 고려사항

sap 테이블을 생성할 때 Technical Setting 메뉴를 통해 Data Class와 Size Category를 반드시 설정해 주어야 하는데요, 테이블의 성격이나 예상되는 사이즈에 맞게 Data Class와 Size Category를 어떤 기준에서 선택할 수 있을까 정리해 보았습니다.

SAP Table Data Class 설정

Data Class 란, 데이터가 저장되는 위치와 관련된 정보를 지정합니다. 과거 ECC 버전에서는 의미가 있었는데, 인메모리 DB인 SAP Hana 에서는 어떤 의미가 있을지는 좀 더 확인해 보아야 할 거 같습니다.

ECC 버전의 스탠다드 테이블과 Hana 버전의 스탠다드 테이블을 비교해도 딱히 변한 건 없어 보입니다.(물론 자세히 다 확인해 보면 다를 수도…)

우선, SAP 공식 문서에서 이야기 하는 sap 테이블 데이터 클래스 셋팅 사항에 대한 정의는 다음과 같습니다.

APPL0 마스터데이타, 트랜스패런트 테이블
APPL1 트랜잭션 데이타, 트랜스패런트 테이블
APPL2 조직과 커스터마이징
USER 고객 데이타클래스
USER1 고객 데이타클래스

APPL0

거의 변경되지 않는 데이터를 지정하는 클래스로 일반적으로 마스터 테이블 역할을 하는 테이블을 주로 지정하며, 자주 변경되지 않는 데이터를 담는데 지정합니다.

APPL1

자주 그리고 많이 바뀌는 데이터를 주로 받게 됩니다. 즉, 일반적인 트랜잭션 테이블은 APPL1으로 지정하면 됩니다.

APPL2

시스템 구성 시 지정된 데이터에 주로 사용되며, 변경이 거의 없는 데이터 즉, Configuration 성격에 많이 사용되게 됩니다.

 

SAP 스탠다드가 사용하는 테이블 예제를 통해 우리가 확인을 해보면 아마도 용도를 쉽게 구분해서 사용하실 수 있을 거로 보입니다.

Standard Table을 통해 확인해 본 Data Class 용도

가장 먼저 BKPF 테이블인데요, 회계(FI)전표의 헤더 테이블로 매우 많은 데이터와 잦은 트랜잭션이 발생하는 테이블입니다.

따라서 APPL1 데이터 클래스로 지정되어 있습니다.

BKPF는 자주 트랜잭션이 발생하므로, 데이터 클래스는 APPL1로 지정되어 있음

다음은 관리회계(CO)의 코스트센터 마스터 테이블은 CSKS 입니다.

해당 테이블은 관리회계 영역에 비용 부서를 관리하는 마스터 테이블로, 변경은 발생하나 자주 발생하지 않는 마스터 테이블입니다.

따라서 CSKS 마스터 테이블은 APPL0 로 지정되어 있습니다.

CSKS는 코스트센터 마스터이므로 APPL0 데이터 클래스로 지정됨

마지막 아래의 테이블은 SAP 전체 조직 구조 중 회사코드 마스터 테이블인 T001 입니다.

CSKS 테이블과 마찬가지로 마스터 테이블이긴 하나, 거의 변경이 발생할 수 없는 조직 구조에 대한 데이터가 정의되어 있습니다.

(변경이 발생한다면 프로젝트 성 수정 사항이겠죠…)

따라서 APPL2 Data Class로 정의되어 있음을 확인할 수 있습니다.

T001 회사코드 테이블은 조직 구조 이므로 거의 변경될 일이 없어 APPL2로 지정

위의 예시를 보건대 CBO 테이블 생성시 어떤 데이터 클래스를 선택해야 하나 고민이 된다면, 이렇게 정리하면 될 거 같습니다.

마스터 테이블을 생성할 때에는 APPL0으로 지정하면 되고, 일반 데이터 트랜잭션 테이블을 생성할 때에는 APPL1 으로 지정하면 됩니다.

SAP 테이블 Size Category

SAP 테이블 생성시 사이즈 카테고리는 최초 DB가 생성시 확보되는 공간 크기 및 그 공간을 다 사용했을 때 재 확보하는 공간 사이즈를 설정합니다.

Size Category는 0에서 6까지의 숫자로 지정하게 되는데, 숫자가 높을수록 큰 ROW SIZE를 확보하게 됩니다.

즉, 생성시 선택된 Size Category 만큼 테이블 생성시 Initial 공간으로 확보되게 되며, 해당 공간을 다 썼을 때에는 선택한 카테고리 만큼의 Row를 미리 확보하게 되는 개념입니다.

sap 테이블 생성시 size category

만약 예상된 데이터 건수가 설정보다 많다면, 블록을 계속 재확보 해야 하므로, 쓰기 작업이 지연 되고 디스크 I/O 작업이 늘어나게 되므로 시스템 성능에 영향을 줄 수 있습니다.

그 반대로 데이터 건수가 설정보다 적다면, 미리 확보해둔 블록 크기를 사용하지 않으므로 디스크의 공간 낭비가 발생할 수 있습니다.

물론 하드웨어의 눈부신 발전으로 가격이 그만큼 싸진 만큼 세세히 고려하지 않고 적당히 할당해도 크게 무방하다 생각합니다.

하지만, 예를 들어 월 100만건 이상 큰 데이터가 적재되고 트랜잭션이 자주 이루어지는 테이블이 있다면, 시스템에 무리를 줄 수 있으므로 사이즈 카테고리가 적절한지 고민해 볼 필요는 있을 것으로 생각됩니다.


이상으로 오늘은 SAP 테이블 Data Class와 Size Category에 대해서 알아보았습니다. 좀 더 자세한 사항은 SAP 공식 문서(Technical Setting)를 참고해 보시면 됩니다.

대용량이 예상되는 테이블 설계시에는 꼭 참고해 보시기 바랍니다.

함께 보면 좋은 글

ABAP READ TABLE 사용법 및 예제 정리
ABAP Collect 사용법 및 예제
ABAP CONCATENATE 사용법 및 예제 정리
SAP 테이블 데이터 수정 SE16N 사용법(+권한 없을 때 se16n_interface)