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

BTP - Custom Data Browser

751

Was hast du auf dem ABAP Environment für Alternativen für die SE16, um deinem Fachbereich einfach Zugriff auf Daten zu geben? In diesem Artikel gehen wir auf die Details ein.

Werbung


In diesem Artikel schauen wir uns den Custom Data Browser an, wie du ihn einfach konfigurieren kannst und ihn am besten nutzen kannst.

 

Einleitung

In der klassischen ABAP Welt gibt es die SE16, SE16N oder SE16H, um generisch Tabellen im System auszuwerten. In der Fiori Welt gibt es keinen Zugriff mehr auf die SAP GUI und die generische Darstellung von Daten wird eher als kritisch gesehen. Welche Möglichkeit haben wir also, unserem Fachbereich einen Zugriff auf die Daten zu geben, ohne dass dieser die ABAP Development Tools installieren muss? Dafür gibt es die Anwendung des Custom Data Browser.

 

Vorbereitung

Im ersten Schritt benötigen wir einige Objekte, um uns das Thema Custom Data Browser anschauen zu können. In diesem Kapitel bekommst du alle Objekte an die Hand

 

Tabelle

Dazu legen wir uns eine Teamdatenbank an. Wir benötigen Informationen über verschiedene Teams, deren Rollen im Team, ihre Skills und einige persönliche Daten. Die Tabelle könnte wie folgt aussehen.

@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);
}

 

Daten

Damit wir einige Daten haben, erzeugen wir eine ausführbare Klasse und erzeugen dort Datensätze. Im Anschluss die Klasse ausführen, damit die Daten in der Tabelle erzeugt werden. Den DELETE verwenden wir, um immer wieder die Tabelle zu bereinigen, wenn sich größere Änderungen an unserer Datenstruktur ergeben.

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

Zum Abschluss legen wir einen Core Data Service an, um eine wiederverwendbare Schicht über der Tabelle zu erzeugen, dabei normalisieren wir die Feldnamen, um später ein besser lesbares Datenmodell zu haben.

@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

Nachdem wir nun die Objekte erzeugt haben, können wir uns den Data Preview des Core Data Service anschauen. Dazu innerhalb des Objekts mi F8 den Preview starten oder über das Kontextmenü. Alle Datenwurden sauber übernommen.

 

Custom Data Browser Object

Entsprechend benötigen wir nun für den Custom Data Browser eine Konfiguration, damit wir auf die Inhalte des Core Data Service zugreifen können. Über das Kontextmenü des Objekts erhalten wir bereits das richtige Objekt vorgeschlagen.

 

Nun können wir die Informationen zum Objekt befüllen und es anlegen. Dabei sind aber gewisse Informationen gesetzt: Der Name des Objektes muss gleich sein, wie das Objekt (Tabelle, Core Data Service) und das CDB Objekt muss im gleichen Paket liegen.

 

Grundsätzlich sind solche Objekte für Tabellen und Core Data Services möglich. Ist die Generierung abgeschlossen, erhalten wir unser Objekt und die Möglichkeit für weiter Einstellungen.

 

Grundsätzlich können wir nun die Informationen in den Feldern konfigurieren, dabei stehen uns die folgenden Einstellungen zur Verfügung:

  • General Information - Allgemeine Information die immer angezeigt wird. Diese Felder enthalten keine kritischen Informationen und können für die Suche/Anzeige verwendet werden. 
  • Sensitive Personal Information - In diesem Feld werden sensible Informationen gespeichert, die nicht für die Auswertung gedacht sind. Diese können später über Berechtigungen ein- und ausgeblendet werden.
  • Non Business Information - Diese Informationen sind nicht relevant für die Auswertung und werden immer ausgeblendet.

 

Zum Abschluss stellen wir unsere Daten wie folgt ein, dabei sind die E-Mail und der persönliche Score sensitive Daten und den Team Leader wollen wir nicht in der Auswertung haben.

 

Custom Data Browser

Die App "Custom Data Browser" (F5746) findest du im ABAP Environment im Business Catalog "Data Analysis - Preview" (SAP_CORE_BC_CDB_PC). Damit solltest du die App im System finden.

 

