ABAP

DDIC View vs CDS View — 선택 기준 3가지 #shorts #SAP #ABAP

▶ YouTube에서 보기

SAP ABAP에서 View가 두 종류인 이유

SAP ABAP 개발에는 전통적인 DDIC(Data Dictionary) View와 현대적인 CDS(Core Data Services) View가 공존합니다. 둘 다 DB 테이블 데이터를 조회하는 뷰이지만, 기능, 성능, 사용 목적이 완전히 다릅니다. 신규 개발에서 어느 쪽을 써야 하는지 기준을 명확히 알아야 합니다.

DDIC View의 구조와 특징

DDIC View는 SE11 트랜잭션에서 생성합니다. JOIN 타입은 Inner Join만 지원하며, WHERE 조건을 지정할 수 있습니다.

" DDIC View: 직접 SQL로 사용
SELECT company_code, fiscal_year, posting_date, amount
  FROM zdv_accounting_doc          " DDIC View
  WHERE company_code = '1000'
    AND fiscal_year  = '2026'
  INTO TABLE @DATA(lt_docs).

DDIC View는 기본적인 JOIN 뷰로, 추가적인 로직이나 어노테이션을 포함할 수 없습니다. Fiori나 OData에 직접 연결하려면 별도 작업이 필요합니다.

CDS View의 구조와 특징

CDS View는 ADT(ABAP Development Tools)에서 .ddls 파일로 작성합니다.

@AbapCatalog.sqlViewName: 'ZCI_ACCDOC'
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: '회계 전표 조회 뷰'
@Analytics.dataCategory: #FACT
define view ZI_AccountingDocument
  as select from zbtp_acc_document as Doc
    inner join   zbtp_company_code as CC
      on Doc.company_code = CC.company_code
    left outer join zbtp_currency as Cur
      on Doc.currency_code = Cur.currency_code
{
  key Doc.document_id,
      Doc.company_code,
      CC.company_name,
      Doc.posting_date,
      Doc.amount,
      Cur.currency_description,
      case Doc.status
        when 'P' then 'Posted'
        when 'D' then 'Draft'
        else 'Unknown'
      end as status_text
}
where Doc.is_deleted = 'X'

CDS View는 Left Outer Join, CASE 표현식, CAST, 집계 함수(SUM, COUNT, AVG), 파라미터, 어노테이션 등 풍부한 기능을 제공합니다.

선택 기준 1: OData 서비스 노출 여부

Fiori 앱 또는 OData 서비스로 데이터를 노출해야 한다면 반드시 CDS View를 사용해야 합니다. DDIC View는 OData에 직접 연결할 수 없습니다.

@OData.publish: true          " CDS View를 OData V2로 자동 노출
define view ZI_SalesOrderList
  as select from zbtp_sales_order
{
  key order_id,
      customer_id,
      net_amount,
      order_date
}

어노테이션 한 줄로 OData 서비스가 자동 생성됩니다. DDIC View로는 이 기능을 사용할 수 없습니다.

선택 기준 2: 복잡한 JOIN 및 표현식 필요 여부

DDIC View는 Inner Join만 지원합니다. Left/Right Outer Join이 필요하거나, CASE 분기, 집계, 파라미터가 필요하다면 CDS View가 유일한 선택입니다.

" CDS View: 파라미터와 LEFT JOIN 조합
define view ZI_EmployeeSalary(
  P_FiscalYear: abap.numc(4)
)
  as select from zbtp_employee as Emp
    left outer join zbtp_salary as Sal
      on  Emp.emp_id = Sal.emp_id
      and Sal.fiscal_year = $parameters.P_FiscalYear
{
  key Emp.emp_id,
      Emp.full_name,
      coalesce(Sal.gross_salary, 0) as gross_salary,
      Sal.currency_code
}

선택 기준 3: ABAP Cloud 환경 여부

ABAP Cloud(BTP ABAP Environment)에서는 DDIC View 신규 생성이 사실상 금지됩니다. CDS View가 표준 데이터 모델링 방식입니다. 기존 On-Stack 시스템을 유지보수하는 경우에만 DDIC View를 그대로 사용합니다.

Access Control — CDS View 보안

CDS View는 DCL(Data Control Language)로 행 수준 접근 제어를 추가할 수 있습니다.

" ZI_AccountingDocument.dcl
@EndUserText.label: '회계 전표 접근 제어'
define role ZI_AccountingDocument {
  grant select on ZI_AccountingDocument
    where company_code = aspect pfcg_attr(
      'Z_ACC_BUKRS', 'company_code', 'I'
    );
}

이 권한 제어는 DDIC View에서는 구현할 수 없습니다.

결론: 신규 개발은 CDS View

  • 신규 개발 → CDS View (어노테이션, OData, 접근 제어 모두 지원)
  • 레거시 유지보수 → DDIC View 그대로 사용 (변경 최소화)
  • ABAP Cloud → CDS View 필수 (DDIC View 신규 생성 불가)
  • 단순 JOIN 조회만 필요하고 OData 노출 없음 → DDIC View도 가능

공식 문서

CDS View 전체 문법과 어노테이션은 SAP CDS View 공식 문서에서 확인하세요. DDIC View와의 비교는 SAP Note 2376599도 참고할 수 있습니다.

댓글 0

아직 댓글이 없습니다.