ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SAP CDS VDM 관련 어노테이션 정리
    SAP 2026. 5. 20. 18:41

    vdm_annotations.pdf
    0.09MB

     

     

    SAP CDS VDM 관련 어노테이션 정리

    SAP CDS VDM 관련 어노테이션 정리

    1. VDM(Virtual Data Model) 어노테이션 개요

    VDM 어노테이션은 CDS View의 계층적 역할의미론적 분류를 정의한다. SAP S/4HANA에서 CDS View는 역할에 따라 Basic → Composite → Consumption 3계층 구조로 설계되며, VDM 어노테이션이 이 구조를 명시적으로 선언한다.

    DB Table / AMDP
    BASIC   I_ (Interface View) — 단일 테이블 기반, 재사용 기초
    COMPOSITE   중간 조합 View — 여러 Basic View 조합, 비즈니스 로직
    CONSUMPTION   C_ (Consumption View) — Fiori / OData 소비 목적
    💡 SAP 표준 네이밍 컨벤션: I_ = Basic, C_ = Consumption, P_ = Private/Projection

    2. @VDM.viewType — View 계층 분류

    설명대응 계층
    #BASIC단일 DB 테이블 기반, 재사용 기초 ViewInterface View (I_)
    #COMPOSITE여러 Basic View 조합, 비즈니스 로직 포함Composite View
    #CONSUMPTIONFiori / OData 등 소비 목적 ViewConsumption View (C_)
    #EXTENSION고객 네임스페이스 확장 ViewExtension View
    @VDM.viewType: #BASIC
    define view entity I_Material ...
    
    @VDM.viewType: #CONSUMPTION
    define view entity C_MaterialList ...

    3. @VDM.usageType — 사용 목적 및 품질 분류 ✔ 표준

    세 개의 하위 프로퍼티를 가지는 구조체형 어노테이션이다. View의 데이터 성격, API 품질 등급, 예상 데이터 크기를 함께 선언한다.

    @VDM.usageType: {
      dataClass:      #MASTER,
      serviceQuality: #A,
      sizeCategory:   #S
    }

    3-1. dataClass — 데이터 성격 분류

    설명예시
    #MASTER마스터 데이터자재, 벤더, 고객
    #TRANSACTIONAL트랜잭션 데이터구매오더, 전표
    #ORGANIZATIONAL조직 구조 데이터플랜트, 구매조직
    #CUSTOMIZING커스터마이징 데이터코드값, 설정 테이블
    #MIXED복합 성격여러 성격이 혼합된 경우

    3-2. serviceQuality — API 품질 등급

    설명
    #A최고 품질 — SAP가 성능·안정성을 보장하는 View
    #B일반 품질
    #C낮은 품질 / 내부 전용
    #PPrivate (외부 사용 불가)

    3-3. sizeCategory — 예상 데이터 크기

    설명
    #XXS매우 소량 (수십 건 이하)
    #XS소량
    #S소~중량
    #M중량
    #L대량
    #XL초대량 (수억 건 이상, 트랜잭션 테이블 등)
    💡 sizeCategory는 HANA 쿼리 실행 계획 최적화 힌트로 활용된다. 트랜잭션 데이터(전표 등)는 #XL로 선언하는 것이 일반적이다.
    @VDM.usage.type 은 존재하지 않는 표기이다. 반드시 @VDM.usageType (카멜케이스, 구조체형)으로 사용해야 한다.

    4. @VDM.lifecycle — View 생명주기

    @VDM.lifecycle.contract.type: #PUBLIC_LOCAL_API
    설명
    #PUBLIC_LOCAL_API외부 공개 API — SAP 안정성 보장
    #CUSTOMER_FACING고객 개발 허용
    #DEPRECATED사용 중단 예정
    #DEVELOPMENT_CONTRACT내부 개발 계약
    ⚠️ #PUBLIC_LOCAL_API로 선언된 SAP 표준 View는 직접 수정 불가 — Extension View 방식으로 확장해야 한다.

    5. @VDM.private — 내부 전용 표시

    @VDM.private: true
    설명
    trueSAP 내부 전용 — 외부 소비 불가, 고객 CDS에서 직접 참조 금지
    false기본값 — 외부 참조 허용

    6. @VDM.query.optional — 선택적 Association

    association [0..1] to I_Vendor as _Vendor
      @VDM.query.optional: true
      on $projection.VendorId = _Vendor.Vendor

    true로 설정하면 해당 Association을 소비 View에서 선택적으로 사용한다. 불필요한 JOIN을 줄여 성능 최적화에 활용된다.


    7. 실전 조합 예시

    @AbapCatalog.viewEnhancementCategory: [#NONE]
    @AccessControl.authorizationCheck: #CHECK
    @EndUserText.label: '구매오더 소비 뷰'
    
    @VDM.viewType: #CONSUMPTION
    @VDM.lifecycle.contract.type: #PUBLIC_LOCAL_API
    
    @VDM.usageType: {
      dataClass:      #TRANSACTIONAL,
      serviceQuality: #A,
      sizeCategory:   #XL
    }
    
    @UI.headerInfo: {
      typeName: 'Purchase Order',
      typeNamePlural: 'Purchase Orders'
    }
    
    define view entity C_PurchaseOrder
      as select from I_PurchaseOrder
    {
      key PurchaseOrder,
          Vendor,
          PurchaseOrderDate
    }

    8. VDM 어노테이션 요약 비교

    어노테이션형식주요 역할
    @VDM.viewType단일 값View 계층 역할 분류 (BASIC / COMPOSITE / CONSUMPTION)
    @VDM.usageType구조체 (3개 하위 프로퍼티)데이터 성격 + API 품질 + 크기 선언
    @VDM.lifecycle.contract.type단일 값공개 API 여부 및 안정성 계약
    @VDM.privateBoolean내부 전용 여부
    @VDM.query.optionalBooleanAssociation의 선택적 사용 여부
    #SAP_ABAP #CDS_View #VDM_Annotation #VDM_usageType #viewType #S4HANA #OData_V4 #Fiori
Designed by Tistory.