Skip to Content
Technical Articles
Author's profile photo Andrea Schlotthauer

A new generation of CDS views: CDS view entities

With ABAP release 7.55, a new type of CDS view is available: in official terminology, it’s called CDS view entity. And it has come to replace the “classic” CDS DDIC-based views that have been around for years.

This blog post provides the following information:

  1. Motivation: why has SAP developed a new type of CDS view?
  2. Key differences between DDIC-based views and CDS view entities
  3. Outlook: transition from DDIC-based views to CDS view entities

Motivation: why has SAP developed a new type of CDS view?

A CDS DDIC-based view is defined using the statement DEFINE VIEW. This kind of CDS view was first released with release 7.40, SP05 and it was for many years the only available kind of CDS view.

Since release 7.55, CDS view entities are available. They are defined using the statement DEFINE VIEW ENTITY. They have evolved from CDS DDIC-based views, serve the same purpose and have the same structure as their predecessor. But they offer several advantages over the “classic” CDS DDIC-based views, such as the following:

  • No additional ABAP Dictionary view is created on activation.
  • Improved performance during view activation.
  • Optimization and simplification of syntax.
  • Stricter syntax checks indicate problematic situations more explicitly, for example, annotation checks.

Key differences between DDIC-based views and CDS view entities

CDS view entities are a new and improved version of CDS DDIC-based views. Although very similar, CDS view entities are easier to use, and offer many small improvements and enhanced features.

Here are some principal ways in which CDS view entities differ from CDS DDIC-based views:

  • There’s no DDIC view. The annotation @AbapCatalog.sqlViewName is not required and each view has only one name.

Please note that the name of the annotation is a bit misleading. Of course, a view entity has an SQL view on the database, but now the intermediate DDIC view is not needed any more.

  • Fewer annotations are required. For example, client handling takes place implicitly and doesn’t require any development effort.
  • Overhauled buffer handling by means of CDS tuning objects offers more flexibility (see Buffering CDS View Entities | SAP Blogs for further details).
  • Overhauled extension concept with CDS view entity extends (EXTEND VIEW ENTITY) offers much faster activation performance, see ABAP Core Data Services: New syntax for extending CDS entities | SAP Blogs for further details.
  • Annotations are checked to ensure that only annotations defined as CDS objects in a CDS annotation definition can be used.
  • Expressions can be nested within each other. Situations that previously required a view stack can now be implemented within a single view.
  • Operand positions, such as the WHERE-clause, allow a greater variety of operands.
  • Some features that haven’t been widely used are no longer supported in view entities. Here are some examples (but the list is not exhaustive):
    • In DDIC-based views it is possible to assign alternative element names to elements of a SELECT-list using a name list. CDS view entities don’t support name lists.
    • Domain fixed values in front of literals cannot be defined in CDS view entities.
    • The syntax SELECT * to select all elements from the data source is supported in CDS DDIC-based views, but not in CDS view entities.

Additional features, such as typed literals to enhance type safety, and optimized buffer handling, are planned for future releases.

The following example compares a CDS DDIC-based view with a CDS view entity:

CDS DDIC-based view CDS view entity
@AbapCatalog.sqlViewName: 'DEMO_CDS_JOIN'
@AbapCatalog.compiler.compareFilter: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_ALLOWED 
define view demo_cds_scarr_spfli
  as select from spfli
    join scarr on scarr.carrid = spfli.carrid
{
  key spfli.carrid     as id,
  key scarr.carrname   as carrier,
  key spfli.connid     as flight,
        spfli.cityfrom as departure,
        spfli.cityto   as destination
}

.
.
.
.
@AccessControl.authorizationCheck: #NOT_ALLOWED
define view entity demo_cds_scarr_spfli_2
as select from spfli
      join scarr on scarr.carrid = spfli.carrid
    {
      key spfli.carrid      as id,
      key scarr.carrname    as carrier,
      key spfli.connid      as flight,
             spfli.cityfrom as departure,
             spfli.cityto   as destination
    }

Differences:

  • The view entity doesn’t require the annotation @AbapCatalog.sqlViewName.
  • The view entity doesn’t require the annotation @AbapCatalog.compiler.compareFilter: true, because the filter is implicitly and automatically compared.
  • The view entity doesn’t require the annotation @ClientHandling.algorithm, since client handling takes place implicitly.
  • The view entity doesn’t require the annotation @AbapCatalog.preserveKey: true, because there’s no ABAP Dictionary view attached to a CDS view entity.
  • The view entity is defined using the statement DEFINE VIEW ENTITY.

For a comprehensive description of CDS view entities, refer to ABAP Keyword Documentation (F1 Help in SAP GUI and ADT).

Outlook: transition from CDS DDIC-based views to CDS view entities

Since ABAP Release 7.56, ABAP Platform 2021, it is possible to migrate existing DDIC-based views to CDS view entities. Details are described in the following blog post: A new generation of CDS views: how to migrate your CDS views to CDS view entities. Migration is voluntary and can be done to benefit from the enhanced functionality of CDS view entities. “Classic” CDS DDIC-based views are supported, but not further developed. For new development scenarios, it is recommended to create only CDS view entities.

