Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
dvankempen
Product and Topic Expert
Product and Topic Expert








As Jim said: people are strange, when you're a stranger.

When you just arrived in SAP (HANA) development territory for the first time, the different programming models, development platform environments, hybrid and multi-cloud concepts can be disorientating when encountering opinionated native inhabitants speaking about "semantically rich data models" and using CDS, MTA, and HDI as shorthand .

Even for returning visitors, at home in some areas, the roadmap of other parts may not always be clear. Did we just miss an important road sign?

What follows below is a field guide where we explain the lay of the land with the aim of helping you avoid taking a wrong turn.

Opinions are my own.

Questions? Please post as comment.

Useful? Give us a like and share on social media.

Thanks!



Terminology


Before we start our trip, let's first briefly pause at some of the terminology used in this wonderful part of the world.

Paradigms, Design Patterns, Frameworks, and Libraries


Hairsplitting aside, a programming model can be understood as a set of concepts and an approach to building software, a style or, according to some, a paradigm: how to best solve a particular problem. Object Oriented Programming (OOP) is a well-known example of a programming paradigm but there are many others. Some paradigm may suit a programming language better than others, and some may even be made-to-measure. OOP suites many languages (ABAP included).

Related to programming models are design patterns of which the Model-View-Controller (MVC) may be the most familiar. Design patterns are not specific to any programming language. SAPUI5 implements MVC, for example.


SAPUI5 is a JavaScript application framework, related but not the same as SAP Fiori, which is a design language.

Then we also have programming principles, like inversion of control also known as the Hollywood principle, "Don't call us, we'll call you". This principle applies when working with frameworks that take care of low-level functionality allowing you to focus on the business logic that makes your application stand out. This contrasts with libraries where you pick and choose the code you need. Frameworks tend to be opinionated. Like your tour guide.


Road Map


For official guidance, make sure to check the official roadmap!

Products and Services


Most readers will be familiar with the Red Dot Award-winning SAP Road Map Explorer for products and services like

Focus Topics


However, did you know that we can also consult the roadmap for focus topics and business areas?



SAP Cloud Application Programming Model 


A Framework and a Golden Path








The SAP Cloud Application Programming Model is a framework of languages, libraries, and tools for building enterprise-grade services and applications. It guides developers along a ‘golden path’ of proven best practices and a great wealth of out-of-the-box solutions to recurring tasks.

As documented

Science fiction and tarot card readers amongst us may have other associations, but in software development the notion of a golden path references a trajectory where everything goes as planned.

CAP was introduced at SAPPHIRENOW 2018, and started off as the Application Programming Model for SAP Cloud Platform-Cloud Foundry applications, leveraging both open-source and SAP proprietary technologies, in particular CDS, to simplify building applications for the SAP Cloud Platform.

CDS, or Core Data Services, is a "core' component of CAP. We will make a full stop to appreciate the CDS view in a minute.


You do not need a special tool to work with CAP - any Swiss Army Knife will do - but SAP did create one specifically for the programming model: the SAP Business Application Studio.


Source: Wired (thanks to vitaliy.rudnytskiy, Understanding Containers)

Training and Documentation


CAP is extensively documented and there is a wide variety of tutorials and trainings.

Development Tools


SAP Business Application Studio (BAS) is a perfect travel companion when looking for a development tool to work with CAP. The tool was announced at SAP TechEd last year and made available earlier this year (2020).

As documented,






SAP Business Application Studio (the next generation of SAP Web IDE) is a powerful and modern development environment, tailored for efficient development of business applications for the Intelligent Enterprise. Available as a cloud service, it provides developers a desktop-like experience similar to market leading IDEs, while accelerating time-to-market with high-productivity development tools such as wizards and templates, graphical editors, quick deployment, and more..

The term "next generation" or "evolution" is typically used to express that the technology or tool performs a similar function but in a different context. We will have an opportunity to spot SAP Web IDE in some other sections below.

