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

ADT - RAP Extension Assistent [MIA]

113

Du möchtest ein RAP Objekt erweitern und weißt nicht genau wo du starten sollst? Vielleicht hilft dir die Idee des Extension Assistant weiter und leitet dich Schritt für Schritt durch den Prozess.

Werbung


In diesem Artikel schauen wir uns den Extension Assistant als IDE Action an und was du aktuell damit in deiner RAP Entwicklung machen kannst.

 

Einleitung

Beim letzten Mal hatten wir uns den RAP Analyzer angeschaut der dich bei der Arbeit unterstützt und dir zeigt, was du bei deinem RAP Objekt erwarten kannst. Dabei ist der RAP Analyzer für die schnelle Navigation und den Überblick gedacht. Auf Basis dieser IDE Action hatten wir dann noch eine zweite Action erstellt, die dir helfen soll, den RAP Stack schnell und einfach zu erweitern.

 

Idee

Als Grundlage verwenden wir den RAP Analyzer um an alle Informationen des RAP Objekts zu gelangen. Dabei stellen wir für das aktuelle RAP Objekt verschiedene Szenarien zur Verfügung, die uns eine Schritt für Schritt Anleitung geben. In diesem Fall nicht generisch, sondern auf das aktuelle Objekt zugeschnitten. Das soll vor allem Zeit bei der Erweiterung sparen. Die eigentliche Idee war allerdings eine automatische Erweiterung aller Objekte, leider geben die XCO Bibliotheken keine ausreichenden Möglichkeiten für die Aktualisierung der Objekte.

 

IDE Action

Schauen wir uns einmal die Umsetzung der IDE Action an und tauchen in einige Bestandteile der Umsetzung ab.

 

Definition

Neben der eigentlichen Umsetzung, also der Aktion, benötigen wir dieses Mal auch ein UI. Dabei starten wir wieder auf dem Service und wollen dem Anwender die Möglichkeit geben, den passenden Assistant und weitere Konfigurationen mitzugeben.

 

Im aktuellen Use-Case ist nur die Erweiterung von Feldern im Datenmodell vorgesehen. Dabei kannst du über die Suchhilfe eine Entität im Datenmodell wählen und gibst einen Feldnamen vor. Wie der Name bereits sagt, geht es hier um das Datenbankfeld.

 

Analyse

Für die komplette Analyse des RAP Objekts verwenden wir den RAP Analyzer, da er uns alle nötigen Informationen liefert, die wir für die Erweiterung benötigen. So zum Beispiel das Pattern, welches wir benötigen, um die Form der Erweiterung zu definieren.

 

Schritte

In der eigentlichen Aktion können wir dann die Erweiterung und die Schritte anfordern. Dazu geben wir das analysierte Objekt an die Factory und lassen uns das passende Objekt vom Framework geben. Dafür benötigen wir auch das Pattern, da nicht alle Änderungen im gleichen Pattern möglich sind.

RETURN SWITCH #( object-classification
                 WHEN zif_mia_rap_analyzer=>classifications-standard  THEN NEW zcl_mia_extension_classic( object )
                 WHEN zif_mia_rap_analyzer=>classifications-custom    THEN NEW zcl_mia_extension_custom( object )
                 WHEN zif_mia_rap_analyzer=>classifications-singleton THEN NEW zcl_mia_extension_singleton( object ) ).

 

Haben wir die richtige Erweiterungsinstanz, dann können wir die eigentlichen Schritte abrufen. Für jeden Use-Case wird es dabei eine eigene Methode geben.

DATA(extension) = zcl_mia_core_factory=>create_extension_steps( rap_object ).

CASE input-scenario.
  WHEN zcl_mia_rap_extension_input=>extension_scenario-field.
    DATA(converted_output) = extension->generate_steps_for_new_field( VALUE #( entity = input-entity
                                                                               name   = input-new_field ) ).
ENDCASE.

 

Die aktuelle Logik ist hier eher fest hinterlegt, außer dass wir prüfen, ob auch der entsprechende Layer vorhanden ist. Damit sind die Schritte und die Reihenfolge bereits festgelegt.

CLEAR collected_steps.
DATA(enhanced_entity) = extract_layer_for_entity( new_field-entity ).

add_step_database( layer = enhanced_entity-interface
                   field = new_field-name ).
add_step_interface( layer = enhanced_entity-interface
                    field = new_field-name ).
add_step_consumption( layer = enhanced_entity-consumption
                      field = new_field-name ).
add_step_activate( ).
add_step_behavior( layer = enhanced_entity-interface
                   field = new_field-name ).
add_step_draft( enhanced_entity-interface ).
add_step_metadata( layer = enhanced_entity-consumption
                   field = new_field-name
                   root  = enhanced_entity-root ).
add_step_activate( ).

