This is a test message to test the length of the message box.
Login
Tools My IDE Actions
Erstellt von Software-Heroes

ADT - MIA Select Converter

107

Für MIA gibt es nun eine neue Aktion in den ABAP Development Tools, womit du deine alten Open SQL Statements nach ABAP SQL und ABAP Cloud konvertieren kannst.

Werbung


In diesem Artikel schauen wir uns ein Update zum Select Converter an und gehen auf die neue Integration in MIA ein und wie die Umsetzung erfolgt ist.

 

Einleitung

Auf dem ABAP Environment sind seit dem Release 2502 die IDE Actions verfügbar und wir haben bereits in einem älteren Artikel die erste Aktion mit MIA zur Verfügung gestellt. Mit IDE Actions kannst du die ABAP Development Tools an bestimmten Punkten erweitern und somit auf Basis von ABAP Erweiterungen vornehmen. So kannst du bestimmte Funktionen automatisieren, Code ersetzen oder Informationen extrahieren.

 

ABAP Select Converter 

Vor einer Weile hatten wir den ABAP Select Converter zusammen mit dem CDS Extraktor vorgestellt. Dabei ging es vor allem um die Konvertierung von SELECT Statements in die neue Welt, weg von den klassischen Tabellen, hin zu Core Data Services. Der Extraktor stellt dabei über Git die Grundlage zur Verfügung und wie das Mapping auf Feldebene aussieht. Der Converter nimmt das SELECT Statement und zerlegt es in die Bestandteile, um dann Tabellen und Felder zu ersetzen.

 

Mittlerweile hat der Converter einen Overhaul bekommen und zerlegt nun das Statement komplett, um es als ABAP SQL in der neuen Syntax zu erzeugen. Damit wird nicht nur die Tabelle ausgetauscht, sondern auch das Statement einmal modernisiert.

 

Hinweis: Da es sich hierbei um eine komplexe Aktion handelt, kann es noch zu Fehlern oder Unschärfen kommen.

 

Action

Die neue IDE Action findest du jetzt im Open Source Projekt von MIA, dort ist die Aktion dokumentiert und kann zusammen mit den anderen Aktionen installiert werden.

 

Aufbau

Hierbei handelt es sich um eine recht einfache IDE Aktion die wir hier implementiert haben. Für die Aktion definieren wir eine Klasse und das sie nur in einer Klasse ausgeführt werden kann.

 

Dazu lesen wir in der Aktion den aktuellen Code des Objekts ein und ermitteln die Position der Selektion bzw. des Cursors. Weitere Informationen dazu findest du auch in der Doku unten.

DATA(resource) = CAST if_adt_context_src_based_obj( context->get_focused_resource( ) ).
DATA(sources) = resource->get_source_code( ).
DATA(position) = resource->get_position( ).

 

Im nächsten Schritt müssen wir das gesamte SELECT Statement aus dem Quellcode extrahieren. Dazu verwenden wir eine kleine Funktion, die den Anfang und das Ende sucht und den Select auf eine Zeile bringt.

DATA(extraction) = zcl_mia_strings=>extract_statement( statement = `SELECT`
                                                       sources   = sources
                                                       start     = position->pos-start ).

 

Hat die Ermittlung funktioniert, übergeben wir den SELECT an die API, diese ruft den Endpunkt des Select Converter auf, um das Statement zu konvertieren. Das Ergebnis erhalten wir dann in unserer Antwortstruktur zurück.

DATA(conversion) = zcl_mia_core_factory=>create_swh_tools( )->convert_select_statement(
    request = VALUE #( statement  = extraction-statement
                       abap_cloud = abap_true ) ).

 

Zum Abschluss übergeben wir das neue Statement an ein Source-Change-Result, dass uns dann den passenden Dialog anbietet, damit du als Entwickler das Ergebnis überprüfen kannst.

DATA(change_result) = cl_aia_result_factory=>create_source_change_result( ).
change_result->add_code_replacement_delta( content            = conversion-data-new_statement
                                           selection_position = position ).
result = change_result.

 

Ausführung

Wie führst du nun die eigentliche Aktion aus? Dazu musst du in deinem Quellcode das SELECT Statement markieren, welches du ersetzen möchtest. Dann startest du die IDE Action mit der Tastenkombination STRG + ALT + R und wählst die IDE Action "Migrate SELECT Statement".

 

Zum Abschluss wird die der Source Code Vergleich angezeigt und du kannst entscheiden, ob du die Änderungen übernehmen möchtest. Grundsätzlich funktioniert die Aktion auch in nicht aktivierten oder aktivierbaren Source Code. Damit kannst du auch einen SELECT umwandeln, der von On-Premise kommt und den du nur ins ABAP Environment kopiert hast.

 

GitHub

Das Open Source Projekt findest du auf GitHub und kannst es frei verwenden. Wenn du Fehler findest oder Verbesserungen vorzuschlagen hast, dann eröffne einfach einen Issue in GitHub.

 

Fazit

Wenn alle Bausteine vorhanden sind, ist eine Integration als IDE Action sehr einfach umzusetzen. Anhand der SAP Dokumentation, können auch schnell Ergebnisse erzielt werden.

 

Quelle:
SAP Help - Implementing a Code Inseration


Enthaltene Themen:
ToolsADTEclipseIDE ActionsMIA
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.


ADT - My IDE Actions

Kategorie - ABAP

Eigene Funktionen in den ABAP Development Tools schreiben? Kein Problem mehr mit den IDE Actions im Standard und ganz ohne Java.

18.02.2025

ABAP Tools - Arbeiten mit Eclipse (Ablage)

Kategorie - ABAP

Wie kommst du an gelöschten Quellcode in den ABAP Development Tools, obwohl du diesen niemals transportiert hast? Mehr zur Ablage und Arbeitsweise von ADT.

29.10.2024

ABAP Tools - Arbeiten mit Eclipse (Mehrere Debugging-Sessions)

Kategorie - ABAP

Wie werden eigentlich mehrere Debugging-Sessions in den ABAP Development Tools in Eclipse verwaltet? Mehr Informationen hier.

08.10.2024

ABAP Tools - Arbeiten mit Eclipse (SAP GUI Sprache)

Kategorie - ABAP

Du hast die falsche SAP GUI Sprache, wenn du in den ABAP Development Tools die GUI startest? Hier findest du die Lösung.

10.09.2024

ABAP Tools - Arbeiten mit Eclipse (CDS Templates)

Kategorie - ABAP

Wieder das falsche CDS Template bei der Erstellung ausgewählt? Hier ein kleiner Tipp um nachträglich noch den View in ABAP zu korrigieren.

02.07.2024