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 (Seiteneffekt)

83

Wie können wir eigentlich automatisch Informationen auf dem UI aktualisieren, wenn etwas mit der IDE Action passiert? Schauen wir uns einmal die Side Effects im Detail an.

Werbung


In diesem Artikel schauen wir uns das Verhalten bei Seiteneffekten an und wie wir sie für unsere Eingabe effizienter nutzen können.

 

Einleitung

Beim letzten Mal hatten wir uns die Wertehilfen bei den IDE Actions angeschaut und wie wir damit aufeinander aufbauende Wertehilfen erstellen können. In diesem Artikel werden wir etwas mehr Fokus auf die Arbeit mit dem UI setzen. Dabei wollen wir automatisch auf Eingaben reagieren und Informationen auf dem Popup (Input) aktualisieren. Ähnlich wie bei Side Effects im ABAP RESTful Programming Model, können wir nach einer Aktion im UI den Effekt triggern und damit Informationen anpassen.

 

Vorbereitung

Passen wir daher im ersten Schritt unseren Input an und fügen neue Felder hinzu, die wir im Anschluss für unsere neuen Features verwenden wollen. Bei den beiden Feldern handelt es sich um ein Eingabefeld und ein Ausgabefeld für den späteren Seiteneffekt. Dazu erweitern wir die Struktur INPUT in der Input Klasse für das UI.

"! <p class="shorttext">SE: Input</p>
se_input      TYPE string,
"! <p class="shorttext">SE: Output</p>
se_output     TYPE string,

 

Dabei wollen wir auf zwei Dinge reagieren:

  • Änderung des Typen der Ausgabe
  • Eingabe von Text in das Inputfeld

 

Definition

Um nun den Seiteneffekt zu implementieren, müssen wir mehrere Schritte durchführen.

 

Konfiguration

Über die Konfiguration müssen wir dann den Seiteneffekt an dem Feld aktivieren. Dazu lassen wir uns das Element von der Konfiguration in der Methode CREATE_INPUT_CONFIG zurückgeben und rufen die Methode SET_SIDEEFFECT auf. Dort setzen wir das Kennzeichen, um den Effekt nach dem Update aufzurufen.

configuration->get_element( `output_format` )->set_sideeffect( after_update = abap_true ).
configuration->get_element( `se_input` )->set_sideeffect( after_update = abap_true ).    

 

Grundsätzlich können wir verschiedene Effekte aktivieren, wenn wir zum Beispiel eine Tabelle bearbeiten. Dann können wir auch auf das Anlegen und Löschen in einer Tabelle reagieren, wenn wir zum Beispiel die Daten aktualisieren müssen.

 

Klasse

Im nächsten Schritt müssen wir die eigentliche Klasse für den Seiteneffekt implementieren. Diese benötigt das Interface IF_SD_DETERMINATION, wo wir dann später die eigentliche Logik implementieren.

 

Handler

Haben wir die Klasse definiert, dann müssen wir sie im Framework registrieren. Dazu legen wir die Methode GET_SIDE_EFFECT_PROVIDER in der Input-Klasse an. Sollte die Methode noch nicht implementiert sein, dann findest du sie im Interface IF_AIA_SD_ACTION_INPUT. Wir erzeugen die Instanz und übergeben sie an den Parameter DETERMINATION des Providers.

METHOD if_aia_sd_action_input~get_side_effect_provider.
  RETURN cl_sd_sideeffect_provider=>create( determination = NEW zcl_bs_demo_ide_first_side( ) ).
ENDMETHOD.

 

Implementierung

In diesem Kapitel schauen wir uns die eigentliche Implementierung der Logik an. Aktuell haben wir zwei Felder mit einem Effekt, die wir in einem Ausgabefeld unterbringen wollen. Im ersten Schritt prüfen wir, ob wir aktuell beim richtigen Seiteneffekt sind, so können wir aussteuern, welcher Effekt welches Coding triggert.

IF determination_kind <> if_sd_determination=>kind-after_update.
  RETURN.
ENDIF.

 

Als nächsten Schritt lesen wir über das MODEL die aktuellen Daten des Inputs ein, da wir die aktuellen Daten für den Effekt nutzen wollen, um dem Entwickler ein Feedback auf seine Eingaben zu geben.

DATA input TYPE zcl_bs_demo_ide_first_input=>input.
model->get_as_structure( IMPORTING result = input ).

 

Als letzten Schritt führen wir den eigentlichen Effekt aus. Hier übernehmen wir das Format und die aktuelle Länge des Eingabefeldes und übernehmen es in die Ausgabe. Zum Abschluss übergeben wir die Daten zur Aktualisierung an den RESULT Parameter. Grundsätzlich kannst du nun natürlich zahlreiche Ableitungen und weitere Logiken aufrufen. Allerdings sollte es nicht zu viel Zeit in Anspruch nehmen, da sonst der Entwickler nach jeder Eingabe warten muss.

input-se_output = |{ input-output_format }: { strlen( input-se_input ) }|.
result = input.

 

Ergebnis

Nachdem wir nun die Implementierung abgeschlossen haben, schauen wir uns einmal den Seiteneffekt in Echtzeit an. Auf die Änderung der Ausgabe oder die Eingabe in das Input Feld, regiert nun das Ausgabefeld und passt sich entsprechend an. Solange der Effekt nicht noch einmal erneut ausgelöst wird, kannst du das Ausgabefeld auch manuell anpassen.

 

Vollständiges Beispiel

Das vollständige Coding aus dem gesamten Beispiel findest du im GitHub Repository. Über den folgenden Commit findest du die Änderungen aus diesem Artikel und kannst so noch später den aktuellen Zustand nachvollziehen.

 

Fazit

Seiteneffekte bringen etwas mehr Leben in deine IDE Action und erlauben dir direkte Auswirkungen von Eingaben auf dem UI widerzuspiegeln und Informationen für den Entwickler vorzubefüllen. Grundsätzlich können sie für viele Dinge in der dynamischen Entwicklung eingesetzt werden.


Enthaltene Themen:
ToolsADTEclipseIDE ActionSide Effect
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 (Tabelle)

Kategorie - ABAP

Wie kannst du eigentlich eine Tabelle erzeugen und in der IDE Action bearbeiten? Schauen wir uns die Möglichkeiten für die Eingabe an und wie du am Ende mit den Daten umgehen kannst.

09.12.2025

ABAP Tools - IDE Actions (Wertehilfe)

Kategorie - ABAP

Schauen wir uns einmal im Detail an, wie wir eine Wertehilfe für unsere Eingabe für unsere IDE Action in ADT erstellen können. Dabei schauen wir uns mehrere Möglichkeiten und Abhängigkeiten an.

11.11.2025

ABAP Tools - IDE Actions (Eingabe)

Kategorie - ABAP

Wie können wir eigentlich vor der Eingabe noch Informationen holen, bevor die eigentliche IDE Action in ABAP ausgeführt wird? Implementieren wir dazu die erste Version einer einfachen Eingabe.

04.11.2025

ABAP Tools - IDE Actions (Ausgabe)

Kategorie - ABAP

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.

28.10.2025

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