ABAP Quick - Clean Core
In this article something about Clean Core, what does it mean for the developer, what are the requirements and what do you have to pay attention to.
Table of contents
The Clean Core topic is currently haunting the aisles of many companies, but what does it actually mean and how can you achieve it? In this article we want to answer the question of what exactly is behind it and how you can implement it in your own life today.
Explanation of terms
As the term suggests, we want to keep our core system clean, i.e. the system on which our main processes run. But what does clean mean? This is about the proportion of in-house development and the influence on the system. There is a wide range of enhancement techniques for an SAP system, such as: BADI, enhancement or user exit. In the end, however, there is also the possibility for modifications, that means we change the delivered standard.
And this is exactly where the problem lies, we change standard coding, copy functions or use non-approved APIs from SAP. This creates a certain amount of effort during the upgrade, since we have to compare the standard with our changes and then also have to completely test our own developments. Because non-released objects also mean that they can change or be deleted.
All of this delays a system upgrade and means a lot of effort for the customer. In the meantime, SAP also delivers new releases every 3 months to bring new features and eliminate errors.
Consequence
For you as a developer, this now means that you should only extend the system via approved extension points and use released objects. Especially with your own developments, you then have to think about the use and creation of new data elements, since most data elements are not released. Why shouldn't you use elements from SAP that aren't approved? Quite simply, since these can change as well as the standard. This doesn't happen that often with data elements, but each time requires a corresponding amount of testing.
Cloud Ready
We should also take a look at the second term, which is called Cloud Ready. This condition refers to an S/4 cloud system, which is provided as a SaaS solution and only offers a very spartan approach to expansion. The system is upgraded by SAP, so such a system is automatically Clean Core, but does not offer the full scope for expansion.
In the cloud-ready context, there are no more SAP GUIs and transactions, everything is based on Fiori as the front end, which the classic transactions work at most via GUI for HTML.
Extension
Everything that is an in-house development represents an extension of the system and is not clean core at first glance. SAP provides three different extension models that you can use:
- Keyuser Extensibility - Is it possible to make extensions to the system via Fiori Apps, e.g. to create Z-fields in the data model and bring them to the UI, to express BADIs or to create your own CDS views on released views and make them available as an API.
- Side-by-Side Extensibility - Creation of your own applications in the Z and Y area on your own system, mostly in the cloud (ABAP Environment aka Steampunk). It consumes core system APIs to get data and functionality.
- Embedded Steambunk - Also called developer extensibility, since the on-stack developer is given the opportunity to expand the system according to Clean Core Pattern.
The last two methods are based on the ABAP RESTful Programming Model (RAP for short), which is developed in ABAP and ultimately provides a Fiori application.
Released Objects
You can find released objects using the ABAP Development Tools using the search function or using your own tree that you can create in the Project Explorer. Using the Project Explorer it would look like this:
If you have an object and you are not sure if it is released, then you can call the "Properties" view and get the corresponding information about the API status of the object. Here is an example of a core data service for the business partner:
The C1 contract is important here, whether and where the object can be used. If such a contract exists, the object is released and can be used. The C0 Contract is a brand new status and means that the object is also approved for expansion.
Problems
The new world sounds logical in itself and seems to bring some advantages. But if you then look at the possibilities of customer-specific extensions, you will quickly realize that many features that you actually need are still missing. APIs for providing the data are not yet available for all modules, and Core Data Services are not yet available for all tables.
With Embedded Steampunk, there is already a first approach to building your own APIs and doing a lot directly in the system, but it will still take a few years before all customer requests are covered.
Conclusion
You should now have learned what Clean Core actually means and what it is needed for. SAP still has a long way to go to provide customers with everything they need to cleanly expand a system. But the foundations have been laid and you can use them today to steer your system in the right direction.