Enterprise Resource Planning Blogs by Members
Gain new perspectives and knowledge about enterprise resource planning in blog posts from community members. Share your own comments and ERP insights today!
cancel
Showing results for 
Search instead for 
Did you mean: 
kumarsanjeev
Explorer
65,114
This is the 4th blog post on the CDS detailed explanations after the Introduction post. Refer to the Introduction and blog post indexes here:
https://blogs.sap.com/2019/10/21/part1.-sap-cds-views-demystification/

CDS view is also called a VDM i.e. Virtual Data Model as there is no data persistence happening.  All the SQL like code written in a CDS view pick the data from Base tables directly or via other CDS view at RUNTIME .  The actual data still remain in the SAP Base tables and CDS views remains a virtual data model.  Now in a scenario, we have created a complex CDS view which has lot of business logic implemented into it and we want to use the data coming out of this CDS view in an ABAP program, can this be possible?  Yes, it is possible via new ABAP syntax.  Let's look at it.

1.  We will use the Basic CDS view we created before to be consumed via ABAP program;
@AbapCatalog.sqlViewName: 'ZSQL_BASIC_VIEW'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'CDS View type #BASIC'
define view ZCDS_BASIC_VIEW as select from sflight {
//sflight
--key mandt,
key carrid,
seatsmax_b,
seatsocc_b,
seatsmax_f,
seatsocc_f
}

 

     2. Within ABAP perspective in Eclise or HANA Studio, right click on your user under Lcal Objects within an ABAP project to create an AABAP program



 



 



  1. Consume the CDS Basic view we created via this ABAP program.  Note the new ABAP syntax used for this purpose.


*&---------------------------------------------------------------------*
*& Report zconsume_cds
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zconsume_cds.

Select * from ZCDS_BASIC_VIEW into table @data(lt_itab).

cl_demo_output=>display_data( lt_itab ).

 

2. Hit F8 or Execute the program to check the output.



 

In summary, there are lot of scenarios in projects where we write complex CDS views and we need to consume them into an ABAP program for different business needs.  In this blog post, we looked at the new ABAP syntax to consume a CDS view.

 

Part# 5. CDS View Extension: Learn the concept of re-usability within CDS views.

 

Follow for upcoming blog posts: kumarsanjeev

Keep learning..

SK

 
13 Comments
sdingermann
Explorer
Hi Kumar,

thanks for sharing!

For just displaying the content of a CDS, you can also use Integrated Data Access (IDA).

So, there is no need for a select statement.

cl_salv_gui_table_ida=>create_for_cds_view('ZCDS_BASIC_VIEW')->fullscree( )->display( ).

 
kumarsanjeev
Explorer
Hi Sebastian,

 

Thanks for your input!

 

Regards

Sanjeev.
Jelena_Perfiljeva
Active Contributor
FYI - better use "Reply" button when replying to someone's comment. If you do that then the other person will be notified of your reply. When we use "add comment" then only the blog author (i.e. yourself in this case) gets notified.
former_member682484
Discoverer
0 Kudos
Sir,

Very good document. Really appreciate all the effort you put. I was able to follow the whole thing. Thank you so much.

Regards,

Vishal Agrawal

 
RaminS
Active Participant
0 Kudos
But how do you follow the association from Abap?

Selecting from CDS view is the same as selecting from a DDIC object, nothing new here. The tricky part would be how to navigate through an association from Abap.
0 Kudos
Good One Sanjeev, Thanks for the document.
prohner
Explorer
0 Kudos
Hi,

Is it possible to extract the data from the CDS view by adding a where clause?

Let's assume we have cds view A_COSTCENTER, but I only want to extract certain cost centers. Is that possible?

 

Regards,

Patrick

 
0 Kudos
Is that possible !!. to drill down from ALV reports, making use of associations.
RaminS
Active Participant
0 Kudos
I have not found a way.

And no one seems to know.

 
RaminS
Active Participant

Of course, why not. It's just like any other SQL statement:

 

select * from A_COSTCENTER
where cost_center = @lv_cc
into table @data(lt_costcenters).

 

What I don't know is how to go down an association path. That seems not possible.

11naveen
Discoverer
To navigate to an association, in ABAP program/ Class where CDS view need to be consumed

In the select statement, use below syntax

 

For single level association,

select

\_association-field_name from CDS_VIEW_NAME

 

for two level association,

Select

\_association1\_association2-field_name from CDS_VIEW_NAME

 
RaminS
Active Participant
0 Kudos
Thanks. That works!

 
select
Order_Type,
\_txt-spras as lang

from zrsh_test_cds
into table @data(lt_data).

 

The Cds view:
define view zrsh_test_cds as 

select from t003o
association[1..*] to t003p as _txt on _txt.auart = $projection.Order_Type
{
auart as Order_Type,
stsma as Order_Profile,
_txt
}
where auart like 'LM%'
hassin
Explorer
0 Kudos
Hallo Kumar,

I have a problem with accumulation in CDS-Views so I posted a question.

https://answers.sap.com/questions/13733584/cds-countingsum-value-from-column.html

If i dont find a solution in CDS I would like to solve it via ABAP.

My question is, can I consume abap program in cds view?

 

Regards

Hassin
Labels in this area