Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
Showing results for 
Search instead for 
Did you mean: 

When I started to read about S/4HANA, my first Google was "How to develop on S/4HANA". I could not find any easy guide on how to develop it on the "new world", should I use ABAP, or should I use CDS View? Why should I use BTP if I can develop a system on SAP? 

Explaining in a easy way some technical points

What is SAP BTP?
It is a Platform as a Service. It means that you have several services that you can subscribe to paying a fee. For example, Microsoft has Office365, MS Teams, and XBOX as services that you can subscribe to consume. You just need to select the services that you want to use and subscribe to them.
SAP BTP is the same, but you will have some other types of services like a HANA Database, a development workspace, a service to schedule jobs, etc

SAP Discovery Center - Services (

Is my SAP S/4HANA part of SAP BTP?
No! The SAP S/4HANA or ECC is decoupled from SAP BTP. In addition, you can use SAP BTP services even without an SAP S/4HANA environment

SAP ABAP RAP dictates how you should develop CDS Views to be consumed by a Fiori App or an API.
One of the tools of ABAP RAP is the backend of a Fiori development.
For example, you create a Z table that needs to be filled by the user. To do that, you create some CDS Views to select data from the Z table and format the output as the user desires, for example, a report with a create button.
You create a Fiori app to display the data to your user, and when the user clicks on the create button, fills the form with the Z table fields, and then clicks on Save, you will receive the information filled in by the user and then you can validate, create a sequential number, save, etc

What is the SAP CAP?
SAP CAP stands for SAP Cloud Application Programming Model. It is the framework for developing applications on the SAP BTP. With SAP CAP you will be able to create tables using CDS, create HANA artifacts like a calculation view, expose the data from these artifacts using OData, and create the Fiori App that will consume them.
The backend can be developed using Node.JS, Java, and ABAP. So, as happens with SAP ABAP RAP, when the user clicks on Save to create a new entry on your HANA Cloud Database table, you can handle it on your Node.js/Java/ABAP, for example checking if required fields have been filled or a date is valid.

The Two approaches for new developments in SAP S/4HANA

Approach 1 - Keep the core clean - the recommended one

What does it mean?
Initially, even if the system did not involve any SAP Standard functionality, we would create the customer Z table, the module pool, and reports directly on the SAP. Why? The common response from CEOs whom I talked about was due to the complexity of maintaining different programming languages on different systems.

Now, SAP is actively suggesting that any new development that does not need the SAP runtime environment should be done on the SAP BTP (Side-by-Side extension), as SAP BTP is decoupled from SAP S/4HANA.
With this shift, we guarantee that we are not changing the SAP S/4HANA environment

Check the Extensibility options to choose the correct one

Practicing Clean Core Extensibility For SAP S/4HANA Cloud
Benefits of Keeping the Core Clean with SAP BTP - SAP Community

How to develop a Side-By-Side Extension

Naturally, it depends on the type of development that you are creating, but here are some guides

  • Do you need to create new database artifacts, like a new table (old Z tables)?
    If yes, so you will need to have a subscription for SAP HANA Cloud for it. Then, you can create your tables using CDS language 


  • Do you need to consume data from SAP S/4HANA?
    If yes, so you will need to have a subscription for SAP HANA Cloud for it. Then, you can create your tables using CDS language, like the example below
    Do you need to consume data from SAP S/4HANA?
    If yes, you can consume it by APIs or use the SAP S/4HANA Database as a remote source of your application.
    The latter option allows you to use SAP S/4HANA tables (please, use released views instead of the tables directly) in a calculation view (important to mention, Calculation Views are read-only!).
    Naturally, for anything transactional where you are doing Create/Update/Delete on your SAP S/4HANA instance, then absolutely you should only use the released OData services - get them from SAP Business Accelerator Hub
    For example, to create a Business Partner, you should call it on your SAP CAP service like the video below

  • How do I create a report on SAP BTP?
    If you need SAP S/4HANA Standard Tables (MARA, MARC, VBRK, AUFK, etc) data, you can use the SAP S/4HANA Database as a remote source or consume the API like mentioned above.
    Then, you can use a Calculation View to select the data and prepare the output logic.
    Finally, you can expose the Calculation View to be consumed with Fiori Elements App developed on SAP CAP or create a Freestyle Fiori app
  • Why do I need to know Node.js, Java, ABAP Cloud?
    The backend side of SAP CAP developments is done with Node.js, Java, or ABAP Cloud.
    The ABAP works pretty much like ABAP RAP (and the others follow the same logic), so again, when the user clicks on Save, it will stop in your SAP CAP Node.js/Java/ABAP RAP handler

    For ABAPers that are not familiar with CDS Views, it works like a user exit for a standard transaction.
    When the user clicks on Save inside of VA01, for example, you have some spots to validate the Sales Order, save the Sales Order data in a Z table, or even trigger a workflow.

    From my latest tests, you can create a fantastic Fiori List Report with CRUD with the ability to do validations, create records for associations, and etc



For a Side-By-Side extensibility example, please check my personal project

Approach 2 - The company does not have access to the SAP BTP

If your company does not have access to SAP BTP or just does not want to use it, you should consider the following

What is the problem of continuing to work with classic SAP ABAP? Why should I use CDS (Core Data Services)
SAP has created the Core Data Services (CDS View) language to work with SAP HANA. Instead of copying data from the database to the application server (like ABAP does), CDS does all the logic inside of the SAP HANA Database.
Naturally, it not only leverages SAP HANA performance but also prepares the output to be consumed by APIs and SAP Fiori apps
For the most part of SAP ALVs, it can be easily replaced by creating an SAP Fiori App using Fiori Elements annotations
If you need to perform transactional processing, use BOPF or RAP for it, considering the SAP Help below to use the correct technology according to your environment version

So, I have a performance issue, is that all?
No, you are also losing the users' performance. Please, check the blog How-To Estimate ROI of Your SAP UX Project | LinkedIn to have a better understanding.
In summary, Fiori provides a better user experience, breaking large transactions into smaller applications, and making your team work better (not only faster)
In addition, just compare a simple SAP Gui Transaction with a Fiori App, and you will find several improvements in what we can do about UX


How do I develop a Fiori app on SAP S/4HANA?

  • Create a CDS view select the data and add the logic.
    Please, follow the guidelines and read about basic view, composite view, and consumption to use it properly.
    DO NOT create just one CDS view with joins from different standard tables and expose it.

  • Create the Fiori App (Fiori Elements or Freestyle) using VSCode.

  • Deploy it using inside of your SAP S/4HANA using the report /UI5/UI5_REPOSITORY_LOAD.
    To create a Fiori Tile on SAP Fiori Launchpad, you will need to create a semantic object.
    There are some other steps if you are in an earlier SAP version

  • Create the Fiori Tile, Catalog, and group using the transaction /UI2/FLPD_CUST
1 Comment
Labels in this area