This is a test message to test the length of the message box.
Login
|
BTP Custom Data Browser
Created by Software-Heroes

BTP - Custom Data Browser

3033

What alternatives to SE16 do you have in the ABAP environment to give your department easy access to data? In this article, we'll go into the details.

Advertising


In this article we look at the Custom Data Browser, how you can easily configure it and how you can best use it.

 

Introduction

In the classic ABAP world there is SE16, SE16N or SE16H to generically evaluate tables in the system. In the Fiori world there is no longer any access to the SAP GUI and the generic representation of data is seen as more critical. So what options do we have to give our department access to the data without them having to install the ABAP Development Tools? That's what the Custom Data Browser application is for.

 

Preparation

In the first step, we need some objects to be able to look at the topic of Custom Data Browser. In this chapter, you will get all the objects at your fingertips.

 

Table

To do this, we will create a team database. We need information about different teams, their roles in the team, their skills and some personal data. The table could look like this.

@EndUserText.label : 'Team Setup'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zbs_dmo_team {
  key client      : abap.clnt not null;
  key user_id     : abap.char(7) not null;
  player_name     : abap.char(120);
  player_email    : abap.string(0);
  player_position : abap.char(35);
  score           : abap.dec(10,2);
  team            : abap.char(60);
  team_leader     : abap.char(7);
}

 

Data

So that we have some data, we create an executable class and create data records there. Then execute the class so that the data is created in the table. We use the DELETE to clean up the table again and again when there are major changes to our data structure.

CLASS zcl_bs_demo_rap_fill_team DEFINITION
  PUBLIC FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.
ENDCLASS.


CLASS zcl_bs_demo_rap_fill_team IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    DATA team_members TYPE STANDARD TABLE OF zbs_dmo_team WITH EMPTY KEY.

    team_members = VALUE #( ( user_id         = 'P0020'
                              player_name     = 'Lester P. Riley'
                              player_email    = 'LesterPRiley@einrot.com'
                              player_position = 'Manager'
                              score           = '0.00'
                              team            = 'Proud SNC'
                              team_leader     = '' )
                            ( user_id         = 'P0021'
                              player_name     = 'Brayden Zichy-Woinarski'
                              player_email    = 'BraydenZichy-Woinarski@einrot.com'
                              player_position = 'Coach'
                              score           = '1465'
                              team            = 'Proud SNC'
                              team_leader     = 'P0020' )
                            ( user_id         = 'P0022'
                              player_name     = 'Yong Wang'
                              player_email    = 'YongWang@cuvox.de'
                              player_position = 'Mid-Lane'
                              score           = '2100'
                              team            = 'Proud SNC'
                              team_leader     = 'P0020' )
                            ( user_id         = 'P0023'
                              player_name     = 'Garland Robert'
                              player_email    = 'GarlandRobert@cuvox.de'
                              player_position = 'Bot-Lane'
                              score           = '2200'
                              team            = 'Proud SNC'
                              team_leader     = 'P0020' )
                            ( user_id         = 'P0024'
                              player_name     = 'Søren C. Nilsson'
                              player_email    = 'SorenCNilsson@einrot.com'
                              player_position = 'Jungle'
                              score           = '1925'
                              team            = 'Proud SNC'
                              team_leader     = 'P0020' )
                            ( user_id         = 'P0025'
                              player_name     = 'Emily Correia Oliveira'
                              player_email    = 'EmilyCorreiaOliveira@cuvox.de'
                              player_position = 'Manager'
                              score           = '0.00'
                              team            = 'Wasteland'
                              team_leader     = '' )
                            ( user_id         = 'P0026'
                              player_name     = 'Erin Chandler'
                              player_email    = 'ErinChandler@einrot.com'
                              player_position = 'Coach'
                              score           = '2000'
                              team            = 'Wasteland'
                              team_leader     = 'P0025' )
                            ( user_id         = 'P0027'
                              player_name     = 'Panu Sibelius'
                              player_email    = 'PanuSibelius@cuvox.de'
                              player_position = 'Jungle'
                              score           = '2122'
                              team            = 'Wasteland'
                              team_leader     = 'P0025' )
                            ( user_id         = 'P0028'
                              player_name     = 'Katharina Fuerst'
                              player_email    = 'KatharinaFuerst@einrot.com'
                              player_position = 'Bot-Lane'
                              score           = '1980'
                              team            = 'Wasteland'
                              team_leader     = 'P0025' ) ).

    DELETE FROM zbs_dmo_team.
    INSERT zbs_dmo_team FROM TABLE @team_members.
    COMMIT WORK.
  ENDMETHOD.
