Skip to Content
Oct 01, 2019 at 02:34 AM

HANA XSA best practices, lessons learned and re-use resources with configurable http destination

386 Views Last edit Oct 01, 2019 at 02:54 AM 2 rev


HANA XSA Multi-Target Applications comprise several modules that contain content for a distinct run-time environment. It consists of several parts that are built with different technology for different run-time environments eg: SAPUI5 Web application, OData service and database content such as tables, views, and procedures. Since all these parts belong to the same business application, they share a common life cycle which means they are developed, delivered, configured, and deployed together under single project. I am looking for some feedback and inputs about how to better collaborate between multiple developers working on DATA , Services and UI modules, and how to reuse and consume resources already developed under a different project.

1. We are already using Git but each developer has its own work-space in WebIDE and when they deploy db modules( of another developers) they are deployed in their private container and all db tables again needs to be populated with sample data by each developer in their respective containers. ( There is an option to automate this process by original developer including hdbtabledata and csv files but it is too much of work when we are dealing with lot of tables.

2. Coming from S4/HANA and SAP Cloud platform where UI and APIs were built independently. Can these be separated under different projects in HANA XSA too ? If we could re-use OData Services ( eg: Search Helps/Value List) deployed under different project in Web module of another project, It would be similar to consuming any external APIs and UI developer can just focus on web app. I tried this ( below eg: for CUPS) and it works with hardcoded url. It doesn't work if ${url} parameter of user-provided-service is used. I am looking for a way to change the url parameter in each environment with some config instead of hard coding. I am not sure if .mtaext can be an option to override the url parameter in production ?

  - name: external_be
    type: org.cloudfoundry.user-provided-service
      service-name: external_be
      url: 'https://<hostname>:<port>'     # xsjs / xsodata from other project or any external API  

I tried to use Destinations Environment Variable. But the documentation says
"The destination service is only available in Cloud Foundry; it is not available for use in on-premise environments."

3. Another challenge I am facing is deploying multiple SAPUI5 XSA apps on single native HANA FIORI launchpad. No FLP admin tool is available in native HANA and It requires copying resources of all applications in launchpad project and redoing all configuration in its MTA.yaml of FLP project. In all the examples I found on hana-shine-xsa and xsa-opensap-hana7 everything is created under single project including FLP.

Folder structure of web module contains multiple SAPUI5 app under different folder structure. This folder structure is not same as generated by webide sapui5 module which suggests it needs to be manually adjusted to web/resources/ui1, web/resources/ui2 etc.

Looking forward to some inputs, feedback and lesson learned from live projects.