Skip to Content
Technical Articles

Application Programming Model for SAP Cloud Platform – start here

There’s been a lot of activity and interest around the new Application Programming Model for SAP Cloud Platform, not least during SAP TechEd in Las Vegas last week. I thought it would be useful to provide an overview of the key resources, for folks who are wondering how to get started.

Briefly, the Application Programming Model for SAP Cloud Platform is a framework of tools, languages and libraries, some from SAP, some open source. With these tools, languages and libraries you can efficiently and rapidly build enterprise services and applications in a full-stack development approach. It guides you along a golden path of best practices, allowing you to focus on your domain while relieving you from tedious technical tasks.


Help Portal

You can find core documentation for the Application Programming Model in the SAP Help Portal. Within the “SAP Cloud Platform – Development” area, start with the section “Working with the Application Programming Model“, as that will take you through the basics as well as detailing some best practices and reference material.


You can also find what’s new on the subject with this handy URL:

which will pre-select the Application Programming Model component in the filter.


SAP Developer Center 

In the SAP Developer Center, there are missions, tutorial groups and tutorials.

In the beginner-level mission “Take a Deep Dive into OData” there’s a tutorial group “Build Your First OData-based Backend Service” which gives you a high level taster.

In the intermediate-level misson “Build Your First Full-Stack App on SAP Cloud Platform” there’s a tutorial group “Use the Application Programming Model to Create a Full-Stack App“. The group currently contains 5 tutorials that take you through building a data model, service and UI using the power of the Application Programming Model for the data model and service (OData flavoured, in this case) and the power of OData, annotations, UI5 and Fiori elements for the UI.

With the last tutorial in this group, “Build a Business App by Reusing a CDS Model“, you’ll get a taste for the powerful reuse mechanics in the Application Programming Model, too.

You can also find the tutorials tagged with “SAP Cloud Application Programming Model” via this URL:

and you’ll be presented with a filtered list of tutorials like this:


Blog posts on the SAP Community

Here on the SAP Community you’ll find an array of posts talking directly or indirectly about the Application Programming Model. You can find the complete set using the tag:

SAP Cloud Application Programming Model

The posts so far are from folks like Daniel HutzelOliver WelzelJoerg Mann,  Michal KeidarCecilia HuergoDaniel FoehrYuval Anafi and me.

Daniel’s post “Introducing the new Application Programming Model” is a great place to start.


SAP TechEd sessions

The Application Programming Model was a popular topic in the sessions and in the corridors at SAP TechEd Las Vegas last week. There’s an array of sessions at SAP TechEd Barcelona later this month – check out the Agenda Builder to find out more.

Here are a couple of them:

  • CNA376 “Build Applications with the Programming Model on SAP Cloud Platform” – hands-on workshop (2hr)
  • CNA652 “Less Than One Hour to a SaaS Application with SAP Cloud Platform” –  CodeJam (mini-edition) (1hr)

The exercise material “spaceflight” for CNA376 is on GitHub for both Node and Java.



If you have a look at the exercises for CNA376 you’ll see they’re for a Node.js (JavaScript) runtime. As well as tools and features for the Application Programming Model being available in the SAP Web IDE Full-Stack, there’s also an extension for Visual Studio Code.

Read more about this extension in Joerg’s post “Introducing Core Data & Services (CDS) for VS Code” and grab it from the cloud section of the SAP Development Tools site.


Other media

