SAP·ABAP/RAP

RAP Data Model — CDS View Entity

SEO_Joon 2025. 11. 4. 11:06

이 부분은 RAP의 기초이자 모든 구성요소의 출발점이므로, 구조와 개념을 명확히 이해하는 것이 매우 중요합니다.

 

1️⃣ CDS View Entity란 무엇인가?

CDS(View) Entity는 RAP에서 데이터 모델을 정의하는 핵심 객체입니다.
데이터베이스 테이블을 직접 노출하지 않고,
테이블의 데이터를 논리적으로 표현하고 구조화하는 계층을 담당합니다.

CDS는 Core Data Services의 약자로,
ABAP Dictionary와 SQL을 확장하여 비즈니스 데이터 모델을 선언적으로 정의하는 언어입니다.

📌 쉽게 말해,
“테이블 데이터를 가공 없이 그대로 쓰는 대신,
의미 있는 데이터 구조(뷰)를 미리 정의해놓고 사용한다”는 개념입니다.

 

 

2️⃣ CDS View Entity의 주요 특징

구분 내용
데이터 소스 기존의 ABAP Dictionary 테이블 또는 다른 CDS View
정의 언어 SQL과 유사한 ABAP CDS DDL (Data Definition Language)
엔티티(Entity) CDS View Entity는 데이터베이스 오브젝트로 생성되며, 직접 SELECT 가능
Annotation 기반 UI, OData, Authorization 등 다양한 속성을 선언적으로 지정 가능
RAP와의 관계 RAP의 Behavior Definition은 CDS View Entity를 기반으로 작성됨

 

3️⃣ CDS View Entity의 기본 구조

다음은 CDS View Entity의 기본적인 정의 예시입니다.

@AbapCatalog.sqlViewName: 'Z_I_CUSTOMER'
@EndUserText.label: 'Customer Entity'
define view entity Z_I_Customer
  as select from z_t_customer
{
    key customer_id    as CustomerID,
        customer_name  as CustomerName,
        city,
        country,
        created_by,
        created_at
}
 

📘 구성 요소 설명

  • @AbapCatalog.sqlViewName: CDS가 내부적으로 생성하는 SQL 뷰의 이름입니다.
  • @EndUserText.label: CDS에 대한 설명(텍스트)을 지정합니다.
  • define view entity: CDS View Entity를 선언하는 키워드입니다.
  • as select from: 어떤 테이블에서 데이터를 읽을지 지정합니다.
  • key: 기본 키 역할을 하는 필드를 지정합니다.

RAP의 Behavior Definition은 반드시 “CDS View Entity”를 기반으로 작성해야 합니다.
기존의 **CDS View (define view)**는 RAP에서 Behavior를 연결할 수 없기 때문에
RAP용으로는 반드시 **“View Entity”**로 정의해야 합니다.

 

 

4️⃣ CDS View Entity의 계층 구조

하나의 RAP 비즈니스 객체(BO, Business Object)는 여러 CDS View Entity가 계층적으로 구성됩니다.

예를 들어 “주문(Order)”과 “주문항목(Order Item)” 관계를 구성한다고 가정하면 다음과 같습니다.

 

ZI_Order           →  Root Entity
ZI_OrderItem    →  Child Entity (Composition)

define view entity ZI_Order
  as select from zorder
  composition [0..*] of ZI_OrderItem as _OrderItems
{
  key order_id,
      customer_id,
      order_date,
      total_amount
}

define view entity ZI_OrderItem
  as select from zorderitem
  association to parent ZI_Order as _Order
    on $projection.order_id = _Order.order_id
{
  key item_id,
      order_id,
      product_id,
      quantity,
      price
}

핵심 관계

  • composition [0..*] : 부모와 자식(1:N) 관계를 의미합니다.
  • association to parent : 자식 엔티티가 부모 엔티티를 참조하도록 설정합니다.
    이러한 관계를 통해 RAP는 부모-자식 구조의 데이터를 한 번에 처리할 수 있습니다.

 

5️⃣ RAP에서 CDS가 하는 역할 요약

역할 설명
데이터 모델 정의 테이블 구조를 논리적으로 재구성하여 의미 있는 데이터 엔티티를 정의합니다.
Behavior 연결 기반 Behavior Definition(동작 정의)은 항상 CDS View Entity를 기반으로 작성합니다.
Projection의 원본 Projection View는 CDS View Entity를 기반으로 외부 노출용 구조를 만듭니다.
서비스 노출 준비 CDS에 지정한 Annotation(@OData.publish, @UI.lineItem 등)을 통해 자동으로 UI 또는 OData에서 활용됩니다.

 

(추가)  RAP에서의 CDS Annotation 활용

RAP에서는 CDS Annotation을 통해 비즈니스 데이터의 속성, 의미, 그리고
UI 표현 방식에 대한 **메타데이터(Metadata)**를 선언적으로 정의합니다.
Annotation은 UI를 직접 제어하거나 렌더링하는 코드가 아니라,
OData 서비스의 메타데이터에 포함되어 Fiori Elements가 이를 해석하여 UI를 구성하도록 돕는 선언 정보입니다.

 

💡 동작 원리

CDS View Entity에 정의된 Annotation은
Service Definition과 Service Binding을 거쳐 OData 서비스로 노출될 때
**OData Metadata Object(XML)**에 포함됩니다.

이 Metadata는 Fiori Elements 애플리케이션이 읽어서
리스트, 폼, 필드의 노출 순서와 레이블 등을 자동으로 결정합니다.

즉, CDS → OData Metadata → Fiori Elements 순으로
Annotation이 UI에 간접적으로 반영됩니다.

'SAP·ABAP > RAP' 카테고리의 다른 글

SAP RAP의 개요 (RAP 전체의 구조와 기본 개념)  (0) 2025.10.21