Skip to Content
Technical Articles

How to create CDS entities in SAP Business Application Studio

Introduction

This blog is continuation of my previous blog https://blogs.sap.com/2020/08/21/how-to-connect-to-sap-business-application-studio/ wherein I showed how to launch SAP Business Application Studio from SAP HANA Cloud and how to create a dev space to work in SAP Business Application Studio.

In this blog I’ll show you how to create CDS entities in SAP Business Application Studio. In SAP HANA a CDS entity is a table that is organized into columns and rows with predefined data types for each column.

Steps to create CDS Entities

First step is to create a new application in a Workspace.

  1. Go to Terminal menu and select the option New Terminal

Go%20to%20Terminal%20menu

2. You see a User $ prompt appears in the bottom section of the screen as shown below.

user%24%20prompt

user$ prompt

 

3. Type the command cd projects to go to projects $ prompt.

cd%20projects

cd projects

4. Now let us create a application test1. The command to create a application is cds init test1. Syntax is cds init <application_name>

create%20a%20workspace

create a workspace

5. Go to File menu and select the option Open Workspace.

6. You see that the application test1 that you created in step 4 above appears here. Select it and click on Open.

select%20your%20workspace

select your workspace

7. The below screen shows that you are in the workspace for the application Test1.

 

8. Again go to Terminal menu and select the option New Terminal. You do this every time you want to launch a terminal in SAP Business Application Studio.

Go%20to%20Terminal%20menu

Go to Terminal menu

9. Now the command prompt in the terminal changes to test1 $ as shown in the screen below.

10. Let us now see how to create a CDS entity. Now on the left pane under Explorer menu, right click on the db folder and select the option New File to create a new file named schema.cds.

 

11. The file schema.cds is created by right clicking on db folder and selecting the option New File.

Give the name as schema.cds. In schema.cds window you create and define the actual CDS entities. In this example I’ve created two CDS entities Sales and Purchases. Following is the syntax to create a CDS entity.

namespace <namespace_name>;

entity    <entity_name> {

Key id : Integer;    —— One of the fields in the entity has to be defined as a Key. Here I’ve used the field id as my key field.

Field1: field1 data type;

Field2: field 2 data type;

Field n: field n data type;

}

 

Code for the CDS entities I created in this blog

namespace test;

entity Sales {

key id           : Integer;

Date_of_Sale : Date;            —————- Date should be entered in the format YYYY-MM-DD

Particulars  : String(100);

Amount       : String(100);

SalesPerson: String(100);

Commission: String;

}

 

entity Purchases {

key id               : Integer;

Date_of_Purchase : Date; —————- Date should be entered in the format YYYY-MM-DD

Particulars      : String(100);

Amount           : String(100);

PurchaseAgent: String(100);

}

 

To arrange code in a legible manner, right click on the white space and select the option “Format document”.

 

The code appears as shown in the below screen after selecting the option Format document.

Format Document

12. Save the code. In terminal window enter the command cds watch and hit enter key. A popup appears with the message “ A service is listening to port 4004” with the button Open in New Tab. Hit on the button Open in New Tab.

 

13. After typing the cds watch command having defined the cds entities, the message appears as shown in the screen below, saying No service definitions found in loaded models. This means that the loaded models which are the CDS entities do not have a service layer defined with which they can connect to. Hence our next step is to define a service layer.

 

 

 

14. Now let us create a service layer. Right click on the srv folder on the left pane and select the option New File to create a new file called project.cds. Service layer is created under srv folder. This will expose the CDS entities as an odata service.

I need to add a service layer to talk to the entities that I’ve created in db layer. Add the following code to the service layer. To create a service layer, right click on srv folder and choose the option New File. In this case I’ve named the file as project.cds. Enter the following code in the project.cds window.

Code for Service layer – project.cds file

using {test} from ‘../db/schema’;

 

  • using is the key word that I used here to refer to the test namespace that is located in schema file in db
  • I am using test namespace that I created in schema.cds. This schema.cds is located under db folder.
  • After the from keyword give space and type ‘.. and the system will automatically pickup the path where the test namespace was created. So the path /db/schema will popup after typing ‘.. and select it by pressing the tab key.]
  • In case you have more than one schema created then you have to select the schema where this namespace and entities is created.

 

