Skip to main content

Module 19: CDS Views – Fundamentals

Core Data Services (CDS) is SAP’s strategic data modeling layer on top of the database.
CDS is not just about performance — it defines what the data means, not just how it is selected.


1. What is CDS?​

Definition​

CDS (Core Data Services) is a declarative data definition language used to define semantically rich data models directly on the database.

Why CDS Exists​

Traditional Open SQL:

  • Retrieves data
  • Has no semantics
  • Limited reuse

CDS:

  • Defines data + meaning
  • Enables code pushdown
  • Reusable across ABAP, OData, analytics
  • Authorization-aware
SAP Direction

In S/4HANA, CDS is the default data access layer.


2. Where CDS Fits in the Architecture​

Database (HANA) ↑ CDS Views (Semantic Layer) ↑ ABAP / OData / RAP / Analytics

Mental Model

Think of CDS as ABAP Dictionary + Open SQL + semantics combined.


3. Basic CDS Syntax​

A CDS view is defined using DDL Source in ADT (Eclipse).


3.1 Basic CDS View Example​

@AbapCatalog.sqlViewName: 'ZV_FLIGHT'
@EndUserText.label: 'Flight Data'
define view Z_CDS_Flight
as select from spfli
{
key carrid,
key connid,
cityfrom,
cityto
}

Key Elements​

  • define view

  • select from

  • Field list

  • Keys

Naming Convention
  • CDS view name → Z_CDS_*

  • SQL view name → 16 characters, uppercase

4. Annotations (Very Important)​

Annotations add metadata and semantics to CDS views.

4.1 Common Annotations​

@EndUserText.label: 'Airline'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK

Categories of Annotations​

  • UI annotations

  • Analytics annotations

  • Authorization annotations

  • Catalog annotations

Why Annotations Matter

Annotations drive:

  • Fiori UI behavior

  • Analytics

  • Authorization

  • OData exposure

5. Associations vs Joins​

5.1 Joins (Classic SQL Style)​

define view Z_CDS_FlightJoin
as select from spfli
inner join scarr
on spfli.carrid = scarr.carrid
{
spfli.carrid,
spfli.connid,
scarr.carrname
}
define view Z_CDS_FlightAssoc
as select from spfli
association [0..1] to scarr as _Carrier
on $projection.carrid = _Carrier.carrid
{
key carrid,
key connid,
_Carrier.carrname
}

Why Associations Are Better​

AspectJoinAssociation
Eager loadingYesNo
ReuseLowHigh
SemanticsLowHigh
PerformanceOKBetter (lazy)
Golden Rule

Prefer associations over joins unless eager data is required.

6. Parameterized CDS Views​

Parameterized CDS views accept input parameters.

Example

define view Z_CDS_Flight_Param
with parameters
p_carrid : spfli.carrid
as select from spfli
{
key carrid,
key connid,
cityfrom,
cityto
}
where carrid = :p_carrid

Usage in ABAP:

SELECT * FROM Z_CDS_Flight_Param( p_carrid = @lv_carrid )
INTO TABLE @DATA(lt_flights).
Use Case

Parameterized CDS replaces many dynamic WHERE conditions.

  1. CDS vs Open SQL (When to Use What)
ScenarioRecommendation
Reusable data modelCDS
Analytics / ReportingCDS
One-off simple SELECTOpen SQL
OData / RAPCDS
Complex DB logicCDS / AMDP

8. Common Beginner Mistakes​

Avoid These
  • Treating CDS like a simple SELECT

  • Overusing joins instead of associations

  • Missing authorization annotations

  • Hard-coding logic better suited for CDS

  • Creating very large monolithic CDS views

9. Summary​

  • CDS is SAP’s semantic data model

  • Defined using DDL in Eclipse

  • Annotations add meaning and behavior

  • Associations are preferred over joins

  • Parameterized CDS adds flexibility

  • CDS is reusable across layers

10. Practice Exercises​

  • Create a basic CDS view on a database table.

  • Add meaningful annotations.

  • Replace a JOIN with an association.

  • Create a parameterized CDS view.

  • Consume CDS view in ABAP SELECT.

11. What’s Next?​

➡️ Module 20: Advanced CDS Views

Learning Tip

If you understand CDS fundamentals well, RAP and analytics become much easier.