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
아직 댓글이 없습니다.