[ABAP] CDS View 입문 — Association과 Annotation으로 데이터 모델 설계하기
AI News
· 조회 3
![[ABAP] CDS View 입문 — Association과 Annotation으로 데이터 모델 설계하기](https://btpstacks.com/uploads/89621e65-7c50-4110-ba24-942fbf942707.png)
개요
CDS(Core Data Services) View는 SAP ABAP에서 데이터 모델을 정의하는 핵심 기술입니다. 기존 SE11 Dictionary View와 달리, SQL 기반 문법으로 Association(관계), Annotation(메타데이터), 계산 필드를 선언적으로 정의할 수 있습니다. S/4HANA와 RAP(RESTful ABAP Programming)의 기반이 되므로, Clean Core 개발의 필수 역량입니다.

핵심 개념
- CDS View 유형 3가지 — Basic View(단일 테이블 매핑), Composite View(여러 View 조합), Consumption View(분석/리포팅용 최종 뷰). VDM(Virtual Data Model) 아키텍처에서 계층적으로 설계합니다.
- Association — 테이블 간 관계를
association [1..*] to구문으로 정의합니다. 기존 JOIN과 달리 "필요할 때만" 데이터를 가져오는 Lazy Loading 방식이며, 네이밍 규칙은 언더스코어 접두사(예:_PurchaseOrder)를 따릅니다. - Annotation —
@AbapCatalog,@AccessControl,@UI,@Semantics등의 어노테이션으로 뷰의 동작, 권한, UI 렌더링을 제어합니다. 코드 변경 없이 메타데이터만으로 Fiori 화면을 생성할 수 있습니다.
코드 예제
판매 오더(VBAK)와 아이템(VBAP)을 Association으로 연결하는 Basic CDS View 예제입니다.
@AbapCatalog.sqlViewName: 'ZV_SO_HDR'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales Order Header View'
@VDM.viewType: #BASIC
define view Z_I_SalesOrderHeader
as select from vbak
association [1..*] to Z_I_SalesOrderItem as _Item
on $projection.SalesOrder = _Item.SalesOrder
{
key vbeln as SalesOrder,
erdat as CreationDate,
erzet as CreationTime,
ernam as CreatedBy,
auart as SalesOrderType,
vkorg as SalesOrganization,
netwr as NetAmount,
waerk as Currency,
// Association - 필요시에만 로딩
_Item
}
아이템 뷰에 UI Annotation을 추가한 Consumption View 예제입니다.
@AbapCatalog.sqlViewName: 'ZV_SO_ITEM'
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Sales Order Item View'
@VDM.viewType: #BASIC
@UI.headerInfo: {
typeName: 'Sales Order Item',
typeNamePlural: 'Sales Order Items'
}
define view Z_I_SalesOrderItem
as select from vbap
{
@UI.lineItem: [{ position: 10 }]
key vbeln as SalesOrder,
@UI.lineItem: [{ position: 20 }]
key posnr as SalesOrderItem,
@UI.lineItem: [{ position: 30 }]
matnr as Material,
@Semantics.quantity.unitOfMeasure: 'OrderUnit'
kwmeng as OrderQuantity,
vrkme as OrderUnit,
@Semantics.amount.currencyCode: 'Currency'
netwr as NetAmount,
waerk as Currency
}
실무 팁
- 성능 — Association은 path expression으로 사용될 때만 JOIN이 발생합니다. 불필요한 필드까지
_Item.*로 가져오면 성능이 저하되니, 필요한 필드만 명시하세요. - 권한 제어 —
@AccessControl.authorizationCheck: #CHECK를 설정하면 DCL(Data Control Language)로 행 단위 권한을 제어할 수 있습니다. 프로덕션에서는 반드시 활성화하세요. - 네이밍 — SAP VDM 규칙: Interface View는
Z_I_, Consumption View는Z_C_접두사를 사용합니다. - ADT 활용 — Eclipse ADT에서
Ctrl+1로 Quick Fix,F2로 Element Info를 확인하면 개발 속도가 크게 향상됩니다.

참고 자료
- SAP Tutorial: Create a Simple ABAP CDS View in ADT
- ABAP CDS Annotations 공식 문서
- SAP Learning: Building Data Models with CDS
- SAP Samples: Core Data Services Tutorial (GitHub)
📌 본 게시물은 AI(Claude)가 공개된 자료를 기반으로 자동 생성한 콘텐츠입니다. 기술 내용의 정확성은 SAP 공식 문서 와 교차 확인하시기 바랍니다.
™ SAP, S/4HANA, ABAP, Fiori, SAP BTP 등은 SAP SE 또는 그 계열사의 등록 상표입니다. 본 사이트는 SAP SE 와 공식적인 관련이 없는 비공식 학습 자료 입니다.
📧 저작권 침해 / 오류 / 콘텐츠 신고: btpstacks.com 의 "문의" 메뉴를 이용해주세요.