포스트

DataBase Table

DataBase Table

1. Annotation

  • @EndUserText.label : ‘Project PMS Task Table’
  • SE11 등에서 조회 시 화면에 나타나는 테이블의 한글/영문 설명(Short Text)
  • @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
**옵션값****의미 및 설명**
**`#NOT_EXTENSIBLE`****확장 불가.** 테이블 구조를 절대 변경하지 못하도록 잠급니다. (현재 설정값)
**`#EXTENSIBLE_CHARACTER`****문자형 필드만 확장 허용.** 단, 추가되는 필드는 반드시 문자형(Char, Numc 등) 데이터 타입이어야 합니다.
**`#EXTENSIBLE_CHARACTER_NUMERIC`****문자형 및 숫자형 필드 확장 허용.** 문자형뿐만 아니라 정수형(Int), 금액/수량 필드까지 추가할 수 있습니다.
**`#ANY_STRUCTURE_CHARACTER_NUMERIC`****제한 없이 확장 허용.** 딥 구조(Deep Structure)를 제외한 모든 타입의 구조 확장을 허용합니다. (가장 유연함)
  • @AbapCatalog.tableCategory : #TRANSPARENT
**옵션값****의미 및 설명**
**`#TRANSPARENT`****투명 테이블.** SAP ABAP Dictionary의 정의와 실제 DB(HANA DB 등)의 테이블 구조가 1:1로 정확히 일치합니다. CBO 마스터/트랜잭션 테이블을 만들 때 **99% 이 옵션을 사용**합니다.
**`#GLOBAL_TEMPORARY`****글로벌 임시 테이블 (GTT).** 프로그램 실행 중에만 임시로 데이터를 적재하고, 세션이 끝나거나 `COMMIT WORK` / `ROLLBACK WORK`가 수행되면 데이터가 자동으로 지워지는 휘발성 테이블입니다.
  • @AbapCatalog.deliveryClass : #A
**옵션값****의미 및 설명**
**`#A`****Application 테이블.** 현업이 사용하는 일반적인 데이터(마스터, 전표 등)가 쌓이는 곳입니다. 클라이언트 카피 시 데이터가 함께 복사될 수 있지만, 시스템 이관(TR) 시 데이터 자체는 자동으로 넘어가지 않습니다.
**`#C`****Customizing 테이블.** 개발자나 BC가 설정하는 구성 데이터용 테이블입니다. 이 테이블에 데이터를 입력하면 **자동으로 TR(이관 요청서) 생성이 유도**되며, 운영 서버로 데이터가 함께 배포됩니다.
**`#L`****Local 테이블.** 주로 임시 데이터나 로그성 데이터를 저장하는 보관소 역할을 합니다. 클라이언트 카피를 하더라도 데이터가 복사되지 않고 비어있는 상태로 유지됩니다.
  • @AbapCatalog.dataMaintenance : #RESTRICTED
**옵션값****의미 및 설명**
**`#RESTRICTED`****제한적 유지보수.** 기본적으로 직접 수정이 제한되지만, 별도의 데이터 브라우저 권한이 있는 관리자는 수정할 수 있는 상태입니다.
**`#ALLOWED`****유지보수 허용.** `SE16N` 등에서 편집 모드로 데이터를 직접 자유롭게 수정할 수 있도록 완전히 허용합니다. 개발 단계나 관리가 필요한 CBO 셋팅 테이블에 자주 씁니다.
**`#NOT_ALLOWED`****유지보수 금지.** 어떠한 표준 툴로도 테이블 데이터를 직접 수정할 수 없게 철저히 막습니다. 오직 프로그램 로직(RAP, ABAP 소스코드)을 통해서만 데이터가 입력/수정되어야 하는 중요 트랜잭션 테이블에 적용합니다.

2. 테이블 정의

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
define table ztwbs_task2 {

  key client      : abap.clnt not null;
  key prog_key    : sysuuid_x16 not null;
  prog_no         : abap.char(10);
  prog_name       : abap.char(100);
  screen_name     : abap.char(100);
  biz_type        : abap.char(100);
  category        : abap.char(100);
  deploy_yn       : abap.char(1);
  dev_type        : abap.char(100);
  developer       : abap.char(10);
  complete_yn     : abap.char(1);
  ui_type         : abap.char(100);
  git_url         : abap.string(0);
  iam_id          : abap.char(30);
  is_relevant     : abap.char(1);
  obj_type        : abap.char(100);
  package_name    : abap.char(100);
  srv_obj         : abap.char(100);
  srv_uri         : abap.string(0);
  start_date      : abap.dats;
  end_date        : abap.dats;
  progress        : abap.int1;
  created_by      : abp_creation_user;
  created_at      : abp_creation_tstmpl;
  last_changed_by : abp_locinst_lastchange_user;
  last_changed_at : abp_locinst_lastchange_tstmpl;

}

3. 데이터 타입

**분류****데이터 타입 (ABAP Type)****길이 (Length)****소수점 (Decimals)****주요 용도 및 설명**
**문자형**`abap.char( n )`1 - 13333-일반 텍스트, 고정 길이 코드, ID 필드 등
**문자형**`abap.string`가변 길이-대용량 텍스트, 주소 명세, 가변 길이 문자열
**숫자형**`abap.int4`10-일반 정수, 일련번호, 카운터 (\$4\\text\{ Byte\}\$ 정수)
**숫자형**`abap.dec( len, dec )`1 -310 - 1진척도(%), 수량, 금액 연산 등 고정소수점 팩트 데이터
**숫자형**`abap.fltp`16-매우 정밀한 과학적 계산용 부동소수점 데이터
**날짜/시간**`abap.dats`8-날짜 데이터 (포맷: `YYYYMMDD`)
**날짜/시간**`abap.tims`6-시간 데이터 (포맷: `HHMMSS`)
**특수 규격**`abap.unit( n )`1 - 3-수량 참조 필드용 단위 코드 (예: `EA`, `KG`, `%`)
**특수 규격**`abap.cuky( n )`1 - 5-금액 참조 필드용 통화 코드 (예: `KRW`, `USD`)

4. 테이블 생성 시 필수 값

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
...
define table ztbpprod {

  // 1. 시스템 기본   복합  (Composite Keys)
  key client      : abap.clnt not null;
  key plan_id     : abap.char(20) not null; // 사업계획ID
  key version     : abap.char(2) not null;  // 버전ID
  key gjahr       : gjahr not null;         // 회계연도
  key poper       : poper not null;         // 
  key werks       : werks_d not null;       // 플랜트
  key matnr       : matnr not null;         // 제품 (자재번호)

  // 2. 일반 데이터  수량 필드 (Data & Quantity Fields)
  sales_qty       : meng13;                 // 판매수량
  open_qty        : meng13;                 // 기초수량
  close_qty       : meng13;                 // 기말수량
  prod_qty        : meng13;                 // 생산수량

  @Semantics.unitOfMeasure: true
  meins           : meins;                  // 단위 (EA )

  // 3. Generate ABAP Object 필수 관리 필드 (Audit Fields)
  created_by      : abp_creation_user;
  created_at      : abp_creation_tstmpl;
  last_changed_by : abp_locinst_lastchange_user;
  last_changed_at : abp_locinst_lastchange_tstmpl;

}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.