SAP Cloud Application Programming Model Getting Started (CAP)
This article describes how to build Cloud Application Programming Model projects (CAP projects) and according artefacts with Core Data Services (CDS).
Source: ABAP Freak Show Ep. 1 - HANA Cloud and the Business Application Studio
https://www.youtube.com/watch?v=a3WPQwmpbvI&list=PLoc6uc3ML1JR38-V46qhmGIKG07nXwO6X&index=71
For local native development see SAP HANA Local Native Development
All-in-one Quick Start: https://github.com/SAP-samples/cloud-cap-walkthroughs/blob/master/exercises-node/intro/README.md
More Repositories: https://github.com/SAP-samples/cloud-cap-samples --> Use opensap*-Branches
Installation of Prerequisites
Relevant Tools from SAP
npm i -g @sap/cds npm i -g @sap/cds-dk
Additional 3rd Party Tools1
npm i -g hana-cli
Create CDS Project
cds init bookshop
or
cds init MyCDSProject --add hana, mta
Download and install dependencies:
npm install
Start Service
cds watch
This also monitors changes to the underlying files and restarts when a file has changed.
Add Persistency to CDS
In case of SQLite first install SQLite3 packages by executing in the root of the project folder:
npm i sqlite3 -D
Deploy data model to different database types:
cds deploy --to sqlite # Deploys to sqlite.db cds deploy --to sqlite:my.db # Deploys to my.db cds deploy --to hana # Deploys to HDI container on HANA # (Requires Cloud Foundry login)
This also updates the package.json secion cds.requires.db.
In order to see the actual created SQL statements:
cds compile srv/cat-service.cds --to sql # Creates SQL statements cds compile srv/cat-service.cds --to hana # Creates hdbcds or hdbtable/hdbview artefacts
When deployed to SQLite database use this statement to view the database:
sqlite3 my.db -cmd .dump
Deployment to SAP Business Technology Platform (BTP)
Login to CF space:
cf login
Build Deployment Package
cds add hana
package.json needs to contain "kind": "hana". (really? - for which CF / HANA Cloud Version?)
Also when deploying to BTP which is internally HANA 4.0 "deploy-format": "hdbtable" has to be set and hdi-deploy should be at least version 4. Example:
{
...
"devDependencies": {
"@sap/hdi-deploy": "^4"
},
...
"cds": {
"hana": {
"deploy-format": "hdbtable"
},
"requires": {
"db": {
"model": [
"db",
"srv"
],
"kind": "hana"
}
}
}
}
Deploy via Cloud Foundry CLI
Build the deployment artifacts:
cds build/all cds build --production # Only production profile?
Create a hana service for the hdi-container. The stated hdi-container name must correlate to the services-name in /gen/db/src/manifest.yaml.
cf create-service hana hdi-shared <app-db-hdi-container>
Now push the DB deployer application and also the actual service application:
cf push -f gen/db cf push -f gen/srv --random-route
Deploy via MTA
Install MTA Build Tool
npm install -g mbt
Generate MTA project descriptor file mta.yaml and build MTA archive:
cds add mta mbt build
Deploy MTA archive to CF space:
cf deploy mta_archives/<buildmta>.mtar
Troubleshooting
Real-time output of CF services can be displayed in BAS terminal with
cf logs <appname>