RETURN finalize_output_table( ).

 

Das Ergebnis können wir dann an den HTML Output der IDE Action geben, um die Ausgabe für den Entwickler vorzubereiten.

 

Erweiterung

In diesem Kapitel erweitern wir unsere Sales App um ein neues Feld und verwenden dabei den Extension Assistant und das aktuell bereitgestellte Erweiterungsszenario.

 

Anforderung

Aktuell benötigen wir in der Root Entität unseres Objekts ein Feld für die Log ID, da wir später das Handle des Application Logs speichern möchten. Dazu müssen wir das Datenmodell erweitern.

 

Action

Öffnen wir also erst einmal das Service Binding ZBS_UI_GLOBALSALE_O4 und starten die IDE Action über STRG + ALT + R, dort wählen wir "MIA: RAP Extension Assistant", um die Aktion zu starten. Über die Wertehilfe können wir die passende Entität auswählen und geben den Namen des neuen Datenbank-Feldes ein.

 

Der Assistant generiert uns nun einen Vorschlag mit den durchzuführenden Schritten, einer Beschreibung, Code Snippets die wir direkt übernehmen können und den Links zu den Objekten. Damit können wir das Popup offenlassen und können uns durch die Liste arbeiten. Ist die Liste lang und umfangreich, stehen auch Checkboxen zur Verfügung, wo du gemachte Schritte bestätigen kannst.

 

In der Spalte Option findest du noch Hinweise zu den Schritten. "OPTIONAL" heißt, dass der Schritt gemacht werden sollte, wenn er umgesetzt werden kann. Das liegt aber eher daran, dass wir in diesem Fall nicht wissen, ob es eine Draft Tabelle gibt (wegen der eingeschränkten API Lesefähigkeit). Bei "CHOOSE" kannst du einen oder mehrere Schritte wählen, zum Beispiel je nachdem wo das Feld erscheinen soll.

 

Bearbeitung

Führen wir nun die Bearbeitung der Schritt aus und erweitern unser Datenmodell in der Anwendung:

  • Datenmodell - Im ersten Schritt erweitern wir das Datenmodell, dabei benötigen wir aber ein CHAR 22 Feld, für das Log Handle. Alle anderen Informationen können wir übernehmen. Der Feldname wurde ebenfalls bereits umgesetzt. Sind wir damit fertig, können wir alle drei Objekte gleichzeitig aktivieren.
  • Verhalten - Dann erweitern wir das Verhalten, in diesem Fall das Feldmapping der Entität. Da wir ein Draft-Szenario haben, müssen wir auch die Draft Tabelle per Quick Fix aktualisieren.
  • UI - Zum Abschluss erweitern wir noch die Metadata Extension durch die UI Annotationen. Hier müssen wir aber noch den entsprechenden Qualifier zuordnen und die Position bestimmen. Optional vergeben wir auch noch ein Label, damit das Feld einen passenden Text hat. Zum Abschluss aktivieren wir die letzten Objekte und sind mit der Erweiterung fertig.

 

@UI.identification: [ { position: 105, qualifier: 'GENERAL' } ]
@EndUserText.label: 'Log ID'
LoggingId;

 

Ergebnis

Aktualisieren wir nun unsere Anwendung, dann wurde das neue Feld übernommen und kann nun gepflegt werden. Ohne großes Kopfzerbrechen und mit dem geführten Assistenten was die Erweiterung in wenigen Minuten durchgeführt. Schnell, wenn wir das Objekt kennen und noch schneller, wenn wir das Objekt überhaupt nicht kennen.

 

Vollständiges Beispiel

Die Änderung an der Sales App findest du im GitHub Repository für die RAP Beispiele. In diesem Commit findest du alle Änderungen, die wir durchgeführt haben. Die IDE Action findest du hier auf GitHub, bei den anderen IDE Actions aus der MIA Sammlung.

 

Fazit

Der Extension Assistant ist eine relativ einfache Form der Erweiterung von RAP Objekten und basiert auf der Analyse der Informationen und der Struktur. Die Erweiterung erfolgt manuell und nicht automatisch, da die passenden ABAP APIs nicht zur Verfügung stehen. Mit dem richtigen MCP Server und AI Model könntest du das auch leicht per Künstlicher Intelligenz machen, würdest aber mehr Ressourcen darauf verbrauchen.


Enthaltene Themen:
ToolsADTEclipseMIARAPErweiterungREX7
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 - RAP Analyzer [MIA]

Kategorie - ABAP

Die Einarbeitung und Übersicht in bestehende RAP Objekte kann nicht immer einfach sein, vor allem wenn es sich um komplexe Objekte handelt. Fragen wie das verwendete Pattern und wichtige Objekte müssen sich meist erarbeitet werden.

24.02.2026

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