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

ABAP Tools - IDE Actions (Ausgabe)

44

Schauen wir uns an, welche Ausgabemöglichkeiten wir aktuell mit IDE Actions haben und was wir damit erreichen können. Dabei schauen wir uns jeweils unterschiedliche Beispiele für die Implementierung an.

Werbung


Dieses Mal implementieren wir die Ausgabe für unsere Aktion und schauen uns dabei die aktuellen Ausgabetypen an und wofür wir sie verwenden können.

 

Einleitung

Im letzten Artikel hatten wir die IDE Action angelegt und sind auf die verschiedenen Details der Ausführung eingegangen. Dabei erhielten wir am Ende einen Fehler, das wir noch keine Ausgabe definiert hatten. 

 

Ausgabe

Als Ausgabe stehen uns aktuell die Methoden Text, HTML und Code Change zur Verfügung, die wir uns in diesem Kapitel einmal genauer anschauen.

 

Rückgabe

Beim letzten Mal hatten wir die eigentliche Aktionsklasse ZCL_BS_DEMO_IDE_FIRST_ACTION angelegt und die RUN Methode nicht korrekt implementiert. Schauen wir uns die Methode an, dann sollten wir ein Objekt vom Interface IF_AIA_ACTION_RESULT erzeugen.

 

Dazu steht uns nun die Factory CL_AIA_RESULT_FACTORY zur Verfügung, die uns die passenden Objekte erstellen kann.

 

Text

Um einen String auszugeben, lassen wir uns von der Factory ein Text Popup erzeugen. Hier mappen wir zuerst noch nicht auf das Ziel-Interface, um an die Methode SET_CONTENT zu gelangen. Weitere Einstellungen oder Möglichkeiten haben wir aktuell nicht.

DATA(text) = cl_aia_result_factory=>create_text_popup_result( ).
text->set_content( `Here is my text output ...` ).

result = text.

 

Als Ergebnis wird dann der Text in einem einfachen Popup angezeigt. Die Größe des Fensters können wir nicht einstellen, sondern wird durch die letzten Aktionen festgelegt.

 

HTML

Wie der Name HTML schon andeutet, haben wir hier alle Möglichkeiten ein HTML Dokument zu erzeugen und auszugeben. Grundsätzlich ergeben sich damit einige Möglichkeiten hübsche Listen, Aufzählungen und andere Dinge zu erzeugen. In diesem Beispiel generieren wir eine einfache Überschrift und ein Paragraph für die Ausgabe. Zusätzlich setzen wir noch die Farbe der Überschrift auf Blau.

DATA(html_document) = `<html><head></head><body><h1 style="color:blue;">Big Heading</h1><p>A text in a paragraph</p><body></html>`.

DATA(html) = cl_aia_result_factory=>create_html_popup_result( ).
html->set_content( html_document ).

result = html.

 

Die Ausgabe des HTML Popups würde nun entsprechend so aussehen. Grundsätzlich hast du hier alle Freiheiten, von der Größe her musst du es wahrscheinlich ebenfalls anpassen, damit es zu deiner Ausgabe passt.

 

Daher würden wir dir ein kleines Framework empfehlen, dass sich um die Aufbereitung der Ausgabe nach HTML kümmert. Mit CSS kannst du einige Anpassungen erreichen, damit deine Ausgabe noch besser aussieht.

 

Code Change

Etwas komplexer wird es bei der Erzeugung eines Code Changes. Hier benötigen wir im Normalfall noch den eigentlich markierten Quellcode, wenn wir damit in die Analyse gehen wollen. Wollen wir dagegen einfach nur etwas neuen Quellcode einfügen, dann benötigen wir keinen Referenz-Code und können den neuen Code einfach übernehmen. Dafür bietet der Standard verschiedene Möglichkeiten von Code Changes an.

 

  • INSERT - Fügt den übergebenen Content in den Quellcode ein.
  • REMOVE - Entfernt den markierten Quellcode an der übergebenen Position
  • REPLACE - Ersetzt den markierten Quellcode 

 

In dem folgenden Beispiel führen wir ein Replacement des Quellcodes durch. Dazu holen wir uns die aktuelle Cursor-Position aus dem CONTEXT Objekt. Dieses müssen wir zuvor aber das Objekt auf das Interface IF_ADT_CONTEXT_SRC_BASED_OBJ casten, um an die Methode GET_POSITION zu kommen. Im Anschluss lassen wir uns über die Factory ein neues Source-Code-Change Objekt geben. Dann fügen wir ein Replacement hinzu und übergeben den neuen Quellcode.

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

DATA(change) = cl_aia_result_factory=>create_source_change_result( ).
change->add_code_replacement_delta( content            = `" [REPLACE]`
                                    selection_position = position ).

result = change.

 

Nun erhalten wir den Änderungs-Dialog und können die Code-Änderung prüfen. Sind wir damit zufrieden, dann können wir mit OK die Anpassung übernehmen. Damit steht uns eine einfache Möglichkeit zur Verfügung, auch direkte Änderungen im Quellcode durchzuführen und das Delta dem Ausführenden mitteilen.

 

Vollständiges Beispiel

Das vollständige Beispiel findest du bei uns im GitHub Repository. Alle Änderungen aus dem heutigen Artikel sind in diesem Commit zusammengefasst und sollten nachvollziehbar sein.

 

Fazit

Egal ob du nur eine Meldung ausgeben, dich mit HTML ausdrücken möchtest oder eine Änderung im Code darstellen möchtest. Über die aktuellen Ausgabemethoden ist das möglich. Allerdings würden wir uns hier auch Möglichkeiten für Objektbäume und fixierbare Fenster wünschen.


Enthaltene Themen:
ToolsADTEclipseIDE ActionAusgabe
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und 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.


ABAP Tools - IDE Actions (Anlage)

Kategorie - ABAP

Legen wir gemeinsam unsere erste IDE Action für die ABAP Development Tools an. Dabei führen wir dich Schritt für Schritt durch den Prozess und die Oberflächen.

24.10.2025

ABAP Tools - IDE Actions (Einführung)

Kategorie - ABAP

Schauen wir uns einmal die Grundlagen und eine kurze Einführung in das Thema IDE Actions an. Dabei werden wir uns die Verfügbarkeit und andere wichtige Details anschauen, was du als ABAP Entwickler wissen solltest.

21.10.2025

ABAP Tools - Arbeiten mit Eclipse (Breakpoint)

Kategorie - ABAP

Wie helfen dir Breakpoints in den ABAP Development Tools effizienter zu debuggen? Schauen wir uns die verschiedenen Arten an und was du damit erreichen kannst.

23.09.2025

Skript: ABAP Tools - Update your IDE [014]

Kategorie - YouTube

Wie kannst du deine aktuelle Version in den ABAP Development Tools einsehen, die Einstellungen für den Update finden und ein Update durchführen? In diesem Video gehen wir auf die verschiedenen Details ein.

24.08.2025

ABAP Tools - Arbeiten mit Eclipse (Tabellenvergleich)

Kategorie - ABAP

Interne Tabellen mit dem Debugger in den ABAP Development Tools vergleichen? Mit dem neusten Feature kein Problem mehr und für viele Situationen nutzbar.

19.08.2025