SAP Data Type
SAP Data Type
1. 전체 데이터 타입 매핑
| **데이터 성격 (Data Nature)** | **CBO 물리 테이블 (define table)** | **CDS 뷰 / 인터페이스 (define view)** | **ABAP 클래스 로컬 변수 (DATA: TYPE ...)** | **Java / 웹 개발 매칭 레벨** |
| **고정 길이 문자형 숫자** | `NUMC(len)` | `abap.numc(len)` | `TYPE n LENGTH len` | `String` (Format "%03d" 등) |
| **고정 길이 일반 문자** | `CHAR(len)` | `abap.char(len)` | `TYPE c LENGTH len` | `char[]` / `String` (고정) |
| **가변 길이 대용량 문자** | `STRING` | `abap.string` | `TYPE string` | `String` / `Text` |
| **기본 정수 (4Byte)** | `INT4` | `abap.int4` | `TYPE i` | `int` / `Integer` |
| **대용량 정수 (8Byte)** | `INT8` | `abap.int8` | `TYPE int8` | `long` / `Long` |
| **단정밀도 부동 소수점** | `FLTP` | `abap.fltp` | `TYPE f` | `float` / `double` |
| **고정 소수점 연산 (Packed)** | `DEC(len, dec)` | `abap.dec(len, dec)` | `TYPE p LENGTH len DECIMALS dec` | `BigDecimal` (금액 계산용) |
| **수량 연산 전용 Packed** | `QUAN(len, dec)` | `abap.quan(len, dec)` | `TYPE p LENGTH len DECIMALS dec` | `BigDecimal` (수량/재고 연산) |
| **금액 연산 전용 Packed** | `CURR(len, dec)` | `abap.curr(len, dec)` | `TYPE p LENGTH len DECIMALS dec` | `BigDecimal` (통화 금액 연산) |
| **수량 단위 (UoM)** | `UNIT(3)` | `abap.unit(3)` | `TYPE c LENGTH 3` (또는 `unit`) | `String` (EA, KG, BOX 등) |
| **통화 키 (Currency Key)** | `CUKY(5)` | `abap.cuky(5)` | `TYPE c LENGTH 5` (또는 `cuky`) | `String` (KRW, USD, EUR 등) |
| **순수 날짜 (YYYYMMDD)** | `DATS` | `abap.dats` | `TYPE d` | `LocalDate` / `String` |
| **순수 시간 (HHMMSS)** | `TIMS` | `abap.tims` | `TYPE t` | `LocalTime` / `String` |
| **일반 타임스탬프 (UTC)** | `TIMESTAMP` | `abap.tstmp` | `TYPE timestamp` | `Instant` / `Timestamp` (Short) |
| **밀리초 포함 타임스탬프** | `TIMESTAMPL` | `timestampl` | `TYPE timestampl` | `LocalDateTime` (Long) |
| **클라이언트 식별자** | `CLNT` | `abap.clnt` | `TYPE c LENGTH 3` (기본 `sy-mandt`) | Client ID 세션 파라미터 |
| **Raw 바이너리 데이터** | `RAW(len)` | `abap.raw(len)` | `TYPE x LENGTH len` | `byte[]` (바이트 배열) |
| **가변 바이너리 데이터** | `RAWSTRING` | `abap.rawstring` | `TYPE xstring` | `Blob` / 파일 스트림 데이터 |
2. 영역별 특징
- CBO 물리 테이블 (
define table) 구역
- 특징: HANA DB 등 실제 데이터베이스 스토리지에 물리적인 카탈로그 스키마를 생성하는 레이어입니다.
- 암기 팁: 무조건 대문자 표준 형식을 사용하며, 온점(
.)이 절대 들어가지 않습니다.QUAN,CURR같은 수량/금액 타입은 반드시 상단에@Semantics어노테이션이나 우측에with referenced type으로 단위 컬럼(UNIT,CUKY)을 링크해 줘야 빌드가 통과됩니다.- CDS 뷰 / 인터페이스 (
define view) 구역
- 특징: DB 테이블 위에 가상 뷰나 OData API 게이트웨이 파라미터(Abstract Entity 모달 팝업 등) 프로토콜 규격을 선언하는 레이어입니다.
- 암기 팁: 반드시 앞에
abap.이라는 접두사(소문자 온점)가 붙는 추상화 내장 타입을 사용해야 파서가 인식합니다. (단,timestampl같은 일부 최신 데이터 원시 객체는 접두사 없이 통으로 소문자로 쓰기도 함)- ABAP 클래스 로컬 변수 (
DATA: TYPE ...) 구역
- 특징: Java의 Service 클래스 구현체 본문처럼 메서드 내부(
METHOD ~ ENDMETHOD)에서 비즈니스 알고리즘, 사칙연산, 루프문을 돌릴 때 메모리에 임시 변수를 선언하는 원시 언어 레이어입니다.- 암기 팁: 고정 길이를 가진 문자나 숫자를 선언할 때는 전통적인 ABAP 문법 서식인
TYPE 데이터유형 LENGTH 길이포맷을 준수해야 합니다. (수량/금액 계산용 Packed 타입의 경우 소수점 자릿수 지정을 위해 뒤에DECIMALS 자릿수구문이 필수로 붙습니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.