BTP - Business Configuration (Creation)
This article is about creating maintenance views in the ABAP environment to maintain data and later transport the settings.
Table of contents
How do you actually maintain settings and tables if there is no SAP GUI and therefore no SM30? In this article we will go into the creation of care objects in more detail.
Introduction
The maintenance and distribution of customizing has always been a central part of the maintenance and expansion of the system in the SAP ecosystem. To ensure that only settings that have already been tested enter the production system, the settings are distributed via transports. To do this, we use maintenance views in the system so that we can change and record the data using transaction SM30 or our own transaction.
The ABAP Environment has the new Business Configuration (BC) functionality for this purpose. A RAP model is created on a table in order to make the data maintainable via a Fiori app. In this context, there are a number of new objects that we would like to discuss in more detail in this article.
Table
To do this, in the first step we define a table for which we want to create maintenance. We now create the new table on the package using the ABAP Development Tools. By right-clicking on the package and using “New -> Other Repository Object” we start the system and search for “Database table”.
Now we fill in the name and description and create the tables.
This table has its own key and some fields for maintenance.
@EndUserText.label : 'Business Configuration'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zbs_dmo_bc {
key client : abap.clnt not null;
key config_id : zbs_dmo_config_id not null;
description : abap.char(60);
is_used : abap_boolean;
is_mandatory : abap_boolean;
processes : abap.int1;
working_class : abap.char(32);
configdeprecationcode : config_deprecation_code;
last_changed_at : abp_lastchange_tstmpl;
local_last_changed_at : abp_locinst_lastchange_tstmpl;
}
The following requirements apply to the table before the generator can generate the corresponding objects:
- dataMaintenance - Attribute must be set to #ALLOWED so that data maintenance is possible.
- Fields - Key field must be equipped with data element and domain. Furthermore, some fields are required that serve as a technical basis (LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT).
Generation
Similar to the RAP Generator, we can now have all relevant objects generated. To do this, we select the "Generate ABAP Repository Objects..." option from the table's context menu.
In the next step, the wizard starts, where we also find the other generators for the RAP objects. Since we want to create the business configuration, we select the generator for "Maintenance Object" and confirm the selection.
The individual steps are now displayed, where you still have the opportunity to adjust the names and labels of the objects. In "Scenario Options" options can be selected, for example whether the copy action is offered or whether consistency checks are generated. Here the name of the abstract entity for copying is also changed.
In the "BC Maintenance" section, the name of the transport object and the maintenance object is specified; these can also be customized.
The "Data Model" section includes the main objects of the data model. The selected table is currently located in the lower section, but additional tables can be specified here. Further information about draft objects and texts is maintained here.
The “Behavior Implementations” section defines the classes in which the logic, such as determinations and validations, can later be developed.
In the last section “Business Service” the name of the service binding and the service definition are stored. These provide external access as an API.
Finally, we receive a list of the objects that should be generated and we can check the various objects before they are created in the system.
Maintenance Object
This object is a new object that controls the functions of the BC. Different things can be set and configured here.
The configuration options are quite extensive, so we will go through them in a later article. At the moment we don't have to make any settings here, the generator has already taken care of the most important points for us.
Transport Object
The Transport is a new object with the configuration from the transport settings. Actually the object is only visible via JSON view in Eclipse and only some settings can be changed.
Authorization
However, before we can work with the business configuration, we have to create the appropriate authorizations, otherwise the settings cannot be maintained.
IAM App
To do this, the first step is to create an IAM app and use the type with the ending MBC.
In the next step, we assign the created service from the business configuration in the “Service” tab. The service is always created as an OData v4 and UI service.
After the assignment, the service is visible in the tab.
In the next step we need the authorizations to access the data, which we assign in the “Authorizations” tab. We assign two entries. We need permissions to read the table's change documents as the change documents are also stored here. And display, as well as editing, for tables and the Core Data Service, which is released to the outside.
Business Catalog
In the next step we need a business catalog, the actual role, which we can then assign to the user. Accordingly, we give the catalog a name and a description.
In the “Apps” tab we assign the IAM app with the ending MBC. Don't forget to release the catalog in the system using "Publish Locally" so that you can then assign it to a role.
Usage
Can we now maintain the data in our table? To do this, we go to the “Custom Business Configurations” app (F4579), which we can find in the Business Catalog “Customizing - Business Configuration” (SAP_CA_BC_IC_LND_PC).
There we find all the BC objects for which we also have permissions. We can use the search to limit the objects to find our care/table.
When we select our object, we are taken to the table display and can start editing in the app using the “Edit” button. If the button is not clickable, it is very likely that the appropriate permissions are still missing.
The first checks are already active in the app and alert us to errors or missing information.
Conclusion
By creating the table and providing some information, we already have a simple maintenance interface for our table. This saves us from having to create our own UI via an app and provides additional convenient functions for working with the data.