본문 바로가기
SAP Story/CDS View

DDL정의-(2) View 정의 - Name List

by 돈보따리 2022. 11. 15.
반응형

DEFINE VIEW 에 사용하는 Name List 에 대해서 알아보겠습니다.

 

문법

... ( name1, name2, ... ) ...

 

효과

Name List 를 사용하여 CDS View의 엘리먼트 이름을 정의합니다.  
name1, name2, ... 로 정의된 이름은 Select 구문의 Select 리스트에서 주어진 순서대로 명시적으로 정의된 요소로 지정됩니다. 
이름은 AS(별칭)를 사용하여 SELECT 목록에 정의된 대체 이름과 같이 작동하고 이러한 이름을 덮어씁니다. 
Name List 가 정의되면, View의 각 요소에 대한 이름을 포함해야 합니다.

View 필드는 CDS 데이터베이스 View의 요소 이름으로 생성됩니다. 
따라서 요소 이름은 데이터베이스 View의 View필드 이름 규칙과 이름에 대한 일반 이름 지정 규칙을 준수해야 합니다. 
이것은 다음 내용을 이야기합니다.

  ■ ABAP 사전의 구조의 컴포넌트 이름에 대한 이름 변환합니다.
  ■ 예약된 컴퍼넌트 이름을 사용할 수 없습니다. 데이터베이스 테이블 TRESE 에 예약된 이름은 사용할 수 없습니다.

Name List는 Select List 에 명시적으로 정의 된 요소에 대해서만 정의할 수 있습니다. 
Select List 에 * 을 사용하거나 또는 요소 목록에 $EXTENSION.* 항목이 포함된 경우 Name List를 사용할 수 없습니다. 

 

참고

  ■ 예를들어, UNION 을 사용한 여러개의 Select 구문의 세트의 합에서 CDS View의 요소 이름을 정의하기 위해 명시적인 Name List를 사용할 수 있습니다. 
  ■ 명시적인 Name List를 가지고 있는 CDS View는 EXTEND_VIEW를 사용하여 확장할 수 없습니다

 


<예제1>

CDS View 'business_partner'는 4개의 요소를 가지고 있고, id, role, company_name, phone_number 이름으로 정의 했습니다.

@AbapCatalog.sqlViewName: 'BPA_VW' 
define view business_partner 
  (id, role, company_name, phone_number) as 
  select from snwd_bpa 
         { key snwd_bpa.bp_id, 
               snwd_bpa.bp_role, 
               snwd_bpa.company_name, 
               snwd_bpa.phone_number }
snwd_bpa.bp_id,
snwd_bpa.bp_role,
snwd_bpa.company_name,
snwd_bpa.phone_number
Select 구문에서는 위 4개의 이름으로 Select List가 구성되었습니다.
(id, role, company_name, phone_number)
Name List 에 의해 id, role, company_name, phone_number 의 이름으로 정의됩니다.

 


<예제2>

CDS View 'employee_sales_figures'는 3개의 요소를 가지고 있고, financial_year, employee_id, gross_amount 이름으로 정의했습니다.

@AbapCatalog.sqlViewName: 'SALES_FIG_VW' 
view employee_sales_figures 
  (financial_year, employee_id, gross_amount) as 
   select from sales_2011_tab 
          { key '2011' as year, 
            key id, 
            amount } 
   union 
     select from sales_2012_tab 
            { '2012' as year, 
              employee_number, 
              gross_amount }
select from sales_2011_tab
          { key '2011' as year,
            key id,
            amount }
   union
     select from sales_2012_tab
            { '2012' as year,
              employee_number,
              gross_amount }
Union 을 사용하여 2개의 Select 구문이 합쳐졌습니다. 첫 번째 구문은 year, id, amount 로 요소 이름이 지정되었습니다. 두 번째 구문은 year, employee_number, gross_amount 로 요소 이름이 지정되었습니다. 
(financial_year, employee_id, gross_amount)
Name List 에 의해 financial_year, employee_id, gross_amount 의 이름으로 정의됩니다.

참고

  ■ Union에서 Name List를 사용하지 않는 경우 첫 번째 Select List 이름을 사용합니다.

 

 

반응형

댓글