BAS is based on open-source Eclipse Theia, in turn inspired by Microsoft Visual Studio Code (also used as Google's Cloud Shell Editor, for example). For most, the learning curve will be small and like for Eclipse IDEs in general, a highly transportable skill. Warmly recommended.

Training and Documentation


There is an abundance of documentation and tutorials about BAS.



Der Wanderer über dem Nebelmeer


CDS | One Concept, 1-2-3 Flavors


CAP uses Core Data Services (CDS), which rings a bell in the SAP developer community. But how does CAP CDS relate to the CDS used with ABAP and SAP HANA?

Core Data Services


The notion of CDS originates from SAP HANA native development where "native" means specific to the platform. CDS is SAP technology, proprietary in other words, not open-source.

You may recall from an earlier post that about two years after the release of the in-memory database, an application server runtime was added, called SAP HANA Extended Application Services, in short XS (2012).

We will make a full stop to appreciate the XS view in a minute.

CDS provided a "programming language" for this runtime, enabling the developer to focus on the data model and create design-time abstractions also known as artifacts instead of having to work with the language that creates the runtime database objects, SQL DDL with statements like CREATE TABLE, CREATE VIEW, etc.

In other words, CDS turned the developer into an architect instead of a construction worker.


As expressed at the time,






Core data services (CDS) is a new infrastructure for defining and consuming semantically rich data models in SAP HANA. Using a a data definition language (DDL), a query language (QL), and an expression language (EL), CDS is envisioned to encompass write operations, transaction semantics, constraints, and more.


For those that missed the Computer Science 101 briefing: semantics references meaning, syntax references the structure. The expressions, associations, and annotations used in CDS is what makes this data model "semantically rich".

For how this works, see the documentation

ABAP Core Data Services


Roughly around the same time, the CDS concept was also applied to ABAP development.






The ABAP Core Data Services (ABAP CDS) are the implementation of the general CDS concept for AS ABAP. ABAP CDS makes it possible to define semantic data models on the standard database of an AS ABAP and support ABAP RAP using behavior models.

To clarify the issue with two CDS implementations, see

For (much) more information, see

For information about the programming models specific to ABAP, like the ABAP Programming Model for SAP Fiori and the ABAP RESTful Programming Model, also known as RAP, see



Core Data Services | CAP


CDS as used in CAP is a brand new implementation of the same concept, this time specific to applications developed for cloud-based environments.






CDS is the backbone of the SAP Cloud Application Programming Model (CAP). It provides the means to declaratively capture service definitions and data models, queries, and expressions in plain (JavaScript) object notations. CDS features to parse from a variety of source languages and to compile them into various target languages.

For the ins and outs, see the documentation



XS | One Concept, Two Models


As mentioned, native development for the SAP HANA platform brought us CDS. It also inspired XS of which there are two models.

SAP HANA XS Classic Model


Initially, the open-source Mozilla SpiderMonkey JavaScript runtime was used as XS Engine (2011). For the artifacts and source code, a repository was added to the database. As development tool, we find again the open-source Eclipse IDE for which a new plugin was provided, most readers will be familiar with: SAP HANA studio, Development.

For multiple reasons, this approach had its limitations and after three years a new infrastructure was added, this time based on open-source Cloud Foundry and called XS Advanced, XSA in short (2015). The original implementation was referenced as the classic model (XSC) and eventually deprecated (2018). The architecture is no longer included with the latest incarnation of the in-memory platform: SAP HANA Cloud (2020).



SAP HANA XS Advanced Model


Cloud Foundry allows developers to build, deploy, and run applications or services and is available as a "generic" platform-as-a-service (PaaS) on the public cloud as VMware Tanzu (formerly Pivotal) or integrated as is the case with IBM Cloud and SAP Cloud Platform, for example. XSA provides these cloud platform qualities to an on-premises platform.






In simple terms, XS advanced is basically the Cloud Foundry open-source Platform-as-a-Service (PaaS) with a number of tweaks and extensions provided by SAP. These SAP enhancements include amongst other things:

  • an integration with the SAP HANA database,

  • OData support,

  • compatibility with XS classic model,

  • and some additional features designed to improve application security.


XS advanced also provides support for business applications that are composed of multiple micro-services, which are implemented as separate Cloud Foundry applications, which combined are also known as Multi-Target Applications (MTA).

For some more backgrounds on this story, see

For the documentation, see

We will make a full stop to appreciate the MTA view in a minute.

XS Advanced Programming Model


Almost two years after the introduction of Cloud Foundry for the SAP HANA platform, the runtime was also made available (GA) for the SAP Cloud Platform. As a result, you could now develop native SAP HANA applications locally on the SAP HANA platform or cloud-based on the SAP Cloud Platform. The XS Advanced programming model provides the guidelines to develop applications in this hybrid environment.






The XS advanced programming model fully embraces the Cloud Foundry model and leverages its concepts and technologies. In areas where Cloud Foundry as an intentionally generic platform for distributed Web applications does not address relevant topics or offers a choice of solutions, the XS advanced programming model provides guidance that is in line with the general Cloud programming model.

For the documentation, see


Comparing XS Classic to XS Advanced


Although XS Classic and XS Advanced share the same function as runtime for native SAP HANA application development, the architectures have very little in common. The security concept is different and XSA also introduces a micro-services architecture with container isolation.

We will make a full stop to appreciate the HDI view in a minute.






In the classic model, design-time artifacts are stored in the SAP HANA Repository, whereas the code base for an XS advanced application is stored in an external Git repository. Applications are deployed (“pushed”) from the Git repository to the target platform and run in separate processes that can be scaled independently. This means the entire development paradigm changes from an ABAP-like “share-everything” approach to a more Java-like “share-nothing” approach..



For the documentation and information about migrating from XS Classic to XS Advanced, see




XSA and Cloud Foundry | One Technology, Two Names


Comparing XS Advanced to Cloud Foundry


As indicated, the technology used for SAP HANA XS Advanced (XSA) and the SAP Cloud Platform Cloud Foundry environment is very similar and includes components like platform router, controller, XSUAA for security, a "polyglot" container runtime, and blobstore to store the staged images. The command line interface (CLI) used to deploy applications and manage services is also (nearly) identical: xs and cf.



What's different is for example the number of backing services available on the SAP HANA platform is restricted when compared to the SAP Cloud Platform Cloud Foundry environment. There is also not much choice in type of database. 😉

For the documentation, see

XSUAA


Migrating native SAP HANA applications from the SAP HANA platform on-premises to the SAP Cloud Platform Cloud Foundry environment for this reason typically requires little effort, in particular when compared to a migration from XS Classic to XS Advanced.

Authentication and authorization is implemented in Cloud Foundry with UAA (User Account and Authentication). SAP extended this component for the SAP HANA platform as XSUAA, also used for the Cloud Foundry environment.

If you wish to "diff" the code, see

We also find the 'xs' suffix applied to two Node.js utility packages for working with XSUAA.

  • @sap/xssec - XS Advanced Container Security API

  • @sap/xsenv - Utility for SAP Cloud Platform Cloud Foundry environment, SAP XS advanced model and Kubernetes (K8S)


Judging by the documentation of the @sap/approuter Node.js package, the branding was not quite clear inside SAP either: "designed to work in XS Advanced - Cloud Foundry and XS OnPremise Runtime." (sic).

The "default" home page of the XSUAA service on the SAP Cloud Platform Cloud Foundry environment also proudly displays its heritage.


Small print: xs2security.accounts400.ondemand.com references to the internal code name XS2 for XS Advanced.

For the backgrounds about Cloud Foundry and ondemand.com, see

For a more detailed discussion about implementing security for Cloud Foundry (and XSA), see


MTA | Multi-Target Applications


Lifecycle Management for Micro-Services


XSA and Cloud Foundry introduced the micro-services architecture which in turn introduced lifecycle and orchestration challenges for enterprise-grade business application development. To address these issues, SAP conceived the MTA concept (2016).








Business applications are typically composed of several parts that are built with different technology for different run-time environments. For example, an application could contain static Web content that runs in the browser, server-side Java code that runs in a Java Enterprise server, OData service definitions for an OData provisioning run time, and also database content such as tables, views, and procedures. Since all these parts belong to the same business application, they are developed, delivered, configured, and deployed together. Often the various different parts have dependencies and, as a result, need to be deployed to the specified target in a given order.

For some more background, see

For the MTA specification, see

For the documentation, see

Development Tools


XS Classic: SAP HANA Studio | SAP HANA Web-based Development Workbench


The tool of choice to develop native SAP HANA XS classic model applications is the already mentioned collection of plugins for the Eclipse IDE called SAP HANA studio. As browser-based IDE, SAP HANA Web-based Development Workbench can be used.

XS Advanced: SAP Web IDE Full-Stack | SAP Web IDE for SAP HANA


To develop applications for the XS Advanced programming model, we have the SAP Web IDE which either comes as a subscription for the SAP Cloud Platform, SAP Web IDE Full-Stack, or as an "for SAP HANA" edition for local development and deployment.

The SAP Web IDE Full-Stack, however, supports a much broader range of development scenarios.






With SAP Web IDE Full-Stack, you can easily develop, test, build, deploy, and extend role-based, consumer-grade apps for business users. Create applications rapidly and deliver an outstanding user experience. You can extend or build SAP Fiori apps, create SaaS solutions, extend SAP S/4HANA cloud services, develop hybrid mobile apps, and build IoT apps for SAP Leonardo, using the UI development toolkit for HTML5, the SAP HANA toolset, and Java programming language and technologies.



To get started, there are templates for SAP HANA database development and for Multi-Target Applications, amongst others.




HDI | HANA Deployment Infrastructure


XS Classic model included the proprietary SAP HANA Repository to store development artifacts into packages bundled as Delivery Units (DU) and with a mechanism to activate these design-time constructs into runtime database objects. Early visitors may recall the technical user _SYS_REPO as repository owner. Application Lifecycle Management (ALM) was specific to the environment although it morphed into the ABAP world with HTC (HANA Transport Container) and HTA (HANA Transport for ABAP).

XS Advanced model relies on an external code repository.

To turn development artifacts into database objects we use HDI.






The SAP HANA Deployment Infrastructure, or HDI for short, provides a service that enables you to deploy database development artifacts to so-called containers. This service includes a family of consistent design-time artifacts for all key SAP HANA platform database features which describe the target (run-time) state of SAP HANA database artifacts, for example: tables, views, or procedures. These artifacts are modeled, staged (uploaded), built, and deployed into SAP HANA.

HDI was introduced together with XSA and both technologies are closely related. HDI however also comes with a SQL API (interface) for database-only (independent) use cases.


For the documentation, see


SAP Cloud Platform | One Platform, Four Environments 


The SAP Cloud Platform, as platform-as-a-service, was first made available in 2012 and has evolved considerably since.

We already described the story in some detail in a previous post. For a short history and some cultural backgrounds, see



Neo


The Neo environment correspond to the original runtime environment of the platform, mainly targeted at Java and JavaScript applications, in case of SAP HANA, those developed for the XS Classic model (XSJS).

Open-source backing services like MongoDB and Redis were retired in 2019. Earlier this year the trial environment for the Neo environment was also stopped. For an overview of the services still available and those retiring soon, select SAP as provider for the service catalog.

Cloud Foundry


As described, CF was first made available as development and runtime platform for the SAP HANA platform (2015) before being added as PaaS runtime, which also triggered the name change from SAP HANA Cloud Platform to SAP Cloud Platform (2017).

We can use the Cloud Foundry runtime to operate polyglot (many language) applications. For an overview of the service, visit

For the onboarding tutorial series, see

ABAP


The ABAP PaaS was added to the platform in 2018. The internal code name was Steampunk, a science fiction cyberpunk spin-off, mixing the old with the new, which like Neo has stuck.

Technically, the ABAP environment runs on Cloud Foundry but it is available as separate service to develop ABAP cloud apps and extensions, leveraging innovations of SAP HANA.

For the onboarding tutorial series, see

Kyma


Kyma, also available as open-source, is a platform for extending applications with serverless functions and microservices, based on the container orchestration technology Kubernetes. It was added to the platform in 2019, first as the extension factory, later extension suite.

The technology goes back to SAP (Hybris) as-a-service (YaaS). For the backgrounds, see



Multi-Cloud Foundation


After switching to cloud-first in 2018, SAP embarked on a multi-cloud foundation strategy in 2020 and encourages running cloud applications on the infrastructure of its partner cloud providers Microsoft Azure, Amazon Web Services, Google Cloud Platform, and Alibaba Cloud.

Apart from Neo, which is hosted exclusively from SAP data centers, all other environments support this multi-cloud approach.

For some more backgrounds, see

Development Tools


Multi-Cloud Foundation: Business Application Studio


The tool of choice to develop cloud-based applications in a multi-cloud environment is the SAP Business Application Studio. BAS includes built-in support for MTA. Tools for SAP HANA development is not yet available but coming up soon.



Neo: SAP Web IDE Full-Stack


SAP Web IDE Full-Stack is exclusive as subscription from the Neo environment, which limits its scope. A trial version is no longer available.

Cloud Foundry: SAP Web IDE for HANA Development


Specific to HANA development on the Cloud Foundry environment, a temporary solution is available until SAP HANA development tools have been added to the Business Application Studio.

SAP HANA Platform: SAP Web IDE for SAP HANA


For development on the SAP HANA platform (on-premises), it is business as usual with the SAP Web IDE for XS Advanced.

For XS classic, we can continue to use the equally classic tools:


Share and Connect


Questions? Please post as comment.

Useful? Give us a like and share on social media.

Thanks!

If you would like to receive updates, connect with me on

For the author page of SAP PRESS, visit







Over the years, for the SAP HANA Academy, SAP’s Partner Innovation Lab, and à titre personnel, I have written a little over 300 posts here for the SAP Community. Some articles only reached a few readers. Others attracted quite a few more.For your reading pleasure and convenience, here is a curated list of posts which somehow managed to pass the 10k-view mile stone and, as sign of current interest, still tickle the counters each month.


12 Comments