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

158

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.

Werbung


In diesem Artikel legen wir eine Eingabeklasse an und gestalten unsere erste Eingabe für die IDE Action. Dabei schauen wir uns einige Möglichkeiten der Formatierung an.

 

Einleitung

Wenn wir nicht gerade ein Refactoring von Quellcode durchführen, benötigen wir normalerweise eine Eingabe vom Entwickler, der die IDE Action ausführt. Damit können wir zusätzliche Daten abfragen oder Entscheidungen des Entwicklers erhalten, wie wir dann weiter vorgehen wollen. Wollen wir Objekte generieren oder größere Änderungen vornehmen, macht eine Eingabe auf jeden Fall Sinn.

 

UI Configuration

Dazu müssen wir im ersten Schritt eine UI Configuration Klasse anlegen, die vom Interface IF_AIA_SD_ACTION_INPUT erbt und wo wir die Methode CREATE_INPUT_CONFIG ausprägen müssen. Dazu können wir in der eigentlichen IDE Action beginnen und den Namen der Klasse in das Feld "Input UI Configuration Class" eintragen.

 

Über die Vorwärtsnavigation (Klick auf den Link), können wir die Anlage starten und müssen nur das passende Interface hinterlegen. Wir erhalten im Anschluss unsere leere Klasse und können die beiden Objekte im System aktivieren.

 

Annotationen

Bevor wir mit der eigentlichen Implementierung starten, sollten wir uns zuvor mit den Annotationen beschäftigen, die wir später verwenden möchten. Dazu gibt es aktuell mehrere Quellen für die Formatierung und die verschiedenen Attribute:

 

Für was benötigen wir also die Annotationen? Wollen wir zum Beispiel einen Titel für ein Feld definieren, die Länge der Eingabe beschränken oder einen Standardwert für ein Feld definieren, dann benötigen wir zusätzliche beschreibende Merkmale. Diese Merkmale werden in Form von Annotationen direkt am Feld oder dem Typen definiert und beginnen in vielen Fällen wie ABAP Docs. Dazu ein kleines Beispiel, um das Label am Feld zu setzen:

"! <p class="shorttext">Output of the IDE Action</p>
output_format TYPE output_format,

 

Struktur

In diesem Kapitel gestalten wir schrittweise die Struktur für die Ausgabe und bauen verschiedene Elemente für die Formatierung der Eingabe ein.

 

Aufbau

Dafür benötigen wir einen ersten initialen Aufbau. Ein guter Anfang ist daher eine eigene Struktur, wo wir die verschiedenen Eingabeinformationen speichern wollen. Hier definieren wir die Struktur INPUT mit dem Feld OUTPUT_FORMAT, um später die verschiedenen Ausgaben zu prüfen.

TYPES:
  BEGIN OF input,
    output_format TYPE string,
  END OF input.

 

In der Methode CREATE_INPUT_CONFIG müssen wir nun die Struktur vorbereiten und übergeben diese an die UI_INFORMATION_FACTORY. Neben der eigentlichen Variable können wir auch schon direkt Defaultwerte setzen. Die Instanz geben wir dann als Ergebnis aus der Methode.

DATA input TYPE input.
input-output_format = 'TEST'.

RETURN ui_information_factory->for_abap_type( abap_type = input ).    

 

Führen wir nun die IDE Action aus, dann erhalten wir ein Popup und unser erstes Feld zusammen mit dem Defaultwert angezeigt.

 

Labels

Im nächsten Schritt wollen wir den Feldern ein paar Label geben, damit sie besser lesbar sind und der Anwender mehr Informationen bei der Ausführung erhält. Dazu ergänzen wir jeweils einen Paragraph mit der Klasse "shorttext" und dem eigentlichen Text. In diesem Fall geben wir der Struktur eine Beschreibung und dem eigentlichen Feld.

TYPES:
  "! <p class="shorttext">Out first action</p>
  BEGIN OF input,
    "! <p class="shorttext">Choose an output</p>
    output_format TYPE string,
  END OF input.

 

Als Ergebnis erhalten wir dieses mal die entsprechenden Texte im Popup, schon einmal eine Verbesserung zum ersten Eindruck des UIs.

 

ENUM

Für die verschiedenen Ausgabeformate wollen wir dem User nun eine Wahlmöglichkeit geben. Dafür müssen wir einige Dinge anlegen, damit die Eingabe am Ende zu einem Dropdown wird. Dazu legen wir uns eine Konstanten Struktur an, die alle Werte enthält. In diesem Fall haben wir TEXT, HTML und CODE, damit wir später die Ausgabe steuern können. Ebenfalls haben wir bereits Texte definiert, sodass die Konstanten später einen schönen Text erhalten.

