Introduction
The CDS View Entities are currently celebrating their 5th birthday. On September 2, 2020 I found the first blog post A new generation of CDS Views: CDS view entities on the SAP Community Network on this topic.
Classic CDS Views (aka. DDIC Based CDS Views) have been obsolete since ABAP 7.57 (S/4HANA 2022). This is a good reason to take a closer look at the history and differences between the two objects.
What happened so far – a look back at the past
2012 – The first CDS objects were for SAP HANA
In order to define views and tables on the XS(C) application server of the HANA database, a concept was needed for storing these objects in a repository. The result was HANA CDS – Core Data Services. Based on the idea of the DDIC, HANA CDS also contains semantic information about the application. The objects were defined in HANA SQL, enriched with annotations and associations.
2014 – CDS Views in ABAP
CDS Views were introduced in ABAP with NetWeaver 7.40 SP05. Now it was possible to define CDS directly in the ABAP stack, with seamless integration into the ABAP Dictionary.
- Syntax based on ABAP SQL
- Semantic information is added by annotations
- Defined in source code files in the ABAP Development Tools
- Close integration with ABAP SQL: CDS Views can be selected like tables.
- Enables code pushdown: Logic runs in the HANA DB, not in ABAP.
- Support for Any-DB, including Oracle, IBM, etc.
2015 – Virtual Data Model (VDM) in S/4HANA
With the introduction of S/4HANA, CDS took on a central role in SAP data modeling. The Virtual Data Model (VDM) contains thousands of preconfigured CDS Views as a basis for reporting, Fiori apps, and APIs.
CDS becomes the basis of all frameworks in the ABAP stack:
- OData services
- Embedded analytics
- BW extraction
- Interface creation with Fiori Elements
- Enterprise search
2019 – The RESTful Application Programming Model ABAP (RAP) is based on CDS
2020 – CDS view entities replace DDIC-based CDS Views
And with S/4HANA 2022, classic CDS Views will become obsolete
What was wrong with classic CDS Views?
Two names
The first thing that irritated every developer about classic CDS Views was the two names:
- CDS view name – 30 characters long,
- SQL view name – 16 characters long, because it is actually the name of the DDIC view
Actually, the source code file could also have a different name, but hopefully no one did that. A look at the object catalog reveals that there are actually three different objects on the ABAP side:
Overly strict consistency checks
In some places, the syntax was checked extremely strictly. My favorite example is this message:
This happens when you calculate the volume with length x width x height from MARA
or I_Product
.
Limited nesting of expressions, especially in SQL functions
In many places, there were syntax checking errors when functions were nested.
What is the difference to CDS View Entity
While the DDIC Based CDS View had to run on Any-DB, the CDS View Entity could focus on the HANA database. This made the traditional abstraction layer between the different database management systems obsolete. The DDIC could be removed.
The following illustration shows this. The colors represent a name. In the classic, DDIC-based CDS view, we see two colors, while in the CDS View Entity, we see only one.
What is better about the CDS View Entity
One name for everything
Both CDS View and SQL View have the same name – and it is 30 characters long. In analytical applications, i.e. wherever the @Analytics Framework appears as an annotation, the SQL view usually plays the leading role. Example:
- View name for the BW extractors
- Names of analytical InfoProviders and queries consist of the prefix
2C
and the SQL view name
Reasonable consistency checks
Even if this is the documentation of the CDS View Entities I consider the consistency checks of the view entities to be more relaxed. In any case, however, I consider them to be more plausible. See above.
More features
The DDIC-based CDS Views have not been further developed for several years. However, there are still some improvements to be made to the CDS view entities. These include:
- Improvements in nesting expressions – more and more is possible
- Automatic client handling
- Faster activation, because no DDIC view needs to be created anymore
- You can refer to other columns of the view in expressions with
$projection.
And should I migrate my DDIC-based CDS Views now?
That's not necessary. If they already do what they're supposed to do, then all the disadvantages are no longer relevant. And SAP also has thousands of classic CDS Views in the virtual data model, many of which are also C1-released. This means we can rest assured that they will continue to be supported for a very, very long time.
Conclusion
So far, I have not found a single disadvantage of CDS view entities compared to CDS Views. Therefore, there is no longer any reason to use classic CDS Views as long as you are on a corresponding system version.