공식적으로 ABAP 7.55 릴리즈부터 새로운 유형의 ABAP CDS를 사용할 수 있습니다.
이것은 'CDS View 엔터티'라고 이야기 합니다.
이것은 최근 몇 년동안의 전통적인 CDS DDIC 기반의 View를 대체하기 위해 만들어 졌습니다.
( 2020 년 기준 )
이 포스팅을 통해 다음의 정보를 알아보겠습니다.
■ 왜 SAP는 새로운 유형의 CDS View를 개발해야 했을까?
■ DDIC 기반의 CDS View와 CDS View 엔터티의 주요 차이점
■ 전망 : DDIC 기반의 CDS View에서 CDS View 엔터티로의 전환
왜 SAP는 새로운 유형의 CDS View를 개발해야 했을까?
DDIC 기반 CDS View 는 DEFINE VIEW 구문을 사용하여 정의됩니다. 이러한 유형의 CDS View는 7.40, SP05 릴리즈에 처음 적용되었스니다. 이것은 몇 년동안 유일한 유형의 CDS View 로 사용가능했습니다.
7.55 릴리즈부터 CDS View 엔터티를 사용할 수 있습니다. DEFINE VIEW ENTITY 구문을 사용하여 정의할 수 있습니다. 이것은 DDIC 기반 CDS View 보다 진화되었습니다. 그리고 이것은 이전의 것과 동일안 구조를 가지고 동일한 목적을 수행합니다. 하지만 이것은 전통적인 DDIC 기반 CDS View 에 비해 다음과 같은 몇 가지 장점을 제공합니다.
■ 활성화 시에 추가적인 ABAP 딕셔너리 View를 필요로 하지 않습니다.
■ View 활성화를 수행하는 성능이 향상됩니다.
■ 문법이 최적화 되고 단순화 됩니다.
■ 엄격한 구문 검사는 문제가 있는 상황을 보다 명시적으로 나타냅니다.(ex. 주석 점검)
DDIC 기반의 CDS View와 CDS View 엔터티의 주요 차이점
CDS View 엔터티는 새롭고 향상된 DDIC 기반의 CDS View 입니다.
매우 비슷하긴 하지만 CDS View 엔터티는 사용하기에 더 쉽습니다.
그리고 많은 작은 이점들과 향상된 기능을 제공합니다.
다음은 DDIC 기반의 CDS View 와 다른 CDS View 엔터티의 몇가지 주요 방법이 있습니다.
■ DDIC View가 없습니다. @AbapCatalog.sqlViewName 주석이 필요하지 않고 각 뷰는 같은 이름을 사용합니다.
- 주석의 이름은 작은 오해를 야기할 수 있습니다. 물론 View 엔터티는 데이터베이스의 SQL 뷰를 가지고 있습니다. 하지만 이제는 중간의 DDIC View 는 더이상 필요하지 않습니다.
■ 더 적은 주석만 필요합니다. 예를들어 클라이언트 핸들링은 암묵적으로 이루어지고, 어떠한 개발 노력이 필요하지 않습니다.
■ CDS 주석 정의에서 CDS 개체로 정의된 주석만 사용할 수 있도록 주석이 검사됩니다.
■ 표현식은 중첩될 수 있습니다. 예전에는 View 스택이 필요했던 상황을 이제 단일 View에서 구현할 수 있습니다.
■ WHERE 절과 같은 피연산자 위치는 더 다양한 피연산자를 허용합니다.
■ 범용적으로 사용되지 않는 일부 기능은 View 엔터티에서 더이상 지원하지 않습니다. 다음은 지원하지 않은 몇 가지 기능의 예입니다.(하지만 전체 목록은 아닙니다.)
- DDIC 기반의 CDS View에서는 이름 리스트를 사용하여 SELECT 목록의 요소에 대체 요소 이름을 할당할 수 있습니다. CDS View 엔터티에서는 이름 리스트를 지원하지 않습니다.
- CDS View 엔터티에서는 리터럴의 앞에 고정 도메인값을 정의할 수 없습니다.
- Select 에서 데이터의 모든 요소를 선택하는 SELECT * 문법을 DDIC 기반의 CDS View에서는 지원하지만 CDS View 엔터티에서는 지원하지 않습니다.
Type 안전성을 강화하기 위한 리터럴 및 최적화된 버퍼 처리와 같은 추가 기능은 향후 릴리스에 계획되어 있습니다.
다음은 DDIC 기반의 CDS View와 CDS View 엔터티를 비교한 예시입니다.
CDS DDIC-based view | CDS view entity |
@AbapCatalog.sqlViewName: 'DEMO_CDS_JOIN' @AbapCatalog.compiler.compareFilter: true @ClientHandling.algorithm: #SESSION_VARIABLE @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_ALLOWED define view demo_cds_scarr_spfli as select from spfli join scarr on scarr.carrid = spfli.carrid { key spfli.carrid as id, key scarr.carrname as carrier, key spfli.connid as flight, spfli.cityfrom as departure, spfli.cityto as destination } |
. . . . @AccessControl.authorizationCheck: #NOT_ALLOWED define view entity demo_cds_scarr_spfli_2 as select from spfli join scarr on scarr.carrid = spfli.carrid { key spfli.carrid as id, key scarr.carrname as carrier, key spfli.connid as flight, spfli.cityfrom as departure, spfli.cityto as destination } |
차이점
■ View 엔터티는 @AbapCatalog.sqlViewName 주석이 필요 없습니다.
■ View 엔터티는 @AbapCatalog.compiler.compareFilter: true 주석이 필요 없습니다. 필터는 암묵적이고 자동적으로 비교됩니다.
■ View 엔터티는 @ClientHandling.algorithm 주석이 필요 없습니다. 클라이언트 제어는 암묵적으로 적용됩니다.
■ View 엔터티는 @AbapCatalog.preserveKey: true 주석이 필요 없습니다. CDS View 엔터티를 위한 ABAP 딕셔너리 View가 없습니다.
■ DEFINE VIEW ENTITY 구문을 사용하여 View 엔터티를 정의합니다.
CDS View 엔터티에 대한 포괄적인 설명을 위해 ABAP Keyword Documentation (F1 Help In GUI or ADT)을 참고합니다.
'SAP Story > CDS View' 카테고리의 다른 글
DDL정의-(2) View 정의 - 개론(생성하기) (0) | 2022.11.15 |
---|---|
DDL정의 - (1)CDS의 일반적인 구문 규칙 (0) | 2022.11.15 |
CDS(Core Data Service) in ABAP (0) | 2022.11.14 |
CDS View Part 00. 목록 - CDS View 를 이해하자 (1) | 2022.11.14 |
CDS View Part 18. CDS View 성능 분석 (2) (0) | 2022.11.14 |
댓글