ABAP Cloud - Tabellen
Wie sieht es eigentlich mit dem Zugriff auf Tabellen in ABAP Cloud aus? In diesem Artikel beleuchten wir die Strategie beim Finden von Alternativen.
Inhaltsverzeichnis
In diesem Artikel beleuchten wir die Nutzung von Tabellen in unserer Entwicklung. Was bisher als Standard galt, ist nun nicht mehr der Fall und wir müssen uns nach Alternativen umschauen.
Einleitung
Als ABAP Entwickler kennst du wahrscheinlich fast alle Tabellen in deinem Modul auswendig und kannst jedes Feld seinem Sinn und Zweck zuordnen. Auch wenn du vielleicht kein Deutsch kannst, so hast du dich an die unaussprechlichen Namen gewöhnt und diese gelernt. Schauen wir uns die Finanzbuchhaltung an, gibt es für den Kopf die Tabelle BKPF und die Positionen die BSEG. Ein wichtiges Element ist der BUKRS (Buchungskreis), welches im Schlüssel vorkommt und in der Tabelle T001 seine Heimat hat.
Core Data Services
Mit ABAP Cloud können wir noch einmal mit dem Lernen beginnen, da wir hier einen Wechsel von den bekannten Tabellen auf die neuen Core Data Services machen. Neben dem Lernen als Nachteil, bringt es auch einige Vorteile mit sich. So bekommen die Core Data Services nun neue und sprechende Langnamen, sodass wir diese besser ihrem Zweck und Modul zuordnen können. So wird aus der Tabelle T001 der Core Data Service I_CompanyCode.
Das virtuelle Datenmodell ermöglicht es nun einen Layer zu schaffen, den man leicht wiederverwenden kann und behält sich gleichzeitig die Möglichkeit die Tabellen darunter flexibel zu erweitern, anzupassen oder sogar auszutauschen.
Suche
Die Suche nach dem richtigen Core Data Service kann recht einfach ausfallen oder sehr schwer werden. Aktuell gibt es nicht zu jeder alten Tabelle den passenden Core Data Service.
Nachfolger
Der einfachste Weg ist der Blick in die eigentliche Tabelle, schauen wir uns zum Beispiel einmal die Buchungskreise (T001) an, findest du dort im View "Properties" im Reiter "API State" die entsprechenden Informationen im C1-Contract.
Der "Release State" sagt uns, dass das Objekt nicht freigegeben wird, es aber einen Nachfolger (I_CompanyCode) gibt. Über "Use in Cloud Development" sehen wird auch, dass wir den CDS View in der ABAP Cloud Entwicklung verwenden können.
Cloudification Repository
Nicht immer sind die Informationen so leicht abzuleiten, wie über die Eigenschaften des Objekts. Ist dein S/4 HANA Release zu niedrig, dann ist der Core Data Services vielleicht noch nicht freigegeben oder die Information im System fehlt. Damit du den vielleicht passenden View findest, gibt es auch das Cloudification Repository. Hierbei handelt es sich um ein Repository, in dem du die aktuellen Freigaben findest.
Im Repository findest du auch den Cloudification Repository Viewer von SAP, wo du nach den Nachfolgern suchen kannst. Alternativ kannst du auch unsere Variante verwenden.
ABAP Test Cockpit
Das Cloudification Repository kann genutzt werden, um in deinem ABAP Test Cockpit die Prüfung "Usage of Released APIs" zu aktivieren und die URL zu hinterlegen. Weitere Informationen dazu, findest du in diesem Artikel.
Feldmapping
Die letzte Herausforderung ist nun, das bekannte BUKRS auf das neue Feld zu mappen, denn neben den Langnamen für die Tabellen, sind nun auch neue und sprechende Langnamen in den Core Data Services vorhanden. Wie nun also an die entsprechenden Informationen kommen?
BSEG
Schauen wir als Beispiel einmal den CDS View "I_OperationalAcctgDocItem" an, der der Nachfolger der BSEG ist. Bis zur eigentlichen Tabelle sind es drei Ebenen. Steckt nun also unser BUKRS aus der Datenbank wirklich hinter dem Feld mit dem Namen CompanyCode? In diesem Beispiel ist es sehr wahrscheinlich, doch nicht immer ist ein Feld leicht zuordenbar.
CDS Feld Mapping
Wir möchten dir daher die neue Anwendung "CDS Feld Mapping" vorstellen. Hierbei handelt es sich um einen Auszug aus dem System, welcher die freigegebenen Core Data Services aus dem Cloudification Repository nimmt, die Hierarchie prüft und das aktuelle Core Data Service Feld auf das Datenbankfeld mappt. Dabei prüft die Auswertung jede Ebene und zeigt nur Felder an, die wirklich zugeordnet werden können. In dem Tool kannst du nach Entitäten und/oder Feldern suchen.
Felder, die nicht eindeutig zugeordnet werden können, werden leer gelassen und du findest nur das Feld aus dem Core Data Service. Das Mapping wird als JSON Datei im GitHub Repository abgelegt, dort findest du auch weiter Informationen zum Extraktor. Das Projekt würden wir noch einmal in einem zusätzlichen Artikel vorstellen.
Hinweis: Es handelt sich aktuell um eine Beta Version und der Extraktor kann noch kleinere Bugs haben, vor allem wenn es um CDS Funktionen in der Hierarchie geht. Dadurch bleiben mehr Felder leer, als eigentlich gemappt werden könnten.
Nutzung
In ABAP Cloud ist die Nutzung der Core Data Services für SAP Standard Tabellen Pflicht, da die klassischen Tabellen nicht mehr zum Lesen freigegeben werden. Aus den oben genannten Gründen werden deshalb Core Data Services verwendet. Ändernde Zugriffe auf Standardtabellen funktionieren nur noch über bereitgestellte RAP Objekte oder im Fall von TIER-2, über freigegebene BAPIs. Gleichzeitig werden mit CDS Views auch Berechtigungsprüfungen ausgeliefert, sodass du als Entwickler nicht mehr daran denken musst, eine Prüfung durchzuführen und der User nur das sieht, wofür er auch Berechtigungen hat.
Für kundeneigene Tabellen solltest du ebenfalls auf Core Data Services zurückgreifen, vor allem wenn du die Views per C1-Contract auch anderen Software Komponenten freigeben möchtest. Änderungen kannst du wie gewohnt direkt auf der Tabelle durchführen oder per RAP Objekt auf der Tabelle.
Fazit
Bis wir nun wieder alle Core Data Services und Felder gelernt haben, helfen uns erst einmal die verschiedenen Tools wie die ABAP Development Tools, das Cloudification Repository oder das CDS Feld Mapping die passenden Objekte zu finden.