BTP - Custom Data Browser
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.
Inhaltsverzeichnis
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