Auf der Einstiegsseite können wir zwischen den Tabellen und Core Data Services wählen, über die Suche finden wir dann unseren Core Data Service. Die Beschreibung wird aus dem CDB Objekt gezogen, wenn du sie noch im Nachgang ändern möchtest. Grundsätzlich siehst du hier nur Objekte, für die du berechtigt bist. Mehr zum Thema Berechtigungen im Kapitel unten.

 

Führen wie unseren CDS View aus, erhalten wir die Liste mit den für uns sichtbaren Informationen, Filter zur Eingrenzung der Daten, einen Excel Export und weitere Einstellungen.

 

Hinweis: Über UI Annotationen und Labels war es bisher nicht möglich die Überschriften sauber zu bekommen. Mit der Verwendung von echten Datenelementen werden die Beschreibungen aber übernommen.

 

Berechtigungen

Im Beispiel oben können wir auch auf die sensitiven Informationen zugreifen, dies ist der Fall, da wir eine entsprechende Rolle haben, um alles sehen zu können. Um nun also die Daten und die Auswahl der Objekte einzuschränken, müssen wir eine eigene Rolle anlegen. Dazu gehen wir in die App "Maintain Business Roles" (F1492) und legen über den "Create" Button eine neue Rolle an. Der Rolle weisen wir dann den Business Catalog zu.

 

Im Reiter "General Role Details" solltest du dann "Read, Value Help" auf Restricted einstellen. Damit ist eine Abgrenzung der Berechtigungen mit den hinterlegten Objekten möglich.

 

Über den Button "Maintain Restrictions" im oberen Bereich, kommen wir zur Pflege der Berechtigungen und können die Abgrenzung genauer einstellen.

  • Object Name - Abgrenzung der Tabelle oder des Core Data Services
  • Object Fields - Abgrenzung der allgemeinen und sensitiven Daten

 

 

Für "Object Fields" steht die Möglichkeit zur Verfügung die sichtbaren Daten abzugrenzen, in dem Einschränkungen im Objekt vorgenommen werden. Damit greifen die zusätzlichen Feldeinstellungen des CDB Objekts.

 

Fazit

Der Custom Data Browser stellt SE16-Funktionen dem Anwender zur Verfügung, reichert aber zusätzlich noch die Möglichkeit um die Standard Berechtigungsprüfungen im CDS an. Zusätzlichen können sensitive Daten und Inhalte geschützt werden.

 

Quelle:
SAP Help - Custom Data Browser


Enthaltene Themen:
BTPABAP EnvironmentCustom Data BrowserCDB
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


BTP - Key User Extensibility (Rollenbasiert)

Kategorie - ABAP

In diesem Aritkel wollen wir uns anschauen, wie wir über die Key User Extensibility eine rollenbasierte Sicht in einer Standard App zur Verfügung stellen und was du dabei mit der Arbeit beachten solltest.

20.02.2026

RAP - Position der Buttons

Kategorie - ABAP

In diesem Artikel schauen wir uns die verschiedenen Positionen der Buttons an. Wo können wir in RAP die verschiedenen Actions platzieren und wie nutzen wir diese.

17.02.2026

RAP - Analytical Table

Kategorie - ABAP

Schauen wir uns einmal in RAP das letzten fehlende Puzzlestück zur Ablösung des ALVs an und wie wir die Analytical Table mit wenig Aufwand einrichten können.

13.02.2026

RAP - Mixed Content

Kategorie - ABAP

Wie bekommen wir eigentlich unterschiedlichen Content in die gleiche Spalte im List Report? Schauen wir uns dazu einmal ein praktisches Beispiel für unsere Sales App an.

10.02.2026

RAP - Augmentation

Kategorie - ABAP

In diesem Artikel stellen wir unser Datenmodell der RAP Anwendung um und ändern die Form wie wir mit den Texten umgehen. Dabei verwenden wir Augmentation, um unser Datenmodell trotzdem vollständig zu halten.

03.02.2026