Application Development in the XSA Environment

SAP HANA Extended Application Services advanced model (XSA) adds an application platform to the SAP HANA in-memory database. It is the connecting piece between the SAP HANA platform and tools that leverage a SAP SQL Data Warehouse, such as SAP Web IDE, SAP PowerDesigner, SAP Smart Data Integration, and Git.
What Does XSA Enable Us to Do?
New Runtime Container and Controller
- Supports multiple languages and runtimes (build packs)
- Runtime is decoupled from underlying SAP HANA database
- Controller serves as a central management component; provides REST API
New Deployment Infrastructure and Repository Approach
Source code is stored in external Git repository (or local ZIP file in smaller scenarios for single-developer environments)
New Development Environment
Browser-based development environment with SAP Web IDE
XSA: Core Component for SQL Data Warehousing Development

SAP HANA XS Advanced is an integrated application stack that can be used to develop, deploy and run applications. Applications and database objects run in isolated containers and are delivered as services. XSA lets you scale applications independently from the database services with a new web application server. It supports your choice of programming languages - server-side JavaScript on Node.js, Java on TomEE, Python, Go, and so on. Core Data Services allow developers to create database objects and relationships without SQL. XSA accelerates application development with open source code management tools, such as Git/Gerrit, GitHub, Maven, and so on. It simplifies authentication and authorization with single sign-on support between application and database services. It also allows for scheduled execution of JavaScript and SQLScript programs.
Web IDE: Web-based Application for Streamlined Development

SAP Web IDE is a browser-based tool that simplifies development of native end-to-end applications (Node.js, Java, Python, HTML5, C++) and full-stack application lifecycle management (UI, business logic, database modeling). It runs on the XSA application server and can be used to develop, deploy, compile, expand, and deploy role-based, consumer-oriented applications.
SAP HANA Web IDE comes with:
- A project-based IDE (similar to SAP HANA Studio)
- A database explorer that can be used to run SQL statements and procedures or to debug code
- Full support for graphical data models
- Advanced Git capabilities: Version management, branch viewing, and so on. Better source code management integration into Web IDE.
- Services: Node.js, JAVA, UI5
- Containerized applications → MicroServices
Sophisticated Collaboration and Continuous Integration/Delivery

SAP Web IDE is an online development space where an application's development team can work together across time zones and geographic regions to develop project deliverables, using a shared repository. As a Git-enabled development environment, SAP Web IDE allows you to isolate developers and features in order to enable parallel development and testing. This makes projects more manageable, improves workflows, minimizes the overall risk of code failures, and allows for continuous integration and delivery.
SAP HANA EIM Provides a Simplified Data Integration Landscape

Data can be provisioned from almost any source using a wide range of external ETL tools, both SAP and non-SAP. SAP tools such as SAP Data Services are popular with customers who have complex data integration scenarios. However, SAP HANA includes its own powerful, built-in ETL capabilities. These capabilities are brought to you via SAP HANA Enterprise Information Management (EIM). EIM is a component of the SAP HANA platform and is installed once the basic platform has been setup.
SAP HANA EIM enhances, cleanses, and transforms data to make it more accurate and useful. SAP HANA EIM can connect with any source, provision and cleanse data, and load data into SAP HANA on-premise or in the cloud, and for supported systems, it can write back to the original source.
SAP HANA EIM provides the following capabilities:
- A simplified landscape - one environment in which to provision and consume data.
- Access to more data sources.
- In-memory performance, which means increased speed and decreased latency.
SAP HANA EIM consists of two main functionalities; Smart Data Integration and Smart Data Quality.
Core Components of SAP HANA EIM: SDI and SDQ

Smart Data Integration and Smart Data Quality build the data provisioning tier natively within SAP HANA. Smart Data Integration is a set of functionality provided by several components that you can use to retrieve data from an external system, transform it, and persist it in SAP HANA database tables. Smart Data Quality is a set of functionality provided by several components that you can use to cleanse and enrich data before it is persisted in the SAP HANA database. In combination, Smart Data Integration and Smart Data Quality support the following use cases:
- Federation: Sending a query to the SAP HANA database for data that exists in an external system.
- Replication: Copying tables and their contents from an external system into the SAP HANA database with minimal processing.
- Transformation, cleanse, and enrich: Extracting data from an external system, transforming, cleansing, enriching, and persisting the results in the SAP HANA database.
- Virtualization: Viewing data is more accurate after transforming the data.
SAP HANA EIM is integrated in XSA. ETL processes are always based on SDI and SDQ and can be modeled, tested, and executed using the SAP HANA Web IDE.
Modeling - Concepts, Methods, and Reference Architecture

Developers who work with the SAP PowerDesigner or the SAP Web IDE use Git as a versioning tool. Continuous Integration and Deployment is assured through a Jenkins server. Requirements management is done with Jira throughout the whole process.
DevOps is the Backbone for a Software-based DW Development

The figure shows the core principle behind the reference architecture discussed in this course: DevOps.
Version Control and Automated Tests with Git and CI/CD

For further automation of the agile development process of an SAP SQL Data Warehouse, all phases are supported by tools, or even completely automated by tools. In this exemplary phase of the development process all steps are done (semi-automatically). Thereby Git handles the different versions of definitions for the design-time objects created by several developers. Each developer works in their own sandbox, and constantly interacts with the Git repository. After finishing a definition task, the developed definitions (metadata) are combined with the metadata of other developers, using the Git branch system. For instant feedback to the developers, the CI/CD tool handles the interaction with XSA and the conversion of metadata to runtime objects in an automated process, started automatically by developer actions. After successfully converting the definitions of the developers into runtime objects in a test area, the development is tagged as successful or not.
In these automated tests (depending on the situation) either integration tests, plausibility checks (such as naming conventions and development guidelines), or runtime tests are executed. These automated tests ensure the quality of the development and enable the project owner to always deploy the last successfully tagged developments. Furthermore the developers receive instant and detailed feedback depending on their developments and possible errors (such as naming conventions, fault integration, empty tables, and fault flowgraphs).
Automated, Standardized Build Pipelines Through Jenkins

Broken builds are an issue in collaborative software development. The solution is an automated, standardized build and test procedure with an automatically running "central build". The build result is the only reference to decide whether the project is broken or clean from a build perspective. Jenkins is a popular CI/CD tool that provides this to enable continuous integration and continuous delivery (CI/CD) throughout the development process. In a nutshell, Jenkins triggers a build for every change made in the source code repository. Once the code is built it is deployed on the test server and/or the production server.