-
[RAP] #2 CDS ViewSAP/RAP 2026. 2. 22. 19:14
ABAP CDS(Core Data Services)
SAP에서 제공하는 데이터 모델링 기술로, 데이터베이스 레벨에서 View 형태로 데이터 모델을 정의하는 기술이다.
ABAP 프로그램에서 사용할 데이터 구조를 Database 레벨에서 View로 정의할 수 있으며,
Annotation을 사용하여 UI, 권한, OData 서비스 등 다양한 Metadata를 함께 정의할 수 있다.
또한 CDS는 Database에서 직접 실행되어 데이터 처리를 수행하는 Code-to-Data 방식을 사용하며,
ABAP SQL에서 Database Table처럼 사용할 수 있다.
즉, CDS는 ABAP 프로그램이 Database Table에 직접 접근하지 않고, CDS View를 통해 데이터를 조회하도록 하는 데이터 모델 계층이다.
※ 더 쉽게 정리
CDS는 "데이터를 꺼내기 쉽게 미리 만들어놓은 데이터 전용 View"
만약 CDS를 사용하지 않고 데이터를 조회할 때 (조인이 필요한 경우)
SELECT a~empno a~name b~deptname FROM zemp AS a JOIN zdept AS b ON a~dept = b~dept문제:
- 프로그램마다 JOIN 코드 작성해야함
- 반복 작업 많음
- 성능 최적화 어려움
CDS 방식을 사용하는 경우 CDS에서 미리 만들어 놓음
define view entity Z_EMPLOYEE as select from zemp join zdept on ... { empno, name, deptname }그래서 프로그램에서는 조인 사용 없이 바로 조회 가능
SELECT * FROM Z_EMPLOYEE //CDS명따라서 CDS를 사용하면
1. 프로그램이 쉬워짐 → SELECT만 하면 됨
2. 성능 좋아짐 → CDS는 DB에서 실행되기 때문이 속도 빠름
3. SAP Fiori에서 바로 사용 가능 → SAP Fiori는 CDS 기반으로 동작함
4. OData 서비스 만들기 쉬움 → Annotation 한 줄이면 서비스 생성 가능
CDS 등장 배경
CDS는 기존 ABAP Dictionary View의 한계를 해결하고,
SAP HANA 환경과 SAP Fiori 및 클라우드 환경을 지원하기 위해 SAP에서 도입한 데이터 모델링 기술이다.특히 Code-to-Data 방식과 Metadata 기반 서비스 개발을 지원하기 위해 등장하였다.

1. Dictionary View (과거 방식)
- ABAP Dictionary(SE11)에서 Database View를 생성하는 방식
특징
- ABAP Dictionary 기반 View
- SQL View 생성됨
- 기본적인 Join만 지원
문제점
- 기능 제한 (Join, 표현력 제한)
- Database 성능 활용 어려움
- Metadata 제공 불가능
- SAP Fiori 지원 어려움
- 클라우드 환경에 적합하지 않음
※ 이러한 한계를 해결하기 위해 CDS가 등장하였다.
2. CDS DDIC-based View
- CDS를 생성하면 ABAP Dictionary에 SQL View가 함께 생성되는 방식
CDS 만들면 객체가 2개 생성됨
- CDS Object
- SQL View (Dictionary Object)
특징
- Annotation 사용 가능
- Metadata 제공 가능
- Fiori 지원 가능
문제점
- Dictionary SQL View가 추가로 생성됨
- Dictionary 의존성 존재
- 객체 관리 복잡
3. CDS View Entity (최신 CDS 방식)
- Dictionary SQL View 없이 Database에 직접 생성되는 CDS View
특징
- SQL View 생성 안함
- Dictionary 의존성 없음
- 구조 단순화
- 성능 향상
- 클라우드 환경에 적합
CDS 역할
1. 데이터베이스에서 데이터 모델 정의
- CDS는 Database에서 직접 데이터 모델(View)을 정의하는 기술이다.
- SQL 기반으로 View를 정의하며, Code-to-Data 방식으로 Database에서 데이터를 처리한다.
- 또한 ABAP SQL에서 Table처럼 사용할 수 있다.
2. Metadata 제공
- CDS는 Annotation을 사용하여 Metadata를 정의할 수 있다.
- Metadata는 UI, 권한, 서비스 관련 정보를 포함하며,
- SAP Fiori 및 OData 서비스에서 사용된다.
3. ABAP RESTful 프로그래밍 모델 지원
- CDS는 RAP에서 Business Object의 데이터 모델을 정의하는 역할을 한다.
- Business Object의 동작은 Behavior Definition에서 정의한다.
Business Object (BO)
하나의 비즈니스 개념을 구성하는 기술 객체들의 집합이다.
예:
- Customer
- Sales Order
- Purchase Order
이런 업무 단위를 기술적으로 구현한 것이 BO라고 한다.
Business Object 구성 요소

