
ABAP Cloud - Migration SM30
In diesem Tutorial schauen wir uns die Migration eines Pflegeviews nach ABAP Cloud an und wie du bestehende Objekte Schritt für Schritt migrieren kannst. Dabei schauen wir uns verschiedene Punkte der neuen Pflege an.
Inhaltsverzeichnis
In diesem Artikel migrieren wir einen bestehenden Pflegeview mit Daten nach ABAP Cloud und überführen diesen in die Business Configuration.
Einleitung
Wenn du bereits auf dem Weg Richtung ABAP Cloud bist, hast du aktuell wahrscheinlich auch Herausforderungen, wie du bestehende Tabellenpflegen und Customizing zusammenbringen kannst. Dabei stehen dem Anwender aktuell zwei unterschiedliche Ansätze und auch UIs zur Verfügung. Dabei kann die Pflege in der SAP GUI und gleichzeitig in SAP Fiori zur Herausforderung werden. Daher solltest du dir Gedanken machen, ob du nicht auch bestehende Tabellenpflegen mit migrierst.
Aktueller Stand
Aktuell haben wir im System eine kundeneigene Tabelle im Paket ZBS_SM30 die neben dem Buchungskreis als Schlüssel, noch ein Feld zur Konfiguration besitzt. Aktuell ist die Tabelle für Anwendungsdaten definiert und kann gepflegt werden.
@EndUserText.label : 'Configuration'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #ALLOWED
define table zbs_sm30_config {
key client : mandt not null;
key bukrs : bukrs not null;
setting : zbs_setting;
}
Darüber haben wir eine entsprechende Tabellenpflege generiert, die eine Berechtigungsgruppe hat und eine eigene Funktionsgruppe. In der Funktionsgruppe befinden sich alle generierten Artefakte, damit wir die Tabelle pflegen können.
In der Tabelle befinden sich bereits einige Daten, die wir zu Testzwecken gepflegt haben. Hierbei handelt es sich um den Standard zur Pflege von Tabelleninhalten in der SAP GUI.
Migration
Unser Ziel ist in diesem Fall die Migration des aktuellen Pflegeviews nach ABAP Cloud, ohne dabei die Daten zu löschen. Damit wollen wir von der SAP GUI auf die Business Configuration umstellen. Die Umstellung machen wir auf einem S/4HANA 2023 On-Prem System mit FPS3.
Vorbereitung
Damit wir mit dem Umzug starten können, benötigen wir eine neue oder bestehende Software Komponente im System. In diesem Szenario legen wir eine neue SWC an. Weitere Details zur Anlage findest du in diesem Artikel. Entsprechend legen wir eine Struktur für die Migration an. Eine eigene App legen wir jeweils pro Tabelle an, da die Business Configuration bzw. der komplette RAP Stack viele Objekte erzeugt und wir damit die Objekte voneinander trennen können.
Tabelle
Im nächsten Schritt ändern wir die Sprachversion der Tabelle auf ABAP Cloud und verschieben die Tabelle in die Software Komponente. Dazu öffnen wir die Tabelle und gehen in den "Properties" View in Eclipse. Dort findest du die Sprachversion im Tab "General" und kannst diese bearbeiten.
Nach der Aktivierung der Tabelle können wir diese dann in die Software Komponente verschieben. Dazu per Rechtsklick auf die Tabelle und die Option "Change Package Assignment ..." im Dropdown wählen. Als Zeil definieren wir unser neues Paket.
Der Umzug der Tabelle klappt, allerdings solltest du nun eine Fehlermeldung in der Tabelle haben, wenn du auf "Prüfen" gehst. Das Datenelement ZBS_SETTING sollte eigentlich auch umgezogen werden, solange bleibt die Tabelle aber aktiv. Um unsere Konsistenz wieder herzustellen, verschieben wir auch das Datenelement in das neue Paket zur Tabelle. Nicht vergessen das Objekt in der Sprachversion umzustellen. Nach dem Verschieben des Objekts sollte nach einer erneuten Prüfung der Fehler verschwunden sein.
Generierung
Im nächsten Schritt wollen wir den Generator auf der Tabelle starten, der uns die Business Configuration im System anlegt. Allerdings müssen wir noch die Auslieferungsklasse auf C wie Customizing stellen, sonst erhalten wir eine Fehlermeldung beim Start des Generators. Auf der Tabelle kannst du dann per Rechtsklick den Wizard über "Generate ABAP Repository Objects ..." starten und dort den Generator für "Maintenance Object" wählen.
Im nächsten Bild konfigurieren wir die verschiedenen Objekte und lassen uns den Preview anzeigen. Bist du so weit mit den Namen der Objekte zufrieden, startest du die Generierung im System. Die Erzeugung dauert einige Minuten und am Ende können wir in das neue Business Configuration Maintenance Object abspringen.
Service
Nach der Generierung muss auch der OData Service im System aktiviert werden. In dem von uns verwendeten Release funktioniert das mittlerweile auch über das ADT UI über den Button "Publish". Hast du ein älteres Release, dann kann es sein, dass du dies über die Transaktion /IWFND/V4_ADMIN machen musst.
Berechtigung
Um nun den Service in der Business Configuration zu sehen, brauchst du Berechtigungen auf den Service. Grundsätzlich ist die Business Configuration in der Tabelle SMBC_CONFIG vorhanden, allerdings wird der Eintrag in der App über das Berechtigungsobjekt S_START im Core Data Service herausgefiltert. Daher brauchst du die entsprechende Berechtigung, ansonsten bleibt die App leer und es werden keine Pflegedialoge angezeigt. Damit kannst du auch im Detail steuern, wer welchen Pflegedialog sieht.
Da in vielen Systemen die Berechtigungen eingeschränkt sind oder in der Vergangenheit vor allem S_TABU_DIS für die Pflegeberechtigungen vergeben wurden, kann es sein, dass wir aktuell keine Berechtigungen zur Bearbeitung haben. Das erkennst du recht einfach, wenn der "Bearbeiten" Button in der Anwendung deaktiviert ist.
Grundsätzlich benötigt der Bearbeiter später die Berechtigungen auf Basis von S_TABU_NAM, um mit der Tabelle und den Daten arbeiten zu können. Je nach internem Prozess kann das etwas dauern, bis diese Berechtigungen vorhanden sind. Daher können wir aktuell auch die Prüfung in der Implementierung anpassen. Dazu gehen wir in die Methode GET_GLOBAL_AUTHORIZATIONS und fügen nach dem Setzen der Variable IS_AUTHORIZED die folgende Zeile ein. Damit haben wir immer die Berechtigungen und die Bearbeitung wird aktiviert.
is_authorized = if_abap_behv=>auth-allowed.
Hinweis: Siehst du keine Daten im Core Data Service, dann solltest du auch das Access Control prüfen und dort die Prüfung deaktivieren. Grundsätzlich ist das eine kurze Lösung und es sollten immer saubere Berechtigungen vergeben werden.
Wertehilfe
Aktuell funktioniert die Wertehilfe nicht, obwohl im Datenelement BUKRS eine klassische Wertehilfe hinterlegt ist. Allerdings ist diese auch nur für die SAP GUI unterstützt. Daher müssen wir per Annotation eine eigene Suchhilfe im Consumption View definieren. Hier kannst du eigentlich immer nach "I_*VH" suchen und wirst die meisten Standard-Suchhilfen im System finden, die auch freigegeben sind.
@Consumption.valueHelpDefinition: [{ entity: { name: 'I_CompanyCodeVH', element: 'CompanyCode' } }]
key bukrs as Bukrs,
Transport
Je nach Generator und Release musst du im Nachgang noch den Transportmechanismus entfernen, wenn du diesen nicht benötigst. Wie du das in einem aktuellen Release machen kannst, findest du in diesem YouTube Video als Beispiel. Grundsätzlich solltest du die folgenden Objekte prüfen und bereinigen:
- Verhaltensdefinition - Hier sind Actions und Validierungen für den Transport definiert. Alles mit dem Namen "Transport" kann ohne große Probleme entfernt werden.
- Verhaltensimplementierung - Nach der Definition findest du einige Fehlermeldungen in der Implementierung. Hier kannst du alle Methoden mit Fehler und alle Informationen mit Transport entfernen.
- Metadata Extension - In den Metadaten der Root Entität kann noch die Facet und der Button für den Transport entfernt werden.
Hinweis: Denke bei der Anpassung des Verhaltens auch auf die Projektion.
Cleanup
Nachdem wir die Tabelle nun umgezogen haben, können wir die letzten Bestandteile der Tabellenpflege aufräumen. Dazu öffnen wir die Transaktion SE11 oder SE54 und können die generierten Objekte löschen.
Nach dem Klick auf "Löschen" bestätigen wir alle Objekte und entfernen die verschiedenen Bestandteile aus dem System, damit die Tabelle nur noch über die Fiori App gepflegt werden kann.
Ergebnis
Die Migration ist abgeschlossen und die Pflege kann nun über die Business Configuration durchgeführt werden. Über das BC Maintenance Object kannst du noch weitere Einstellungen in der Pflege machen.
Fazit
Die Migration von bestehenden Pflegeviews ist recht einfach und schnell gemacht. Vor allem die Umstellung der Berechtigungen wird hier etwas mehr Zeit kosten, erlaubt aber eine bessere Steuerung der zu pflegenden Objekte und Tabellen.











