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

1683

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.



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 Friday and irregularly in all other areas. Take a look at our tools and apps, we provide them free of charge.


RAP - Tree View (Deletion behavior)

Category - ABAP

In this article, we'll look at the behavior of deleting nodes in the tree view using RAP. There are some interesting points to note.

04/15/2025

BTP - User creation via API

Category - ABAP

How can you actually create the Employee and Business Users via API in the ABAP Environment? In this article, we'll go into the details and implementation.

04/11/2025

RAP - Tree View

Category - ABAP

Want to easily display a hierarchy in RAP? Learn how to do it in ABAP Cloud in this article.

04/08/2025

RAP - Classic Pattern

Category - ABAP

In this article, we look at the Classic Pattern and discuss the use cases of its implementation in ABAP Cloud.

03/25/2025

BTP - Interface Performance

Category - ABAP

Which interface technology currently has the best performance when accessing On-Premise data in ABAP? Here we go into more detail.

03/07/2025