ABAP Tools - Arbeiten mit Eclipse (CDS Templates)
Wieder das falsche CDS Template bei der Erstellung ausgewählt? Hier ein kleiner Tipp um nachträglich noch den View in ABAP zu korrigieren.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns an, wie du nach einem fälschlichen Generieren eines Core Data Services, diesen noch retten kannst, ohne ihn vollständig aus dem System zu löschen. Der Tipp kommt von Thomas Fiedler (SAP).
Einleitung
Core Data Services gibt es in unterschiedlichen Ausprägungen, wie zum Beispiel: View, View Entity, Custom Entity, Abstract Entity, sowie mit und ohne Parametern. Möchtest du einen neuen Core Data Service erstellen, entscheidest du dich bereits bei der Anlage für einen Typen. Entsprechend startest du den Anlagewizard und stößt auf das Problem, welches wir im nächsten Abschnitt beschreiben.
Problem
Wir möchten im System gern eine abstrakte Entität anlegen, die wir dann als Struktur für eine Aktion in einem Service verwenden wollen. Dazu starten wir auf dem Paket mit einem Rechts-Klick und gehen im Kontextmenü über den Pfad "New -> Other ABAP Repository Object", um den Wizard zu starten.
Nach Auswahl von "Data Definition" gehen wir mit "Next" einen Schritt weiter und kommen zur Eingabe der Daten. Hier definieren wir den Namen (CamelCase) und die Beschreibung. Bei einer abstrakten Entität benötigen wir kein Referenzobjekt für die Anlage.
Im nächsten Schritt wählen wir den Transport und in den meisten Fällen bestätigen wir das Popup mit Finish, da nach Auswahl des Transports normalerweise kein Schritt mehr kommt.
Und hier liegt das eigentliche Problem, da wir nun ein Template bekommen haben, welches wir vielleicht gar nicht haben wollten. Unser Core Data Service sieht nun wie folgt aus, es wurde das Template für die View Entity verwendet.
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Abstract Entity Demo'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType:{
serviceQuality: #X,
sizeCategory: #S,
dataClass: #MIXED
}
define view entity ZBS_S_DMOAbstractEntity as select from data_source_name
{
}
Lösung
In vielen Fällen würden wir nun den View löschen und per Template neu anlegen, um die Syntax dafür zu bekommen. Im Grunde ist dies aber gar nicht nötig, da das Template nicht den Typen bestimmt. Der Typ ist immer noch "Data Definition". Der einfachste Weg ist daher das Löschen des Inhalts und Aufruf des Content Assist (STRG + Leertaste).
Nun kannst du das neue Template wählen und am Ende erhalten wir die gewünschte abstrakte Entität, an der wir weiter arbeiten können.
Hinweis: Der CamelCase Name wurde nicht sauber übernommen und auch nicht durch den Pretty Printer korrigiert. Am besten vor dem Ändern des Templates einmal den Namen kopieren.
Fazit
Mit diesem kleinen Tipp sollte das Löschen der Entität entfallen und du kannst entspannt das passende Template für dich wählen, auch wenn du mal wieder den Schritt im Wizard übersprungen hast. Ist uns zumindest in der Vergangenheit sehr oft passiert.