Skip to Content
Author's profile photo Andre Fischer

How to find the CDS view used by an OData service in SAP Gateway?

Today I was asked how to retrieve the name or the names of CDS views being used by OData Services that have been published either using autoexposure leveraging the annoation OData.publish:true or using the Referenced Data Source approach.

Autoexposure:

If the service has been published using OData.publish: true the answer is quite simple because the technical Service name is derived by the SADL Framework from the name of the underlying CDS view by adding the Suffix _CDS.

An OData service with the name: ZS4H_C_SLSORDER_TP_CDS is thus based on the CDS view ZS4H_C_SLSORDER_TP.

Referenced Data Source:

In this case the service name is derived from the SEGW project name and typically ends with _SRV.

Though the project name in SEGW and hence the service name can be chosen freely, the names of the entity sets are equivalent to the names of the underlying CDS views.

(This is also true for OData services being created using Autoexposure => OData.publish: true)

A service called ZDX271_20_SRV having entity sets called

  • SEPM_I_BusinessPartner_E
  • Sepm_I_SalesOrdOverallStatus
  • Zdx271_C_Slsorder_20
  • Zdx271_C_Slsorderitem_20

would be based on CDS views having those four aforementioned names.

To get the names of the Entity sets there are two options:

 

  • You can search for the service name using the catalogue Service

Run the following URL in the SAP Gateway Client:

/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/ServiceCollection?search='ZDX271_20_SRV'

Here you will find one entry

<id>http://<host>:<port>/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/ServiceCollection('ZDX271_20_SRV_0001')</id>

having an entity set called “EntitySets”

/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/ServiceCollection('ZDX271_20_SRV_0001')/EntitySets

that would list the entity sets and thus the names of the CDS views of your OData service.

 

  • Or if you know the Service URL you can simply retrieve the service document

 

by using the following URL:

/sap/opu/odata/sap/ZDX271_20_SRV/?$Format=XML

that contains the names of the Entity sets

<app:workspace>

<atom:title type="text">Data</atom:title>

<app:collection href="SEPM_I_BusinessPartner_E" sap:content-version="1" sap:deletable="false" sap:updatable="false" sap:creatable="false">
<atom:title type="text">SEPM_I_BusinessPartner_E</atom:title>
<sap:member-title>EPM Demo: BuPa with External IDs</sap:member-title>
</app:collection>

<app:collection href="Sepm_I_SalesOrdOverallStatus" sap:content-version="1" sap:deletable="false" sap:updatable="false" sap:creatable="false">
<atom:title type="text">Sepm_I_SalesOrdOverallStatus</atom:title>
<sap:member-title>EPM Demo: Sales Order Overall Status</sap:member-title>
</app:collection>

<app:collection href="Zdx271_C_Slsorder_20" sap:content-version="1" sap:deletable="false" sap:updatable="false" sap:creatable="false">
<atom:title type="text">Zdx271_C_Slsorder_20</atom:title>
<sap:member-title>Sales Order Header Consumption View #20</sap:member-title>
</app:collection>

<app:collection href="Zdx271_C_Slsorderitem_20" sap:content-version="1" sap:deletable="false" sap:updatable="false" sap:creatable="false">
<atom:title type="text">Zdx271_C_Slsorderitem_20</atom:title>
<sap:member-title>Sales Order Item Consumption View #20</sap:member-title>
</app:collection>

</app:workspace>

 

Please note:

It will become tricky to find the names of the CDS views if someone has renamed the entity sets in the MPC_EXT class as I have described in another thread.

 

Hope this helps,

Andre

 

Assigned Tags

      1 Comment
      You must be Logged on to comment or reply to a post.
      Author's profile photo B. Struijk
      B. Struijk

      Hi Andre,

      Thank you very much for sharing. This is very helpful.

      Your tips work for me, except that it seems that I have to remove the 'Type' suffix from the end of the Entity Type name in transactoin SEGW.

      E.g. SEGW project CPD_MASTERPROJECT_OVERVIEW:

      Entity Type = C_MDBusPartChangeProcessType --> CDS view = C_MDBusPartChangeProcess

      Kind regards.