On SAP’s unofficial community podcast, Coffee Corner Radio, there’s a 16 minute pod bite (#5) where I interview Rui Nogueira on the Application Programming Model.

On SAP CodeTalk, there’s a short interview with Ian Thain and me talking about the Application Programming Model at a high level:

That’s what comes to mind to me this evening – if there’s anything else (please let me know) I’ll add it to this post as and when it appears or occurs to me.

Happy hacking!



11 Oct 2018 – added link to SAP CodeTalk interview; added link to Java exercise materials for CNA376

21 Dec 2018 – replaced reference to the original user tag applicationprogrammingmodel with the new tag SAP Cloud Application Programming Model (hat tip to Mike Doyle for the reminder)

03 Jan 2019 – added info on finding tutorials by tag via a URL (hat tip to André Pfohlmann). Also added info on how to see what’s new with the Application Programming Model, via an answer in the Community Q&A from Jijo Roy Jacob 

You must be Logged on to comment or reply to a post.
  • Thanks DJ. I started to investigate this topic a while ago thanks to one of your posts and it’s good to have all the resources in one place.

    I’m also working with XSA and I really hope that SAP will consolidate everything because it gets a bit frustrating to have different tools and techniques for on prem and cloud. Web IDE for SAP HANA, Web IDE Full stack, APM in the cloud but not on prem etc.


    • Hey Pierre, thanks, you’re welcome. I’m glad you’re investigating, I am too, it’s a fascinating area and one that I see as very important.

      I think there are things that can be consolidated, but at the same time, we have different requirements too that have to be catered for. With APM – you may be happy to find that you can do stuff purely on prem too, certainly from a development perspective (and then deploy to CF etc later). For example, I’ve used Node.js and sqlite as a persistence layer locally on my machine here.

      That said, it’s early days and I’m looking forward to see how APM pans out even more. Cheers!

    • The application programming model is also planned to come to HANA/XSA on premise in a revision to the Web IDE for SAP HANA 2.0 SPS 03 that is due to ship in about 2-3 weeks. So very soon you should have this same functionality there as well. We are already using this version internally and did some demos at TechEd Las Vegas.

  • Thank you for another great blog!   The possibles are endless, aren’t they?  I just downloaded from Github and had to install a lot of different programming languages.   Nope not using that one for awhile but nice to look at the code.

  • Hi DJ,

    i don’t really have a comment about the actual content, which i’m sure is as excellent as any other that you have authored for the SAP Community, but more about your blogging “best practice”.

    i really appreciate listing the actual update at the bottom of the blog page. very often, i see an update to content created by others, but there is no way for me to figure out what the update is about and what has changed. in your case, it’s done perfectly and is showing that you appreciate both the social technology as well as the audience that is the intended consumer of that social content.

    cheers, gm

    • Hey thanks Henrik – the basic answer is yes, it’s possible, in the Java implementation, at least (and they’re working on the Node.js flavour too). I’ve reached out to a colleague for an example of what to do, and will post here when I receive the info. HTH!

  • Hi,


    I tried cds for nodejs and created a small service in VS Code. When I start the service local with “cds serve all”  the service is only available as Odatav4. The Metadata shows

    <edmx:Edmx xmlns:edmx="" Version="4.0">

    I would like to use Fiori Elements as Frontend, but Fiori Elements seems only supporting Odata V2. Is there a way to switch to Odatav2 in the service?

    I’ve already tried this in package.json, without success:

        "odata": {
          "version": "v2"


    best regards,



    • Thanks Mike, I’d changed all the applicationprogrammingmodel tags for my and my colleagues’ posts here (I’d been semi-involved in the formation of the new tag internally) but forgot to make the change in the content here. Cheers for the reminder – now done!

  • DJ,


    thanks for for the blog

    1) Where is the reference for building the CDS data model file, and for building the OData service (cat-service)?

    2) if I want to make certain fields of an entity read only, do you suggest doing that in the service or in the UI? Either way, how do I do that?


    • Hey Daniel, I didn’t write an entire blog, just one post – but thanks 😉

      To your questions, briefly (tho I would recommend any Q&A be made in

      1. Follow the documentation link in the first part of this post, and have a look specifically at the “Core Data and Services (CDS) Language Reference” section
      2. You can use annotations for this (there’s a subsection in the language reference mentioned above) – have a look specifically at the @readonly annotation. Depending on requirement, it can be done at either level.


  • Hi DJ,


    I was following the tutorial:

    two issues:

    1. Even though I ran
      npm i -g @sap/cds​

      I see in my Visual Code editor it’s not recognizing:

      using { Country, managed } from ‘@sap/cds/common’;
    2. Even though I commented the dependencies and trying to run the cds by cds run, I am getting the following error:


    C:\cloudsdk\cap-node\my-bookshop>cds run

    { Error: Cannot find module ‘express’
    at Function.Module._resolveFilename (module.js:536:15)
    at Function.Module._load (module.js:466:25)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at module.exports (C:\Users\i304296\AppData\Roaming\npm\node_modules\@sap\cds\server.js:6:21)
    at serve (C:\Users\i304296\AppData\Roaming\npm\node_modules\@sap\cds\bin\serve.js:39:46)
    at run (C:\Users\i304296\AppData\Roaming\npm\node_modules\@sap\cds\bin\run.js:31:44)
    at main (C:\Users\i304296\AppData\Roaming\npm\node_modules\@sap\cds\bin\cds.js:66:18)
    at Object.<anonymous> (C:\Users\i304296\AppData\Roaming\npm\node_modules\@sap\cds\bin\cds.js:27:3)
    at Module._compile (module.js:635:30) code: ‘MODULE_NOT_FOUND’ }


    Could you please give any clue what am I missing?