1. CDS Data Definition
- 데이터 구조 정의
- 즉, BO의 데이터 모델 (Structure)
2. CDS Behavior Definition (BDEF)
- 데이터의 동작 정의
- 즉, BO의 기능 정의
3. ABAP Behavior Pool (Class)
- Behavior Definition에서 정의한 동작의 실제 구현
- 즉, BO의 실제 로직 구현
주요 ABAP CDS 개발 객체
개발 객체 (Development Object) 목적 (Purpose) 상세 내용 및 비고 (Remark) CDS Data Definition CDS 엔티티 정의(DDL) CDS 엔티티 종류:
• CDS View Entity (신규 표준)
• CDS DDIC-based Views (구형/사용 권장 안 함)
• CDS Projection Views
• CDS Abstract Entities
• CDS Table Functions
• CDS Custom Entities
• CDS HierarchiesCDS Access Control CDS 역할(Role) 정의 데이터에 대한 읽기 권한을 제어 (DCL) CDS Metadata Extension 메타데이터 추가 데이터 정의 외부에서 CDS 엔티티에 대한 추가 메타데이터(UI 관련 주석 등)를 저장 CDS Behavior Definition 비즈니스 객체 동작 정의 ABAP RAP 모델에서 트랜잭션 처리(생성, 수정, 삭제 등) 로직을 정의할 때 사용
CDS Data Definition 정의
1. CDS Data Definition 생성
Referenced Object에 참조 테이블명을 작성해도 되고 안해도 상관 없다.


2. CTS까지 선택 후 Next 하면 정의 템플릿을 선택할 수 있다.
- defineViewEntity : 최신 CDS
- defineView : 구 CDS

