You are on page 1of 13

My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

1 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

So far we have a working CDS view ready for us to create a UI5 application on
top of it via Smart Template in WebIDE within just a couple of minutes. Once
done, the UI5 application will display the data from our CDS view like below. For
step by step how to achieve this, please refer to this blog: Step by Step to create
CDS view through SmartTemplate + WebIDE .

How is navigation implemented


among CDS views
In this part, let’s create CDS view which supports node navigation in OData
service. The previous CDS view we created has a flat structure which only have a
root node. Now let’s create a series of CDS views:

1. A CDS view which contains two fields: spfli.connid and spfli.carrid. This view
acts as the root node of the corresponding OData service model from semantic
point of view. This view can support navigation from itself to the defined children
node.

2. A CDS view which acts as the navigation target from previously defined “root”
view. Besides the two fields from sflight.connid and sflight.carrid which
correspond to the root view, it has additional new field sflight.fldate.

OData navigation means suppose currently I am in the context of spfli.connid =


0001 and spfli.carrid ( data record with yellow ), and through navigation I can get
all its dependent data in red color. We will see how this navigation would be
performed later.

2 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

3. A CDS view which exposes the two fields connid and carrid from root view
and the associated data from child view.

This view is called “consumption” view and used to published as OData service.

Source code of view #1:

@AbapCatalog.sqlViewName: 'zspfliroot'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'root view'
define view Zspfli_Root as select from spfli
association [0..*] to Zsflight_Child as _Item on $projection.carrid
and $projection.connid = _Item
{
key spfli.connid,
key spfli.carrid,
@ObjectModel.association.type: #TO_COMPOSITION_CHILD
_Item
}

Source code of view #2:

@AbapCatalog.sqlViewName: 'zsflightchild'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'child_view'
define view Zsflight_Child as select from sflight
association [1..1] to zspfli_root as _root
on $projection.connid = _root.connid
and $projection.carrid = _root.carrid
{
key sflight.carrid,
key sflight.connid,
key sflight.fldate,
@ObjectModel.association.type: [#TO_COMPOSITION_ROOT, #TO_COMPOSITI
_root
}

3 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

Source code of view #3:

@AbapCatalog.sqlViewName: 'zflight_c'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'flight consumption view'
@OData.publish: true
@ObjectModel: {
type: #CONSUMPTION,
compositionRoot,
createEnabled,
deleteEnabled,
updateEnabled
}
define view Zflight_Com as select from Zspfli_Root {
key Zspfli_Root.carrid,
key Zspfli_Root.connid,
@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]
Zspfli_Root._Item
}

Activate all of these three CDS views. Since the third consumption view has
annotation @OData.publish: true, once activated there will be an OData service
automatically generated:

How to test navigation


First check the response from OData metadata request via url /sap/opu/odata
/sap/ZFLIGHT_COM_CDS/$metadata in gateway client.

You should find two AssociationSets generated based on corresponding


annotation in CDS views.

The entityset Zflight_Com has type Zflight_ComType, which has the navigation
Property “to_Item”. Now we can test the navigation.

4 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

First we get the root node’s content via url: /sap/opu/odata


/sap/ZFLIGHT_COM_CDS/Zflight_Com(connid=’0400′,carrid=’LH’) .

And in the response, we are told that the correct url for navigation from current
node to its child node is just to append the navigation property defined in
metadata, toItem, to the end of url, that is, /sap/opu/odata
/sap/ZFLIGHT_COM_CDS/Zflight_Com(connid=’0400′,carrid=’LH’)/to_Item .

How the navigation is implemented


in ABAP side
Set the breakpoint in the method below and re-trigger the navigation operation.

Check the generated SQL statement in variable statement in line 27.

5 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

SELECT "Zsflight_Child"."CARRID" AS "CARRID", "Zsflight_Child"."CONNID


WHERE "Zsflight_Child"."CARRID" = ? AND "Zsflight_Child"."CONNID" = ?

The value for two placeholders ( ? ) are stored in me->parameters->param_tab:

And check response in et_flag_data:

6 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

7 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

8 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

9 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

10 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

11 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

12 of 13 25/03/2022, 18:37
My CDS view self study tutorial – Part 5 how to create CDS view whic... https://blogs.sap.com/2016/03/19/my-cds-view-self-study-tutorial-part...

13 of 13 25/03/2022, 18:37

You might also like