RAP에서 OData V2를 쓸 것인가, V4를 쓸 것인가
SAP RESTful Application Programming Model(RAP)에서 서비스를 발행할 때 OData V2와 V4 중 선택해야 합니다. 단순히 "V4가 최신이니까 V4"라는 이유로 선택하면 Fiori Elements 호환성 문제나 클라이언트 개발 복잡도 증가로 이어질 수 있습니다. 실무 기준에서 어떻게 선택해야 하는지 다룹니다.
OData V2 서비스 바인딩 생성
-- RAP Service Binding (V2)
@EndUserText.label: 'Sales Order Service V2'
define service ZUI_SalesOrder_V2 {
expose ZC_SalesOrder as SalesOrder;
expose ZC_SalesOrderItem as SalesOrderItem;
}
-- Service Binding 정의
-- Binding Type: OData V2 - UI
-- Interface: ZUI_SalesOrder_V2
-- Published: via /IWFND/MAINT_SERVICE or BTP
V2 바인딩은 SAPUI5의 sap.ui.model.odata.v2.ODataModel과 완벽 호환됩니다. 기존 Fiori 앱 대부분이 V2를 사용합니다.
OData V4 서비스 바인딩 생성
-- Service Binding (V4)
-- Binding Type: OData V4 - UI
-- V4에서 지원하는 추가 기능들:
-- - $apply (집계, 그룹화)
-- - Delta Queries ($deltatoken)
-- - Asynchronous Requests
-- - Server-Driven Paging
-- - Deep Insert (헤더 + 항목 동시 생성)
선택 기준 1: Fiori Elements 버전
-- V2가 필요한 경우:
-- - Fiori Elements v2 (SAP S/4HANA 1809 이전)
-- - ListReport + ObjectPage (기존 패턴)
-- - 레거시 Fiori 앱과의 통합
-- V4가 필요한 경우:
-- - Fiori Elements v4 (SAPUI5 1.84+)
-- - Flexible Column Layout
-- - Custom Pages
-- - Draft 활성화 (V4에서 더 완성도 높음)
선택 기준 2: 클라이언트 개발 스택
// V2 클라이언트 (기존 SAPUI5)
const oModelV2 = new sap.ui.model.odata.v2.ODataModel(
"/sap/opu/odata/sap/ZUI_SALESORDER_V2_SRV/",
{ useBatch: true }
);
// 기존 코드베이스와 호환
// V4 클라이언트
const oModelV4 = new sap.ui.model.odata.v4.ODataModel({
serviceUrl: "/sap/opu/odata4/sap/zui_salesorder/srvd/sap/zui_salesorder_v4/0001/",
synchronizationMode: "None",
autoExpandSelect: true
});
// OData V4 전용 API, V2와 다름
선택 기준 3: 기능 요구사항
-- V4에서만 지원하는 기능들:
-- 1. $apply — 서버 사이드 집계
-- GET /SalesOrders?$apply=groupby((Region),aggregate(Amount with sum as TotalAmount))
-- 2. Deep Insert — 헤더 + 항목 동시 생성
-- POST /SalesOrders
-- { "OrderId": "SO001", "Items": [{"ItemNo": 10, ...}] }
-- 3. Draft — V4에서 더 완성된 Draft 지원
-- 4. 비동기 Prefer:respond-async 지원
RAP에서 두 버전 동시 제공
-- 같은 CDS 뷰를 V2, V4 모두 바인딩 가능
-- Service 정의는 하나, 바인딩을 두 개 생성
define service ZUI_SalesOrder {
expose ZC_SalesOrder as SalesOrder;
}
-- Binding 1: ZUI_SALESORDER_V2 → OData V2 UI
-- Binding 2: ZUI_SALESORDER_V4 → OData V4 UI
-- 동일 서비스 정의, 다른 프로토콜
30초 결정 트리
- Fiori Elements v4 + 신규 개발 → OData V4
- 기존 V2 Fiori 앱 확장 → OData V2 유지
- $apply(집계), Deep Insert, Delta Query 필요 → OData V4
- 레거시 시스템과 통합 필요 → OData V2
- 팀이 V4 API 경험 없음 → 단기적으로 V2, 중장기적으로 V4 전환
공식 문서
RAP 서비스 바인딩 가이드는 SAP RAP 공식 문서에서 확인하세요. OData V4와 V2 비교는 SAP OData 공식 문서를 참고하세요.
댓글 0
아직 댓글이 없습니다.