SAP Cloud Platform ABAP Environment is available for one year now, and users are running more and more productive apps in this environment. An important part of a business application is business configuration (aka customization). Business configuration in enterprise software refers to a predefined set of configuration options that affect its functionality and behavior.
In this blog post, I want to provide an introduction into this topic for SAP Cloud Platform ABAP Environment. I will set the focus on the lifecycle management aspects for business configuration. Due to the criticality of changes, customers maintain and verify configuration changes in test/quality environments first, before they transfer the verified content in a controlled way to the production environment(s).
Let us assume that you are creating Fiori applications in SAP Cloud Platform ABAP Environment that deal with configuration data that you want to transport from an ABAP Q(uality) instance to a P(roduction) instance. (I do not want to provide details on how you develop the app but let us assume that you create it with the Rest-full programming model for ABAP and Fiori Elements. I am referring to existing documentation for the Fiori programming model, for example the tutorial Create a Factory Calendar ).
Let us further assume that the following setup is appropriate for your business case:
- A development environment is used for development of your application
- A quality environment is used for quality assurance of the development and for creating business configuration (“clean content”)
- A production environment
In this setup, your development and configuration workflow would be as follows:
Figure: Landscape and workflow for business configuration creation, test and production
|–||Development, Quality||Administrator||Create BC software components (repositories) for development and for quality/production|
|–||Development, Quality||(User) Administrator||Configure the Business Configuration Expert role and assign it to your users|
|1||Development||Developer||Create Fiori applications (including Fiori apps for transactional/master data and for business configuration data), releases (=export) the development|
|2||Development||Developer||Create business configuration for testing purpose (locally)|
|3||Quality||Developer, Administrator, or automated by CI pipeline||Import the applications into the Q environment|
|4||Quality||Key user (Tester)||Test the applications|
|5||Quality||Key user (business process expert)||Create the business configuration (“clean content”) and release (export) it.|
|6||Production||Administrator||Import the Fiori applications into the P environment|
|7||Production||Administrator||Import the business configuration content into the P environment.|
The blog post Software Lifecycle Management for SAP Cloud Platform ABAP Environment provides a general introduction on the Git-based software lifecycle management for SAP Cloud Platform ABAP Environment and it provides further details on the landscape setup and on steps 1, 5, 8.
In the remaining part of the blog post, I will provide detailed information on the remaining steps.
1) Create BC software components (repositories)
As a preparation step, create a BC software component (repository) for development and for quality/production.
To create a software component (repository) and pull it into and ABAP instance, follow the tutorial Transport a Software Component Between Two ABAP Systems , but create a software component of type “Business Configuration” (instead of “Development”).
- Create a BC software component (and repository) for development in the development environment. This software component is used for the configuration content that is created by developers in the development environment for development testing purpose.
- Create a BC software component (and repository) for quality/production in the for quality/production environment. This software component is used for the configuration content that is created in the quality environment and transported to the production environment (“clean content”).
- You can pull exactly one software component of type “Business Configuration” into an ABAP environment.
- You cannot use the software component of type “Development” for BC content, you must use a software component of type “Business Configuration”
2) Configure the Business Configuration Expert role
As a second preparation step, configure the Business Configuration Expert role.
- Logon as administrator to your ABAP environment.
- Go to Fiori app Business Role Templates”, find the Configuration Expert – Business Process Configuration template and create a business role based on this template.
Important: In the Maintain Business Role UI, go to Maintain Restrictions and set setting “Write, Read, Value Help” to “Unrestricted” (the default is “No access”, when you create the role from the template.)
- Assign the role to developers (development environment) and key users (quality environment). With the authorizations contained in this business role, users can create customizing requests.
- The Configuration Expert – Business Process Configuration template also contains the Fiori app Business Configuration Change Log, which can be used for tracking changes to database tables (if change recording is switched on in the technical table settings).
3) Implement the BC transport API for your BC apps and create business configuration content
The SAP Cloud Platform ABAP Environment exposes an API that you can use for managing customizing requests and the content in customizing requests (cl_a4c_bc_factory).
You can create customizing requests in two ways:
- Create them directly in the Transport Organizer in the Eclipse-based ABAP development tools (ADT). Use this option, if you want to manage your customizing requests centrally.
- Create them implicitly using the method add_to_transport_request of class cl_a4c_bc_factory. If no request and/or task exists for a user, the API will create one, if the user has the authorization. If the user has no authorization and no request and/or task exists, the API will raise an exception. The required authorizations are contained the business role we described before.
You can add content to a customizing request using the method add_to_transport_request of class cl_a4c_bc_factory. Typically, you would call the API in the SAVE phase of your BC app. The tutorial Create a Factory Calendar provides a code example.
The API supports business configuration content for database tables (transport object “TABU”) with the following constraints
- Table must be custom (this means part of your software component, adding content for SAP tables is not allowed)
- Table must have delivery class (annotation @AbapCatalog.deliveryClass) in the table definition) “S” or “C”.
- The delivery class “C” is recommended for business configuration content, the table should be client-dependent (contains a field of data type client or mandt). Table content of type “C” is transported as part of a software component of type “Business Configuration”.
- The delivery class “S” is recommended for table content, which is part of the software (created by the developer in the development system and shipped as part of the software). Table content of type “S” is transported as part of a software component of type “Development”. The table should be client-independent.
- Table content of type “C” is transported as part of a software component of type “Business Configuration”.
SAP recommends implementing a logical deletion of business configuration. Business configuration entities usually get referenced in master data and transactional data. These might get inconsistent, if the referenced BC entry gets physically deleted. To implement a logical deletion, you should: include an element that indicates deletion in your configuration tables, add a where-clause in your CDS view that checks the deletion indicator, disable the delete operation and add a delete action that sets the deletion indicator.
Users can release customizing requests in the Transport Organizer in the Eclipse-based ABAP development tools (ADT). The required authorizations are contained the business role we described before. When releasing the request, the BC content is written to the Git repository and can be pulled into the target environment(s). As of today, there is no Fiori UI available for creating and releasing transport requests.
Figure: Transport Organizer in ABAP Development Tools (ADT). You can navigate to the content that is added to the customizing request by clicking a line of type Table Content.
4) Import the business configuration content
To import the business configuration content into your production environment use the Fiori app Manage Software Components and follow the tutorial Transport a Software Component Between Two ABAP Systems.