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

60

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 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.


RAP - Popup Defaultwerte

Kategorie - ABAP

Wie kannst du im Popup einer Aktion in RAP dem User Defaultwerte zur Verfügung stellen? In diesem Artikel erweitern wir unsere Anwendung.

21.01.2025

RAP - Popup Pflichtfelder

Kategorie - ABAP

Wie kannst du eigentlich Pflichtfelder für ein Popup in RAP definieren? In diesem Artikel werden wir etwas genauer auf die Details eingehen.

14.01.2025

RAP - Deep Table Action

Kategorie - ABAP

Ist die Übergabe von Tabellen an Aktionen in RAP aktuell möglich? Dieser Artikel soll einen besseren Einblick in das Thema gewähren.

07.01.2025

RAP - Side Effects

Kategorie - ABAP

Wie kannst du Teile der Fiori UI aktualisieren, ohne einen kompletten Refresh zu machen? Mit Side Effects ist das in ABAP und RAP ganz leicht möglich.

27.12.2024

RAP - Events

Kategorie - ABAP

Wie kannst du eigentlich Events in RAP erzeugen und mit ABAP verarbeiten? Hier erfährst du mehr zur eventgetriebenen Verarbeitung.

23.12.2024