구 CDS view
@AbapCatalog.sqlViewName: 'ZCDSSCARR_B20_S' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'Scarr CDS View' @Metadata.ignorePropagatedAnnotations: true define view zcdsscarr_b20 as select from scarr { key carrid as Carrid, carrname as Carrname, currcode as Currcode, url as Url }신 CDS view
@AbapCatalog.viewEnhancementCategory: [#NONE] @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'Scarr CDS View 2' @Metadata.ignorePropagatedAnnotations: true define view entity zcdsscarr2_b20 as select from SCARR { key carrid as Carrid, carrname as Carrname, currcode as Currcode, url as Url }구 CDS View와 달리 어노테이션에 SQL View가 없어진 것을 확인할 수 있다.
그리고 폴더 하위에도 SQL View가 없다.

ABAP CDS View Entity 핵심 어노테이션
@AbapCatalog.dataMaintenance: #RESTRICTED // CDS 뷰에 대한 데이터 프리뷰(조회) 제한 설정 @AbapCatalog.viewEnhancementCategory: [#NONE] // CDS 확장을 통해 뷰 엔티티가 확장되는 방식 지정 @AccessControl.authorizationCheck: #NOT_REQUIRED // Open SQL에서 암묵적인 권한 체크 활성화/비활성화 /* 성능 관련 속성 지정 */ @ObjectModel.usageType.serviceQuality: #X @ObjectModel.usageType.sizeCategory: #S @ObjectModel.usageType.dataClass: #MIXED @AbapCatalog.entityBuffer.definitionAllowed: false // CDS 뷰 엔티티에 대한 테이블 버퍼링 활성화/비활성화 define view entity ZS4D430_R_Employee ... { // 뷰 엔티티 정의 시작 ... }어노테이션 그룹핑
@ObjectModel.usageType.serviceQuality: #X @ObjectModel.usageType.sizeCategory: #S @ObjectModel.usageType.dataClass: #MIXED /* 그룹핑 */ @ObjectModel:{ usageType:{ serviceQuality: #X, sizeCategory: #S, dataClass: #MIXED } }CDS 단위 필드
구 CDS View에서는 CUKY와 UNIT에 아래와 같은 어노테이션을 붙여줘야한다.
- @Semantics.currencyCode: true - CUKY(통화키)
- @Semantics.amount.currencyCode : '통화키필드명'
- @Semantics.unitOfMeasure: true - UNIT(단위)
- @Semantics.quantity.unitOfMeasure: '단위필드명'
@Semantics.amount.currencyCode : 'Currency' @EndUserText.label: 'myPrice' price as Price, @Semantics.currencyCode: true currency as Currency,그외 ABAP 어노테이션
1. View Annotation (뷰 전체 라벨)
- CDS View 엔티티 자체에 대한 설명을 정의
@EndUserText.label: 'Employee' // 뷰에 대한 라벨 (최대 60자) define view entity ZS4D430_R_Employee ...2. Element Annotations (개별 필드 라벨 및 도움말)
- 각 컬럼(필드)이 화면에 어떻게 표시될지 정의
@EndUserText.label: 'Date of Birth' -- 필드 라벨 (최대 60자) @EndUserText.quickInfo: 'Date of birth of this employee' -- 툴팁 (가변 길이) birth_date as BirthDate,
※ Active Annotations View
현재 CDS에 실제로 적용된 Annotation을 한눈에 보여주는 ADT 화면(View)
즉, 이 CDS에 어떤 Annotation이 최종적으로 적용되어 있는지 모아서 보여주는 창
확인 방법
CDS View 소스 코드의 빈 공간이나 엔티티 이름 위에서 마우스 오른쪽 버튼을 클릭 후 Open With → Active Annotations


Active Annotations View가 필요한 이유
CDS Annotation은 한 곳에서만 오는 게 아닌, Annotation 출처는 여러 곳이 있음
- 현재 CDS View에 직접 작성한 Annotation
- Include된 CDS에서 상속된 Annotation
- Metadata Extension (.mdex)
- Framework가 자동으로 추가한 Annotation
그래서 코드만 보면 최종적으로 어떤 Annotation이 적용됐는지 헷갈릴 수 있기 때문에 이걸 정리해서 보여준다.
CDS View 기반 OData Service 등록
1. CDS View에 OData Annotation 추가 후 Activate한다.
... @OData.publish: true @OData.entitySet.name: 'Flights' define view zcdsflight2_b20 as select from sflight { ...@OData.publish: true → CDS View 기반 OData Service 자동 생성된다. (Service 명 : CDS 이름 + "_CDS")
@OData.entitySet.name → EntitySet 명을 지정할 수 있다.
2. SAP GUI에서 /n/iwfnd/maint_service 프로그램으로 이동 후 서비스 등록을 한다.
등록 화면에서 위에서 생성한 CDS View 명을 검색한 후 상단에 Get Services 버튼 클린한다.
조회된 Service 선택 후 Add Selected Services 버튼을 클릭한다.


3. 아래와 같은 창이 뜨면 패키지 선택 후 완료 버튼을 누르면 OData Service가 등록이 된다.

4. 이후 Gateway Client 프로그램에서 테스트 해볼 수 있다.

'SAP > RAP' 카테고리의 다른 글
[RAP] #7 Annotation 정리 (1) 2026.03.03 [RAP] #6 RAP (0) 2026.03.01 [RAP] #5 CDS View 추가 문법 (2) (0) 2026.02.26 [RAP] #4 CDS View 추가 문법 (1) (0) 2026.02.25 [RAP] #1 ADT- ABAP Development Tools (0) 2026.02.21