Prerequisites
To follow-up with this blog post you must have read and completed the following previous blog posts in this series:
Setup Project for SAP HANA
So far, all data persistence of our application has been utilizing a
default SQLite in-memory database, which means that, each time we restart the application, all data that has been added/updated is completely gone.
It might be OK for local development, but when it goes to a cloud landscape (either development, QA or production) the
data must be persisted in a
standard relational database such as
SAP HANA Cloud (which is going to be the selected database for our application).
Therefore, it's now time to prepare our project to deploy the data model to
SAP HANA Cloud when it goes to BTP. For that, we must
add the appropriate dependencies to our project using the
cds add command.
1. In the Terminal type cds add hana and press Enter

Figure 1 - Add SAP HANA dependencies to project
2. On the left-hand pane click on the package.json file to open it. Examine the contents and notice the modifications in the dependencies and cds.requires sections and the new cds.hana section. Change the db.kind from the cds.requires section to "hana"

Figure 2 - Changes made to package.json
3. In the Terminal type npm install and press Enter to install the newly added dependency locally

Figure 3 - Install new dependency
Deploy to SAP HANA Cloud
IMPORTANT NOTE: before executing the next steps first make sure:
- You are properly logged to Cloud Foundry as instructed in: Jumpstart the CAP Project
- Your SAP HANA Cloud database instance (created following this tutorial) is up and running - remember: on trial accounts everything (including SAP HANA database) shuts down overnight!
4. In the Terminal type cds deploy --to hana and press Enter

Figure 4 - Deploying to the HANA Cloud database
It's going to take a while before the command completes as it's performing these operations:
- Build the database artifacts from the CAP project in the gen folder that's created under the project root folder, for further deployment to SAP HANA.
- Create a service instance named sfsf-projman-db of type SAP HANA Schemas & HDI Containers with the hdi-shared plan, that handles the HDI container
- Create the SAP HANA database artifacts from the application inside the HDI container
- Bind the service instance to the local project by modifying the default-env.json file, adding the database credentials (actually the service key from the service binding).
After the command completes, we will have achieved what we call a "
hybrid approach" where your project runs locally, but the
database (and the corresponding persistence)
runs in the cloud.
Let's take a quick look at the
default-env.json to verify what happened after command completion: on the
left-hand pane click on the
default-env.json file to open it:

Figure 5 - Changes in default-env.json
Notice that a "
hana" section has been added to the
VCAP_SERVICES environment variable, with the
service instance name of the
HDI container and the
credentials (service key) to connect to the SAP HANA Cloud database.
IMPORTANT UPDATE: From
CDS version 5 and above, this procedure
will not modify the
default-env.json file. Instead, it will create the
.cdsrc-private.json file containing the service bindings. For such CDS versions you'll need to "re-bind" the
Destination and
XSUAA service instances to the local project with:
cds bind --to sfsf-dest,sfsf-xsuaa. Then, to run the project locally you must use:
cds watch --profile hybrid. If, in the future, you switch back to the
SQLite in-memory database, then you can stick with the simple
cds watch.
If you click on the
Cloud Foundry icon (small light bulb) on the left-hand pane and
expand the services node, you'll also see the newly created service instance:

Figure 6 - HDI container service instance
Now, let's see what happens when we execute the application.
5. In the Terminal type cds watch and press Enter (IMPORTANT: you must use cds watch --profile hybrid when working with CDS version 5 and above as per the update described in the previous step)

Figure 7 - Project connected to SAP HANA Cloud database
Notice that, now, CDS is
connecting to SAP HANA Cloud as the persistence mechanism of the application.
Again, in this scenario the
project is running
locally, but the
database is running in the
cloud (
hybrid approach).
If you want to
switch to the SQLite in-memory database again for development, just go back to
package.json and change the
db.kind parameter in the
cds.requires section back to "
sql": and notice that
cds watch immediately recognizes the change and
switches the connection to
sqlite with the "
:memory:" credentials:

Figure 8 - Switching back to SQLite in-memory
Conclusion
After having gone through the steps of this blog post you should have successfully set up your project to utilize the SAP HANA Cloud database and deployed the application data model to it. Now it's time to create the SAP Fiori Elements application into your project using the MTA (Multi-Target Application) approach as the final step to prepare the project for deployment.
NOTE: all the
instructions provided in this blog post
apply exactly the same to
any CAP project that should utilize
SAP HANA Cloud database as the persistence layer for the application.
Please, do not hesitate to
submit your questions in
SAP Community through the
Q&A tag link:
https://answers.sap.com/index.html
Next blog post in this series