ENDCLASS.

 

Core Data Service

Finally, we create a Core Data Service to create a reusable layer on top of the table, normalizing the field names to have a more readable data model later.

@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Team View'
define view entity ZBS_B_DMOTeamView
  as select from zbs_dmo_team
{
  key user_id         as UserIdentification,
      player_name     as PlayerFullName,
      player_email    as EMailAddress,
      player_position as PlayerPosition,
      score           as ELOScore,
      team            as TeamName,
      team_leader     as TeamLeader
}

 

Preview

Now that we have created the objects, we can look at the data preview of the Core Data Service. To do this, start the preview within the object with F8 or via the context menu. All data was imported cleanly.

 

Custom Data Browser Object

We now need a configuration for the Custom Data Browser so that we can access the contents of the Core Data Service. Via the context menu; of the object we are already suggested the correct object.

 

Now we can fill in the information about the object and create it. However, certain information is set: The name of the object must be the same as the object (table, Core Data Service) and the CDB object must be in the same package.

 

In principle, such objects are possible for tables and Core Data Services. Once generation is complete, we receive our object and the option to make further settings.

 

Basically, we can now configure the information in the fields. The following settings are available to us:

  • General Information - General information that is always displayed. These fields do not contain any critical information and can be used for searching/displaying. 
  • Sensitive Personal Information - Sensitive information that is not intended for evaluation is stored in this field. These can be shown or hidden later using authorizations.
  • Non Business Information - This information is not relevant for the evaluation and is always hidden.

 

Finally, we set up our data as follows; the email and personal score are sensitive data and we do not want the team leader in the evaluation.

 

Custom Data Browser

You can find the "Custom Data Browser" app (F5746) in the ABAP Environment in the "Data Analysis - Preview" business catalog (SAP_CORE_BC_CDB_PC). This should help you find the app in the system.

 

On the entry page we can choose between the tables and Core Data Services, and then we can find our Core Data Service using the search function. The description is taken from the CDB object if you want to change it later. Basically, you only see objects here for which you are authorized. More on the subject of permissions in the chapter below.

 

If we run our CDS view, we get the list with the information visible to us, filters to limit the data, an Excel export and other settings.

 

Hint: It was previously not possible to get the headings clean using UI annotations and labels. However, when real data elements are used, the descriptions are adopted.

 

Permissions

In the example above, we can also access the sensitive information; this is the case because we have a corresponding role to be able to see everything. In order to restrict the data and the selection of objects, we must create our own role. To do this, we go to the "Maintain Business Roles" app (F1492) and create a new role using the "Create" button. We then assign the Business Catalog to the role.

 

In the "General Role Details" tab you should then set "Read, Value Help" to Restricted. This makes it possible to limit the authorizations with the stored objects.

 

Use the "Maintain Restrictions" button in the upper area, we come to maintaining the authorizations and can set the demarcation more precisely.

  • Object Name - demarcation of the table or the Core Data Service
  • Object Fields - demarcation of the general and sensitive data

 

 

For "Object Fields" it is possible to delimit the visible data by making restrictions in the object. This means that the additional field settings of the CDB object take effect.

 

Conclusion

The Custom Data Browser provides SE16 functions to the user, but also adds the option of standard authorization checks in the CDS. Additionally, sensitive data and content can be protected.

 

Source:
SAP Help - Custom Data Browser


Included topics:
BTPABAP EnvironmentCustom Data BrowserCDB
Comments (0)



And further ...

Are you satisfied with the content of the article? We post new content in the ABAP area every Tuesday and Friday and irregularly in all other areas. Take a look at our tools and apps, we provide them free of charge.


RAP - Draft Query

Category - ABAP

In this article, we'll look at the Draft Query in RAP and how you can use it to control entries and their visibility. We'll also look at a practical example.

04/03/2026

RAP - Importance

Category - ABAP

Let's look at the importance of information within an SAP Fiori application and how we can use it to control visibility in the RAP application.

03/24/2026

RAP - Criticality

Category - ABAP

What do you actually need criticality for in your application, and what can you achieve with it? Let's look at different forms and scenarios.

03/21/2026

RAP - Icons

Category - ABAP

How do you find the right icons in the UI5 environment, and how can you integrate them into your Fiori Elements application using ABAP? Let's answer this question in this article.

03/13/2026

RAP - Grouping of Actions

Category - ABAP

How can you group your various actions in RAP under a single button, especially if the actions are quite similar? This article will look at the details of implementing this with ABAP.

03/10/2026