service project {        [service is the keyword project is the name of the service. Here I am using the two entities that I created in schema.cds.]

Code for service layer should appear as shown in the screen below.

Code for service layer – project.cds file

using {test} from ‘../db/schema’;

service project {

entity Sales as select from test.Sales;

entity Purchases as select from test.Purchases;

}

[syntax for the above two lines is entity entity_name as select from namespace.entityname;]

 

15. On hitting the Open in New Tab button the screen shown below appears showing Purchases and Sales tables/entities that we created above. Click on Purchases and Sales link shown below to see the tables. At this point of time it is blank as we have not entered yet any records into these tables.

 

16. The code in project.cds window should appear as shown in the below screen. Save this code and you should see the messages as shown in the lower section of the terminal window that the model has been loaded from 2 files db/schema.cds and srv/project.cds and that they have been deployed to sqlite in-memory database. By default, the entities that you create are stored in sql lite database. You can change it to SAP Hana database. This is shown in the steps later in this blog below.

Having created schema.cds file under db folder and project.cds file under srv folder with the respective code, our next step is to load the CDS entities with actual data from .csv files.

16. Now let us see how to load data into these two tables that we created above.

    1. Create a new folder named data under db folder by right clicking on the db folder In data folder I will create the actual .csv files that will hold the data.

17. The syntax for the .csv file names is namespace.entityname.csv. So if my namespace is test and entity name is Sales then the .CSV file name will be test.Sales.csv. These .csv files will be created in data folder.

    1. Right click on data folder and select the option New File. Here I’ve named the .csv file as test-Sales.csv.

18. Below screen showing creation of Purchases.csv file. Always your .csv file should be prefixed with namespace. In this case name of the namespace is test hence I’ve prefixed it with test and the file name is test.Purchases.csv.

 

19. Here is the data I’ve used in my Sales and Purchases CDS entities. Copy and paste this data in Sales and Purchases entities respectively. Then save it.

Data for Sales.csv file

id;Date_of_Sale;Particulars;Amount;SalesPerson;Commission
100;2020-04-15;Book;Rs. 550;Ajay;Rs. 55
200;2020-04-18;Pencil box;Rs. 110;Vijay;Rs. 10
300;2020-04-25;Pens;Rs. 200;Ramesh;Rs. 60
400;2020-05-15;Erasers;Rs. 75;Suresh;Rs. 5

 

Data for Purchase.csv file

id;Date_of_Purchase;Particulars;Amount;PurchaseAgent
100;2020-02-02;LEDBulbs;Rs650;Raghupati
110;2020-03-15;Tubelightsx;Rs110;Raghava
120;2020-04-09;Cables;Rs00;Raja
130;2020-05-16;Fans;Rs75;Ram

 

20. Now type the cds watch command again and then click on the “Open in New Tab” button on the popup “A service is listening to port 4004” that appears on the lower right corner.

You should now see the CDS entities that you created above, as shown in the screen below.

 

 

21. On clicking Purchases and sales links the data loaded in the two entities appears as shown in the below two screens.

Data%20from%20Sales.cds

Data from Sales.cds

Data%20from%20Purchases.cds

Data from Purchases.cds

22. Now return to SAP Business Application Studio and in the terminal type the command cds add hana. You should see a message that says “adding feature(s) to project in current folder and adding feature ‘hana’…. as shown in the screen below. This command changes your database type from sqlite to hana database.

change%20database%20type%20from%20sqlite%20to%20hana

change database type from sqlite to hana

 

Conclusion

These are the steps to create CDS entities in SAP Business Application Studio and change the database type from sqlite to HANA database.

Additional Information

For more information on how to work with SAP Business Application Studio you may also refer to the videos published in this link.

 

https://github.com/SAP-samples/sap-devtoberfest-2020/tree/master/topics/cap

https://www.youtube.com/user/sapdevs

https://github.com/SAP-samples/cloud-cap-samples

Free Open Course  : https://open.sap.com/courses/cp7/

 

Please share your feedback about this blog.

3 Comments
You must be Logged on to comment or reply to a post.
  • Hi,

     

    Thanks for showing interest in writing blog posts, actually few mistakes in this blog post which needs rework  ,it would be great if you correct in your blog post as early as possible .

     

    To highlight major one are below ,you have written

    13) On hitting the Open in New Tab button the screen shown below appears showing Purchases and Sales tables/entities that we created above. Click on Purchases and Sales link shown below to see the tables. At this point of time it is blank as we have not entered yet any records into these tables.

     

    Actually From step 11 to Step 13  you just added schema but you have not exposed any service definition yet but you are saying readers that service are available ,you also added screenshots

     

    Correct flow is when developers run “CDS watch “ after adding schema (CDS entities )

     

    You can see below message

     

    cds] – launched in: 563.601ms

    [cds] – server listening on { url: ‘http://localhost:4004’ }

    [ terminate with ^C ]

     

     

    No service definitions found in loaded models.

    Waiting for some to arrive..

     

    Correct behaviour is

     

    Then you continue by saying in Step 14 to add Service definition …..

    ————————————————————————————————————————————–

    Other small mistake is at line 4

    4) Now let us create a workspace test1. The command to create a workspace is cds init test1. Syntax is cds init <workspace_name>

    It is not <workspace_name> , actually it is application name ,  CAP bootstrap application based on node js runtime  with app,db,srv structure

    ……

     

    # Also in SAP Business Applications  Studio there is UI to generate CAP Project without commands

    # There is new feature SAP Business Applications  to  Graphical Editor to design entities ,views , association from UI i.e no need to write code ,if someone are interested in easy way of writing CDS without remembering syntax….

     

    I  have not reviewed fully your content & it was quick review

     

     

     

    I also suggest whenever you write blog posts to please have reference links as there are many self-study material available from with samples, if any improvements or new feature comes

    readers can verify

     

    Official CAP documentation  : https://cap.cloud.sap/docs/cds/

     

    There are also many videos from SAP Developers ,experts basic & advance examples on SAP Business Application Studio , CAP

     

    For instance  SAP Cloud Application Programming Model

     

    https://github.com/SAP-samples/sap-devtoberfest-2020/tree/master/topics/cap

    https://www.youtube.com/user/sapdevs

    https://github.com/SAP-samples/cloud-cap-samples

     

     

    Free Open Course  : https://open.sap.com/courses/cp7/

     

    A bunch of good tutorials from community already available  with screenshots

     

    https://developers.sap.com/tutorial-navigator.html?tag=software-product-function:sap-cloud-application-programming-model

     

     

     

    Thanks for your understanding ,since it is new technology others  should not be confused with our blog posts 🙂

    Showkath.

     

  • Thank you so much Pavan for explaining the steps in detail with screenshots.

    It was very helpful in creating the entities and following along with detailed steps.

  • Hi,

    An alternative way to create the project is by using the application wizard:

    From the welcome page or from the command palette click/type create project from template:

    Then, choose CAP project and select the features for the new project.

     

    Thanks,

    Liat

    /