Info: SAP will continue to support classic CDS DDIC-based views. CDS DDIC-based views will not be retired, and customers will not be forced to use CDS view entities. SAP protects investments.

Update May 2022: Since ABAP release 7.88, CDS view entities are feature complete. An overview of all new features, improvements, and differences is provided in the blog series CDS view entities are feature complete. Overview of new features, improvements, and differences | SAP Blogs.

Further information:

Assigned Tags

      82 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Syambabu Allu
      Syambabu Allu

      Hi Andrea,

      much awaited info.Thanks for sharing info.

      Thank you,

      Syam

      Author's profile photo Tarun Arora
      Tarun Arora

      Thanks Andrea, One thing which i want to clarify "Nested Expressions", will it includes Subqueries also?

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Tarun, no, subqueries are not supported in view entities and they are currently not planned.

      "Nested expressions" rather refers to, for example:

      • within an arithmetic expression, a cast expression, case expression, aggregate expression or built-in function can be used (DDIC-based views don't offer the full range).

      Same for aggregate expressions, case, cast, built-in functions, and so on - they all allow other expressions as operands.

      Best,

      Andrea

      Author's profile photo Anup Kulkami
      Anup Kulkami

      HI Andrea,

      Can you throw some light on what would be impact on ODP transient provider? They do require a SQL view with prefix 2C.

      Thanks

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Anup,

      For CDS view entities, the analytical query name is the name of the view entity with the prefix 2C: 2C<name of CDS view entity in UpperCase>.

      As the BW name should not be longer than 30 characters, the CDS view entity name should be less than 28 characters.

      There is also the annotation @Analytics.technicalName (String(16)). If this annotation is used in a CDS view entity, then the analytical query will be „2C<technicalName>“.

      This annotation should be used especially when converting a CDS DDIC-based view to a CDS view entity and when you want the BW name to stay the same and not change during conversion.

       

      Best,

      Andrea

      Author's profile photo Anup Kulkami
      Anup Kulkami

      Thanks Andrea!

      Does this also imply that (since no SQL view gets generated), CDS view entity cannot be accessed natively in HANA database? There was a note 2511210 in the past mentioning that it "Should Not Be" . But now it appears that it "cannot be".

      Anup

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Anup,

      CDS view entities do also generate a HANA view with the name of the CDS view entity. Hence, it is possible to access a view entity natively on HANA database. However, the same restrictions apply as described in note 2511210.

      Best,

      Andrea

      Author's profile photo Viren Devi
      Viren Devi

      Hello Andrea,

       

      During migration will SAP keep name of the SAP provided extraction enabled CDS's views same? Or  names will change ?

      Thank you.

       

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Viren Devi,

      the name stays the same during the migration. As a precondition for the migration, the name of the DDLS source and of the CDS entity must be identical. The newly generated view entity has the name of this CDS entity on the database.

      The name of the DDIC view is dropped during the migration. Currently, it is not recommended to reuse the name of the DDIC view of a migrated view for another CDS object.

      Documentation regarding the migration will be released soon.

      Best

      Andrea

      Author's profile photo Vijay Sharma
      Vijay Sharma

      Nice.. thanks for sharing !!

      Author's profile photo David Alvarez
      David Alvarez

      Hallo andrea,

      due to some incompatible changes, it is unlikely that all of the existing views will be migrated

      In our SAP CPI-DS project, we are using CDSs to create complex logic. In this way, we release CPI-DS system of making complex calculations that could take more than 15 minutes in CPI-DS (vs seconds in CDS).

      However, CPI-DS can only consume the view (database layer).

      Should we get worried about it? I am afraid "Unlikely" could mean a lot of things. Removing these views or making mandatory not using them could ruin other parallel projects that cannot call to a CDS directly .

      Do you have information about it or who could clarify this point?

      Thanks in advance,
      David

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi David,

      how do you consume the CDS views? Do you use ABAP SQL? If yes, then you can use the CDS view entity directly, and not the DDIC view.

      Does that help?

      Best,

      Andrea

      Author's profile photo David Alvarez
      David Alvarez

      Hi Andrea,

      I am afraid SAP CPI-DS is not the best ETL tool in the market (but it's SAP recommendation when working with IBP).

      It is only able to "see" tables or views at database level when connecting to a backend system. That means CDSs does not appear as a source object. However, we link the CDS view in CPI-DS and this is how we are working: generating complex SELECTs in CDS and linking them to CPI-DS through its view.

      Our concern is:

      • If these new CDS view entity is going to replace completely classic CDS or they are going to coexist
      • No option to continue creation of classic CDSs once new CDS view entity is available 

      Please, we are not asking for a work around. We need just confirmation of the roadmap to know if we need to change our way of work.

      Thanks in advance,
      David

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi David,

      The classic, DDIC-based CDS views will still be supported. It is not planned to deprecate them. Both types of views will coexist.

      You as owner of the view can decide whether you want to migrate your existing views to view entities or not. There won't be any automatic conversion.

      You can continue creating classic CDS view, even when CDS view entities are available. SAP only recommends to switch to view entities, because once they are feature complete, they are easier to work with and offer more options.

      Best,

      Andrea

      Author's profile photo Avinash D M
      Avinash D M

      Hi ,

       

      Is it possible to extend the CDS Entity like we have for old CDS View?

       

      Thanks and regards,

      Avinash

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Avinash,

      Yes, it is possible to extend CDS view entities in the same way as CDS DDIC-based views.

      Some details:

      • A boundary condition has been removed: an extend for a CDS view entity can contain only new associations. It is not required (as for the old CDS views) to include at least one field in an extension.
      • View extensions are possible with EXTEND VIEW and there's also the new statement EXTEND VIEW ENTITY. View extends created with EXTEND VIEW ENTITY don't create a DDIC view append and they have all the advantages of the new view entities, such as faster activation.

      Best,

      Andrea

      Author's profile photo Santhosh Kadiyala
      Santhosh Kadiyala

      Hi Andrea Schlotthauer ,

      i have few queries regarding the new CDS Entity-

      our system is on SAP Latest 2020

      is there a way i display the DDL Source in SAP SE11 directly other than by DDL SQL View?

      i see VIEW for this object in DDLDEPENDENCY

       

       

      if you see there is an abap view for this

       

      is there a way i can access this directly without going to view

      i am able to access SQL View directly in abap as shown below

       

      its also giving me data if i give cds entity as shown below

       

      why is this throwing an error when i declare lt_Table as cds view and trying to access data from the same cds entity ? cds view and cds entity are related by 1:1 right, why is this discrepancy. please clarify

      thanks

      San

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi San,

      For CDS views and CDS view entities, it is recommended to work in ABAP Development tools (ADT). Otherwise, please use transaction sddlar to display your CDS views and CDS view entities. For CDS views, you can use the view name directly, no need to use the SQL view name.

      SE11 has limitations: views (classic views as well as CDS view entities) can only be displayed when their name has no more than 16 characters.
      Moreover, it is not recommended to access a DDL source in SE11 using the SQL view (warning message).

      Regarding your second question: The SQL view can contain an additional client field and therefore, an error message is returned. You can avoid it by using same name (either SQL view name OR DDL source name) for typing and after FROM.

      You can also use an inline declaration, such as the following:

      Hope this helps. If not, please contact me again.

      Best,

      Andrea

       

       

      Author's profile photo Anirudh HA
      Anirudh HA

      This was particularly helpful to me while trying to run CDS Views using only SAP GUI and not ADT.
      T-code SDDLAR. Thank you so much 🙂

      Author's profile photo Diptarup Majumder
      Diptarup Majumder

      Hi Andrea,

      Nice blog!

      Need some guidance in the light of CDS root view entity.

      We are in S4 HANA 1909 SP02 on-prem version hosted on HEC. SAP_ABA is on 75E. SAP_BASIS is on 754.  Still, it is not giving an option to create CDS view entity. After upgrading the Eclipse version 2020-09, ADT, I somehow managed to get the CDS view entity option. However, when I am using the following code snippet to activate it, I am getting the error as 'Keyword Entity not Allowed'.

      @AccessControl.authorizationCheck: #NOT_REQUIRED
      @EndUserText.label: 'View '
      define root view  entity Y_RPA_002
      as select from  yraptesttable
      {
      key sonumber,
      creationdate,
      customer
      }

      I am following the below blog:

      https://blogs.sap.com/2019/10/25/getting-started-with-the-abap-restful-programming-model/

      My questions are :

      1. In the version provided above, thought we are in ABA 75E, would we be able to get onboarded with the RAP model provided above ? If not, can we use CDS view to serve the purpose ?
      2. Any clue why are we getting the error 'Keyword Entity not allowed' ?

      Thanks for your help!

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author
      Hi Diptarup,
      CDS view entities are available since S4HANA 2005, on premise release 7.55. To work with CDS view entities, it is necessary to update your system. But RAP works also with classic CDS views.
      You can find further details in the RAP development guide under https://help.sap.com/viewer/923180ddb98240829d935862025004d6/Cloud/en-US/289477a81eec4d4e84c0302fb6835035.html.
      Hope this answers your question.
      Best,
      Andrea
      Author's profile photo Kyo Choi
      Kyo Choi

      I am getting same message for ABAP version 7.5E.  Is this lower than 7.55?

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Kyo Choi,

      yes indeed. SAP_ABA 7.5E is ABAP Platform Release 1909 (see ABAP Platform – Part 1 – Evolution from SAP Netweaver | SAP Blogs) and 7.55 is ABAP Platform Release 2020 (see ABAP Keyword Documentation (sap.com)).

      Best,

      Andrea

      Author's profile photo Kyo Choi
      Kyo Choi

      On BO Project View, "entity" worked fine.  Not sure why CDS view has issue.  BTW. I am using the developer edition 1909.

       

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      CDS projection views have been available since ABAP release 7.76, which is the same as ABAP Platform clout 1905. In on-premise, they have been available since S/4HANA 1909.

      See New type of CDS entity available: CDS projection views | SAP Blogs.

      Author's profile photo Amit Kumar
      Amit Kumar

      Hi Andrea,

       

      I tried to go through the given blog or help page you mentioned above but not sure how to co-relate ABAP release 7.55 with ABAP platform 1809,1909, 2020 etc or SAP_ABA 7.5D, E, F etc? if you could help us understanding this connection and where do we see ABAP release 7.55 etc in the system?

       

      Thanks,

      Amit Kumar

      Author's profile photo Harish Bokkasam
      Harish Bokkasam

      Hallo Diptarup,

      As Andrea mentioned, you can build RAP BO with classic CDS views..define CDS view syntax

      Greetings,

      Harish B

      Author's profile photo Sebastien Phan
      Sebastien Phan

      Hi Andrea!

       

      I just created my first CDS entity view. We had for regular cds view the tool "dependency  analyzer" in abap in eclipse. Now, If I try to use this tool, it says "dependency analyzer only support cds view"

       

      I use abap in eclipse Version: 3.15.0.

       

      Is there a similar tool for this?

      Alternate question: for HANA studio, we could query the CDS view by using the DDIC name in the select. For entity view, there are no ddic. Would it be possible as well?

       

      Best regards,

       

      Sebastien

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Sebastien,

      dependency analyzer is currently not available for CDS view entities. Development is working on it, hopefully it will be available soon. There's no alternative tool, unfortunately.

      CDS view entities can be accessed in HANA Studio by their DDLS name (same as the entity name). Like for classic DDIC-based views, it might be required to specify the schema.

      Best,

      Andrea

      Author's profile photo Martin Effinger
      Martin Effinger

      Hi Andrea,

      just wanted to check the status of delivering the Dependency Analyzer for CDS View Entities. Any news when this will be available?

      thanks

      Martin

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Martin, Dependency Analyzer is not yet available, but delivery is already planned. I will write a new reply here once it's available.

      More specific communication about planned features is not possible.

      Best

      Andrea

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Martin Effinger

      Sebastien Phan

      Dependency Analyzer for CDS view entities has been released with ABAP Platform Strict 2208 | ABAP release 7.89. It will be most likely available with the next big on premise shipment 7.57, ABAP Platform 2022.

      Author's profile photo Glen Simpson
      Glen Simpson

      Hi Andrea

      Is there any chance this will be backported to lower on-premise versions?
      I rely heavily on the Dependency Analyzer for CDS views and the lack of this tool for view entities is a real barrier to adopting the newer view type.

      Thanks
      Glen

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi,

      thanks for your feedback. I have discussed this issue with my colleagues. Since a tooling backport is a huge effort, it is rather unlikely that Dependency Analyzer will be backported to 2021. And before 2021, view entities were still in development and more features were missing.

      If I hear anything else, I will update this comment.

      Author's profile photo Miroslaw Grygolec
      Miroslaw Grygolec

      hi Andrea,

      It's a while since we've got view entities at our disposal and to most case I found them fully functional. However recently I accidentally faced restriction to migrate CDS which includes $session in the conditional expression:

      case when ( UserRole.ValidFromDate <= $session.system_date and
      UserRole.ValidToDate >= $session.system_date ) then 'X' else '' end as IsValid,

      The original DDIC-base CDS was fully functional, same syntax with view entity results in the error message: "Expression type SESSION_VAR_EXPR not allowed in expression context COMPARISON, clause type COMP_RIGHT".

      I was lucky to overcome this case with $parameters, though result is not as elegant as originally and generally this was unexpected obstacle for migration from legacy.

      So my question would be - is there any reference of the restrictions (not supported syntax, pending features) associated to new view entities?

       

      Thank you in advance.

      Mirosław

       

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Mirosław,

      your conditional expression should work in CDS view entities. I've tested it and tried to reproduce the error, but in my example, there is no error message.

      The topic about CASE WHEN in the ABAP Keyword Documentation lists all possible operands and it says the the right side of CASE WHEN can be a session variable.

      So this looks like a bug, please open an incident to component BC-DWB-DIC if you would like this to be further investigated.

      The ABAP Keyword Documentation (F1 Help) describes all supported syntax and all restrictions compared to CDS DDIC-based views. That's the only externally  available source.

      Best,

      Andrea

      Author's profile photo Miroslaw Grygolec
      Miroslaw Grygolec

      Thank you for quick answer! 🙂 Will follow as you advise.

      Author's profile photo Laura Quinteros
      Laura Quinteros

      Hi Miroslaw Grygolec , Andrea Schlotthauer ,

      Did you get a resolution for this?

      I'm facing the same issue in my S/4H 2020 OnPrem system and can't find any OSS notes related to this. Below are the system details:

      S4H%202020%20OP%20Product%20Versions

      S4H 2020 OP Product Versions

      S4H%202020%20OP%20Software%20Component%20Versions

      S4H 2020 OP Software Component Versions

       

      As per the documentation this should work in a CDS view entity but I'm getting the same exception you were getting:

      "Expression type SESSION_VAR_EXPR not allowed in expression context COMPARISON, clause type COMP_RIGHT".

       

      My conditional expression is as follows -

      case
      when datbi <= $session.system_date
      then 1 // Expired (Red)
      else 0 // Valid (Grey)
      end as ValidToCriticality,

       

      Thanks and regards,

      Laura

      Author's profile photo Shilpa R
      Shilpa R

      Hi Andrea Schlotthauer ,, this blog is really helpful, and even I have used this cds view entities in web ide and I am using s/4 hana databse for the same, but can we implement variant using this cds view entity?

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Shilpa R,

      as far as I know, implementing variants is not possible using CDS annotations.

      For further questions, please open a BCP incident on component BC-ESI-ESF-GW.

      Best,

      Andrea

       

      Author's profile photo Shilpa R
      Shilpa R

      Ok thank you so much for your reply Andrea Schlotthauer ,

      Author's profile photo Amit Kumar
      Amit Kumar

      Hi Andrea,

       

      I tried to go through the given blog or help page you mentioned above but not sure how to co-relate ABAP release 7.55 with ABAP platform 1809,1909, 2020 etc or SAP_ABA 7.5D, E, F etc? if you could help us understanding this connection and where do we see ABAP release 7.55 etc in the system?

       

      Thanks,

      Amit Kumar

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Amit,

      The on-premise docu on SAP Help Portal contains a table that maps ABAP releases to ABAP Platform releases, SAP S/4HANA on premise releases and kernel releases: ABAP Keyword Documentation (sap.com) 

      Regarding your second question:

      • do you mean where you can see the ABAP release information in your system? You find this information under System > Status > section SAP System Data > Product Version > tab Installed Product Version.
      • are you looking for a version history of the ABAP Keyword Documentation? Here's the URL to a specific version: https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm. Just replace "755" with the version you would like to see.
      • to see a different version of the documentation in your system, the only way I know is to log on to a corresponding system.

      Best

      Andrea

      Author's profile photo Amit Kumar
      Amit Kumar

      Thanks for the details.

      Regarding the second point, yes...I meant to ask ABAP release information in the system- I see only S4HANA release (Not the ABAP release 7.55). Here is the screenshot of what I see if I follow the steps System > Status > section SAP System Data > Product Version > tab Installed Product Version.

      Tab%20Installed%20Product%20Version

      Tab Installed Product Version

       

      I was hoping to see ABAP release 7.55 somewhere directly in the system. But mapping table you provided (via help link) is also fine. Thanks!

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Maybe check tab Installed Software Component Versions. I find the required information there:

       

      Author's profile photo Shilpa R
      Shilpa R

      Hi Andrea Schlotthauer ,,

      I wanted to make name field as non editable inside the object page in my capm project

       

      How can I achieve using CAP annotations?

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Shilpa R,

      thanks for your message.

      Unfortunately, I can't answer this question. My area of expertise is ABAP Core Data Services, basis development. This question seems to be related to a specific application and to UI design. UI annotations are not part of basis development.

      Please check the corresponding product documentation.

      Best

      Andrea

      Author's profile photo Shilpa R
      Shilpa R

      Hi Andrea Schlotthauer , Thank you so much for your reply

      Author's profile photo B@lu .
      B@lu .

      hi Andrea Schlotthauer ,,

      The syntax SELECT * to select all elements from the data source is supported in CDS DDIC-based views, but not in CDS view entities

      we have S4HANA1909 so can't test above statement perhaps i just wanted to cross check if my understanding is correct or not.

      as per the above statement if i want to use all the fields from CDS view entity then i have to mention all the fields separately like below?

      SELECT  Field1,

      Field 2,

      Field 3,....

      FROM <CDS ENTITY NAME>

      INTO TABLE ........

       

      rather than

      SELECT *

      FROM   <CDS ENTITY NAME>

      INTO TABLE ........

      Regards,

      B@lu.

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi B@lu,

       

      yes, exactly, your understanding is correct.

      SELECT * is not supported in CDS view entities. You need to formulate an explicit element list instead, like in your example above.

      Further differences between CDS views and CDS view entities are listed in this blog post about migration from CDS view to CDS view entity.

      Best,

      Andrea

      Author's profile photo Rajesh Paruchuru
      Rajesh Paruchuru

      Hi Andrea - we are on OP 2020 FPS 01 and running into syntax error(maximum data type can't be determined) while returning a quantity field from a searched case statement, can you please let us know if its a known limitation?

       

      cds_code

      cds_code

       

      Thank you

      -Rajesh

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Rajesh,

      this is a known limitation. There was a very limited support for currencies and quantities in expressions with the first delivery. With Release 7.57, OP 2022, new currency and quantity handling has been introduced and it works since then.

      Documentation is available here:

      Best

      Andrea

      Author's profile photo Soren Hansen
      Soren Hansen

      Hello Andrea

       

      Thank you for the blog. I have, with great thanks, embraced the new syntax, with challenges here and there. Now I have a question. I've created a CDS view with @ANALYTICAL.QUERY: TRUE. A co-worker of my have done the same but using the old CREATE VIEW - Both queries show up and can be used in RSRT, but only the query/CDS with the DDIC view shows up in the "Query Browser" app. Are there any limitations in the analytical usage of the CREATE ENTITY VIEW syntax? Best regards Søren Hansen, Denmark

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Søren,

      I checked with the dev team, they told me: Query browser app supports both CDS views and CDS view entities. There are no known limitations in the analytical usage of view entities.

      Could you provide an example of which is not supported in query browser app?

      This might be a bug and you might open a ticket on BC-DWB-DIC.

      Best

      Andrea

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      PS:  CDS Analytical Projection Views – the new Analytical Query Model | SAP Blogs

      Author's profile photo Kathi Nagaraju
      Kathi Nagaraju

      HI Andera,

       

      I  am getting below while working CDS view entity

      DDL soucrce could not be saved .....what i have to do please confirm

      Author's profile photo Harish Mehta
      Harish Mehta

      Hi Kathi,

      Do you get this error in ADT? It might be efficient, if you can open a ticket/case on component BC-DWB-DIC.

      Thanks and Regards,
      Harish Mehta

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi,

      could you please provide more details? Could you provide your source code? Which ABAP release are you working on?

      Might be wrong syntax.

      If it's a bug, you might open an incident on component BC-DWB-DIC.

      BR

      Author's profile photo Kathi Nagaraju
      Kathi Nagaraju

      @AbapCatalog.viewEnhancementCategory: [#NONE]
      @AccessControl.authorizationCheck: #CHECK
      @EndUserText.label: 'Define View entity'
      @Metadata.ignorePropagatedAnnotations: true
      @ObjectModel.usageType:{
      serviceQuality: #X,
      sizeCategory: #S,
      dataClass: #MIXED
      }
      define view entity ZDDLS_SAMPLE_04
      as select from vbak {
      key vbeln as so,
      kunnr as cust

      }

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Do you see any syntax error?

      If not directly in your editor, check the Problems view.

       

      I created the same DDL in my development IDE and I could activate it without any issues. Three warning messages, but they do not prevent activation.

       

      If there's no error message, maybe try from scratch. Create a new data definition and type the source code.

      Or check the release version of your system, maybe your system does not support view entities.

      The source code is fine and there shouldn't be any error.

      Author's profile photo Kathi Nagaraju
      Kathi Nagaraju

      This  is my sample code

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hover over the red x in line 10. Do you get any details?

       

      Maybe this name is unique, maybe there exists another DDL of the same name.

      Maybe DDLS name is different from entity name. This is not allowed in view entities.

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Since the word "entity" is not marked as syntax, it might be that you work on a SAP_BASIS release <7.55 and view entities are not supported yet.

      Author's profile photo Frederik Ulf Hansen
      Frederik Ulf Hansen

      Hi Andrea Schlotthauer ,

      Thank you for a great blog. We are in the process of soon upgrading to S4 (the newest version availalbe). Do I understand correctly that all standard content deliveried by SAP has been converted CDS View Entities in the newer versions so that there is no more old DDIC standard content left?

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi Frederik Ulf Hansen

      No, SAP standard content has not yet been converted completely to CDS view entities.

      SAP has started migration and has already migrated about 2000 CDS views to CDS view entities. However, most views  in S/4 are still classic CDS DDIC-based views. Full migration is still in planning, since it must be ensured that there are no incompatibilities and upgrade issues after migration.

      For new developments, SAP uses CDS view entities and in some contexts , such as the ABAP RESTful Application Programming Model with strict mode, CDS view entities are enforced.

       

      Author's profile photo Frederik Ulf Hansen
      Frederik Ulf Hansen

      Hi Andrea Schlotthauer ,

      Thanks a lot for your reply. Is there no issue using standard content based upon the DDIC type together with a custom view of type Entitiy? It seems a bit strange that we should use standard content based upon the old type and enhance with the new type. Is there no down side of combining the two types? Also do you advice we migrate the old standard content to the new type by our selves before using it?

       

      Thanks!

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi,

      you can create a custom view of type Entity that selects from a DDIC type. No problem. All new features are available.

      Please mind: When working with old CDS DDIC-based views, you should only access them with their entity name. Do not use the sqlViewName defined with the annotation @AbapCatalog.sqlViewNameFrom release 7.56 on, accessing the sqlView leads to a syntax check warning. Reason is that during a migration, the sqlView is deleted and all consumers will have error messages.

      There's no need to migrate SAP-delivered content before using it. SAP checks all of its views and if there are no technical constraints, they will be migrated.

      Do you mean "enhance" as in extend (EXTEND VIEW) or as wrap an old view with a new view? If you mean a new view as wrapper: just normal evolution of development technique in my opinion. SAP provides a new technique for data modeling, but must ensure downward compatibility as usual, since it is likely that some CDS-DDIC-based views will stay and not be migrated to the new view entities.

      Hope this helps.

      Author's profile photo Guido Giorgi
      Guido Giorgi

      Hi,

      why writing this simple Entity CDS:

      @AccessControl.authorizationCheck: #NOT_REQUIRED
      @EndUserText.label: 'Test Entity CDS'
      define view entity ZENTITY_TEST as select from vbak
      inner join vbap on vbap.vbeln = vbak.vbeln
      {
      key vbak.vbeln,
      key vbap.posnr
      }
      where vbak.audat = $session.system_date

       

      I receive these 2 following warnings?

      Search help assignment for field 'posnr' is not inherited from base object

      Search help assignment for field 'vbeln' is not inherited from base object

       

      Thank you very much

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi,

      in CDS view entities, value help assignment is not inherited from a base table field.

      There are different types of value help assignments. You can check the assignment as follows: SE11 > table > ->Input help/Check -> Column Origin of Input help.

      Both fields in your source code have Origin of Input help set to ‘Explicit search help interface to field’. In this case, the assignment is lost in a CDS view entity. Therefore, you have this warning message.

      Solution to have value help for these fields: Assign the required search help to a data element and cast the fields to the data element.

      For example:

      CAST ( field AS data_element_with_f4 PRESERVING TYPE ) AS field

      Hope this helps.

      BR

      Author's profile photo Shai Sinai
      Shai Sinai

      What should be done in case of an explicit search help assignment with multiple fields?

      Is there any alternative?

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      If you can modify the database tables, you can change the search help assignment. You can assign a foreign key relation as check table to the fields. For these fields, a CDS view entity inherits the value help assignment and there's no warning message.

      If it is a SAP-delivered database table and you cannot modify it, you need to handle each field separately. You should create and cast a data element with the same search help for each field as further attribute.

      Author's profile photo Shai Sinai
      Shai Sinai

      But there are cases in which the search help consists of several fields. e.g. WERKS (plant) + LGORT (storage location). Assignment of search help in LGORT (storage location) data element won't be sufficient because it won't take the plant into account.

      Author's profile photo Preetha Palanivel
      Preetha Palanivel

      Cast to data element for each field will not have multiple assignment as only one search help parameter can be mapped to a data element. This only gives an option to have value help for each cds view entity field. There are CDS value help annotations that might help for this case.

      Author's profile photo Jakob Mainka
      Jakob Mainka

      Dear Andrea,

      we have a Z-Field added to MARA, which has a Search-Help assigned via the Data-Element.

      MARA-ZZ_PRODFAM, data-element ZZ_PRODFAM_D (with Search-Help ZSHLP_PRDFM_D)

      Then we enhanced E_Product by ZX_E_Product to add the field there as well, and renamed it to ZZ_Productfamily, and ehanced I_Product by ZX_I_Product to get the field from the _ProductExt association. But when we now create a new CDS based on I_Product and add our field ZZ_ProductFamily we're getting the warning, that the search help was not inherited.

      According to the Element-Info the field has the data-element ZZ_PRODFAM_D but only if we again cast it to the same data-element the warning disappears?

       

      Author's profile photo Preetha Palanivel
      Preetha Palanivel

      Hi Jakob,

      When I tried to reproduce the scenario that you mentioned, I was not able to reproduce the warning in internal SAP system (UIA) and the search help was inherited for the field without any casting and warning.

      Can you create an internal incident to search help component with details about the internal system in which you created Z CDS views and extends?

      Thanks,

      Preetha

       

      Author's profile photo Seppo Sassi
      Seppo Sassi

      Hi,

      I wonder why the CDS view entities are not included in the F4 list for the table-field of the SE16N  transaction.

      The CDS views, on the other hand, are included in the F4 list for the same field.

      Author's profile photo Andrea Schlotthauer
      Andrea Schlotthauer
      Blog Post Author

      Hi,

      sorry, but does the transaction SE16N even exist? In which system?

      I don’t understand the question.

      Author's profile photo Shai Sinai
      Shai Sinai

      SE16N is a SAP-standard transaction for general table display.

      It was delivered only in ERP (ECC / S/4HANA) systems and isn't part of the ABAP platform / core.

      Author's profile photo Preetha Palanivel
      Preetha Palanivel

      Hi Seppo,

      Can you create an internal ticket/customer case with the steps to reproduce to the component BC-DWB-DIC-F4?

       

      Author's profile photo Thomas Kusch
      Thomas Kusch

      Hi togehter,

      I want to do a selection on Hierachy nodes in a CDS View selecting data as in a BW/4HANA.

      Is there any blog/solution on how to do this? E.g. to select one hierarchy node of a cost element group?

      Until know I found only a solution for single members (with the below annotation) but not a whole node that gathers a group of accounts for example.

       

      @AnalyticsDetails.query.onCharacteristicStructure: true

      Thank you in advance!

       

      Best regards

      Thomas

       

       

      Author's profile photo Kenneth Murray
      Kenneth Murray

      Hi Thomas, have you been able to make any progress on how to do the selection in a CDS View?

      Author's profile photo Stefan Unnebrink
      Stefan Unnebrink

      Hello Thomas,

      selecting a hierarchy node is only possible in analytical queries. These are CDS views with annotation Analytics.query:true or transient view entities with provider contract analytical_query.

      Hierarchies nodes can't be addressed directly in CDS. You have to introduce a parameter with special annotations and use this parameter in the traditional way (e.g. costElement = $parameters.p_hierarchyNode). It can be used in the filter of the query (WHERE) or in a restricted measure (CASE WHEN ... THEN <measure> END AS).

      With the following structured annotation @AnalyticsDetails.variable you can annotate a parameter such that it becomes a hierarchy node at query runtime:

      • selectionType: #HIERARCHY_NODE
      • referenceElement : ... // specify the element name for which the parameter should be used. In the above example it should be 'costElement'
      • multipleSelection: true // use this, if the parameter should represent multiple hierarchy nodes
      • mandatory: false  // use this, if also no hierarchy node at runtime should be possible (optional variable)
      • hierarchyBinding: [ ] // specify the hierarchy to which the nodes belong to

      if you just use these annotations, then the user of the query gets at runtime a prompt into which he/she can enter hierarchy node(s) or select them via value help.

      In addition you can specify a default value for the parameter or define a derivation such that at runtime a hierarchy node is available. in this case the parameter can be hidden with annotation @Consumption.hidden. For hidden variables the user doesn't get a prompt.

      A single default hierarchy node can be specified with the structured annotation @AnalyticsDetails.variable.defaultHierarchyNode. Multiple default values are not possible.

      With the structured annotation @Consumption.derivation.resultHierarchyNode you can specify a derivation which returns one or more hierarchy nodes. If it might return more than one hierarchy node, the parameter has to be enabled for multiple nodes (...multipleSelections:true).

      Remarks:

      1. Annotation @AnalyticsDetails.variable was introduced with Release 2208. The predecessor of it for hierarchy node was the structured annotation @Consumption.hierarchyNodeSelection. All of the explained features are available with almost the same sub-annotations.
      2. When defining a filter with hierarchy node, you can use @Consumption.filter. All of the explained features are available with almost the same sub-annotations. With this an OData service can still be created - this means OData.publish: true is possible together with @Consummption.filter. While it is not possible together with @AnalyticsDetails.variable.
      3. There is a new way of assigning hierarchies to a dimension (>= Release 2308). If the new style is used, the hierarchy binding can't be specified with @AnalyticsDetails.variable.hierarchyBinding. Instead @AnalyticsDetails.variable.hierarchyAssociation has to be used.
      4. For details of all the mentioned annotations please check the documentation of annotations in help.sap.com

      Example:

      A nice example is the SAP delivered CDS analytical query C_FinStmntWthPrftCtrHierQuery. It shows how to used @Consumption.filter in combination with @Consumption.derivation for profitcenter.

      @AnalyticsDetails.query.variableSequence: 10

      @Consumption.filter: {

          selectionType: #HIERARCHY_NODE,

          multipleSelections: true,

          mandatory: false,

          hidden: true,

          hierarchyBinding : [ { type: #PARAMETER, value: 'P_ControllingArea' },

                                          { type: #PARAMETER, value: 'P_ProfitCenterHierarchy' } ]

       }

      @Consumption.derivation : {

         lookupEntity: 'P_ProfitCenterHierRootNode',

         resultHierarchyNode: {

           nodeTypeElement: 'NodeFieldname' ,

           mapping:[ {hierarchyElement: 'ControllingArea', lookupElement: 'ControllingArea' } ,

                            {hierarchyElement: 'ProfitCenterHierarchy', lookupElement: 'ProfitCenterHierarchy' },

                            {hierarchyElement: 'HierarchyNode', lookupElement: 'HierarchyNode' } ]

         },

         binding:[ { targetElement: 'ControllingArea', type: #PARAMETER, value: 'P_ControllingArea' },

                        { targetElement: 'ProfitCenterHierarchy', type: #PARAMETER, value: 'P_ProfitCenterHierarchy' },

                         { targetElement: 'ValidityEndDate', type: #CONSTANT, value: '99991231' } ]

         }

      @AnalyticsDetails.query.displayHierarchy: #FILTER

      @AnalyticsDetails.query.axis: #ROWS

      @AnalyticsDetails.query.display: #KEY_TEXT

      @AnalyticsDetails.query.totals: #SHOW

      key ProfitCenter,

      The query is filtered by multiple hierarchy nodes which are selected from the lookup view P_ProfitCenterHierRootNode. The user doesn't get a prompt (hidden:true) and it might be that the lookup view doesn't return any data, therefore mandatory is set to false.

      The hierarchy is specified with hierarchyBinding. It is the profitcenter hierarchy with first key field of the hierarchy directory determined by parameter P_ControllingArea and the second key field by  P_ProfitCenterHierarchy (see hierarchy directory view I_ProfitCenterHierarchy).

      The hierarchy view in this example is I_ProfitCenterHierarchyNode. The results have to be records of that node. The mapping between the field names in the lookup up view and the hierarchy view is specified with Consumption.derivation.resultHierarchyNode.binding. In the field specified with Consupmtion.derivfation.resultHierarchyNode.nodeTypeElement contains a field name which points to the field which is filled.