CONSTANTS:
  BEGIN OF output_enum,
    "! <p class="shorttext">Plain text</p>
    text TYPE string VALUE 'TEXT',
    "! <p class="shorttext">HTML</p>
    html TYPE string VALUE 'HTML',
    "! <p class="shorttext">Code Change</p>
    code TYPE string VALUE 'CODE',
  END OF output_enum.

 

Nun ein etwas schwieriger Teil, die eigentliche Konfiguration des Datentyps für die Ausgabe. Dabei definieren wir einen Typen, der den Inhalt des ENUMs entgegennehmen kann, in diesem Fall STRING. Dann müssen wir die Konfiguration vornehmen. Über $VALUES geben wir an, woher die Typdefinition kommt. In diesem Fall haben wir einen Link auf die aktuelle Klasse, den Datenbereich und dort das OUTPUT_ENUM. Dann müssen wir noch angeben, welcher Wert initial gesetzt ist. Dazu geben wir hinter $DEFAULT wieder das ENUM an, dieses Mal aber auch einen Wert daraus.

"! $values { @link zcl_bs_demo_ide_first_input.data:output_enum }
"! $default { @link zcl_bs_demo_ide_first_input.data:output_enum.text }
TYPES output_format TYPE string.

 

Zum Abschluss tauschen wir den Datentype STRING gegen unseren neuen Typen aus, damit die Konfiguration für dieses Feld greift. Damit wären wir mit der eigentlichen Konfiguration schon fertig.

TYPES:
  "! <p class="shorttext">Out first action</p>
  BEGIN OF input,
    "! <p class="shorttext">Choose an output</p>
    output_format TYPE output_format,
  END OF input.

 

Führen wir nun die Aktion im System aus, dann erhalten wir als Ergebnis ein Feld als Dropdown mit den entsprechend definierten Werten. Damit kann der Entwickler direkt wählen, welche Ausgabe er erzeugen möchte.

 

Verwendung

Nun kommen wir zum eigentlich wichtigsten Teil, wie können wir die Eingabe des Entwicklers bei der eigentlichen Ausführung der Aktion verwenden? Dazu müssen wir in die eigentliche Aktion wechseln und in der Methode RUN weiteren Code implementieren. Dazu erzeugen wir uns eine Variable von unserem Datentyp und rufen über das CONTEXT Objekt die Methode GET_INPUT_CONFIG_CONTENT auf, um an die Inhalte des Popups zu gelangen.

DATA input TYPE zcl_bs_demo_ide_first_input=>input.

TRY.
    context->get_input_config_content( )->get_as_structure( IMPORTING result = input ).
  CATCH cx_sd_invalid_data.
ENDTRY.

 

Im Anschluss können wir dann auf den Inhalt der Variable reagieren und bekommen je nach Auswahl eine unterschiedliche Ausgabe angezeigt.

CASE input-output_format.
  WHEN zcl_bs_demo_ide_first_input=>output_enum-text.
    result = output_text( ).

  WHEN zcl_bs_demo_ide_first_input=>output_enum-html.
    result = output_html( ).

  WHEN zcl_bs_demo_ide_first_input=>output_enum-code.
    result = output_code_change( context ).
ENDCASE.

 

Vollständiges Beispiel

Das komplette Beispiel zur Entwicklung von IDE Actions findest du bei uns im GitHub Repository. Die eigentliche Änderung aus diesem Artikel im Commit, da sich das eigentliche Repository im Laufe der Serie ändern wird.

 

Fazit

Heute haben wir uns angeschaut, wie wir eine Ausgabe erstellen und dem Entwickler weitere Informationen abfragen können und diese im Anschluss bei unserer Aktion auch nutzen können. Dabei haben wir uns erste Annotationen fürs UI angeschaut.


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


ADT - Metadata Wizard [MIA]

Kategorie - ABAP

In diesem Artikel schauen wir uns den Metadata Wizard an und wie er vielleicht in Zukunft dein Leben bei der Anlage von UI-Annotationen in RAP vereinfachen könnte.

16.01.2026

030: Software-Heroes - My Community

Kategorie - YouTube

Du möchtest das neuste ABAP und SAP Wissen haben und auch nicht jeden Blog einzeln absuchen? My Community bringt den gesamten Community Content in eine Mini-App, die du nach deinen Vorstellungen anpassen kannst, um so keine Neuigkeiten mehr zu verpassen.

22.12.2025

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

Kategorie - ABAP

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.

18.11.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