This is a test message to test the length of the message box.
Login
|
ABAP RAP Aktion
Erstellt von Software-Heroes

RAP - Aktion

764

In diesem Artikel schauen wir uns einmal Aktionen an, wie sie aufgebaut werden und was sie eigentlich mit dem RAP Business Objekt machen.

Werbung


In den letzten RAP Artikeln hatten wir uns mit dem Thema Validierungen und Ermittlungen beschäftigt, dies wollen wir nun vervollständigen mit den Aktionen. Wie du Aktionen definieren kannst und diese implementierst, erfährst du in diesem Artikel.

 

Einführung

Aktionen kann man sich am einfachsten wie Buttons auf einer Oberfläche vorstellen, man kann sie von außen auslösen und sie führen verschiedene Schritte aus. In den meisten Fällen werden auch Daten des RAP Business Objekts beeinflusst. Ähnlich wie Validierungen und Ermittlungen müssen sie in der Verhaltensdefinition des Objekts angelegt werden.

 

Bereitstellung

Im ersten Schritt definieren wir zwei einfache Aktionen in der Verhaltensdefinition, dazu musst du nur die "action" und einen Namen angeben. In diesem Fall definieren wir zwei Aktionen, eine Normal und eine Static. Über STRG + 1 können die beiden Aktionen und deren Methoden erzeugt werden, um später das Coding zu implementieren.

action fillEmptyStreets;
static action clearAllEmptyStreets;

 

Damit die Aktionen auch in der App oder Schnittstelle genutzt werden können, müssen diese in der Projektion bekannt gegeben werden. Erst durch die Bereitstellung nach Außen, kann sie auch genutzt werden. 

use action fillEmptyStreets;
use action clearAllEmptyStreets;

 

Damit die Aktionen nun auf dem UI erscheinen, muss die Metadata Extension erweitert werden. Dazu kann ein beliebiges Feld um weitere Annotationen erweitert werden. Über die Erweiterung von LineItem tauchen die Buttons über der Liste auf. Wichtig ist vor allem die Defintion des "types" und der "dataAction", damit der Button angezeigt wird und die richtige Aktion auslöst.

@UI.selectionField : [ { position: 10 } ]
@UI.lineItem: [
  { position: 20, importance: #MEDIUM },
  { position: 10, type: #FOR_ACTION, label: 'Fill', dataAction: 'fillEmptyStreets' },
  { position: 20, type: #FOR_ACTION, label: 'Clear All', dataAction: 'clearAllEmptyStreets' }
]
@UI.identification: [{ position: 10, qualifier: 'PARTNER_INFO' }]
@EndUserText.label: 'Partner'
@EndUserText.quickInfo: 'Identifier of the partner'
PartnerNumber;

 

Die Buttons werden damit nun auch auf dem UI angezeigt und können genutzt werden:

 

Zum Abschluss implementieren wir nun die beiden Aktionen. Die Aktion "fillEmptyStreets" befüllt einen Datensatz, bei dem die Straße leer ist, mit einem Wert. Die Aktion "clearAllEmptyStreets" löscht die Werte nun wieder, aber keine anderen Straßen. Die Implementierung sieht wie folgt aus:

METHOD clearAllEmptyStreets.
  SELECT FROM zbs_dmo_partner
    FIELDS partner, street
    WHERE street = 'EMPTY'
    INTO TABLE @DATA(lt_partner_data).

  LOOP AT lt_partner_data INTO DATA(ls_partner).
    MODIFY ENTITIES OF ZBS_I_RAPPartner IN LOCAL MODE
      ENTITY Partner
      UPDATE FIELDS ( Street )
      WITH VALUE #( ( PartnerNumber = ls_partner-partner Street = '' %control-Street = if_abap_behv=>mk-on ) ).
  ENDLOOP.

  INSERT VALUE #(
    %msg = new_message_with_text( text = |{ lines( lt_partner_data ) } records changed|
    severity = if_abap_behv_message=>severity-success )
  ) INTO TABLE reported-partner.
ENDMETHOD.


METHOD fillEmptyStreets.
  READ ENTITIES OF ZBS_I_RAPPartner IN LOCAL MODE
    ENTITY Partner
    FIELDS ( Street )
    WITH CORRESPONDING #( keys )
    RESULT DATA(lt_partner_data).

  LOOP AT lt_partner_data INTO DATA(ls_partner) WHERE Street IS INITIAL.
    MODIFY ENTITIES OF ZBS_I_RAPPartner IN LOCAL MODE
      ENTITY Partner
      UPDATE FIELDS ( Street )
      WITH VALUE #( ( %tky = ls_partner-%tky Street = 'EMPTY' %control-Street = if_abap_behv=>mk-on ) ).
  ENDLOOP.
ENDMETHOD.

 

Aktionen

Im oberen Beispiel haben wir zwei Aktionen verwendet, eine normale "Action" und eine "Static Action". Die normale Aktion ist zu Beginn inaktiv und kann erst genutzt werden, wenn einer oder mehrere Datensätze in der Liste markiert wurden. Die Aktion wird nur auf diesem Datensatz ausgeführt.

Die zweite Aktion ist immer aktiv, dass sie auf das ganze Objekt Einfluss hat und nicht abhängig von einem markierten Datensatz ist. Entsprechend anders läuft die Aktion, denn hier müssen wir alle Schlüssel selbst von der Datenbank lesen und bekommen sie nicht übergeben.

 

Meldungen

Aktionen bringen die Möglichkeit mit, entsprechende Meldungen an den User zurückzugeben. In unserer Beispielimplementierung haben wir eine einfache Erfolgsmeldung ausgegeben, die einen Message Toast erzeugt, der nach wenigen Sekunden verschwindet.

 

Hier besteht aber auch die Möglichkeit mehr Meldungen zu erzeugen. Werden mehr Meldungen erzeugt, dann ändert sich die Form in ein Popup, werden andere Typen verwendet, wir die Meldung anders dargestellt oder muss vielleicht auch erst bestätigt werden.

 

Fazit

Aktionen geben dem RAP Objekt weitere Möglichkeiten auf die Daten einzuwirken, ohne Änderungen direkt vorzunehmen. Die Aktionen können einfach sein und Daten verändern oder komplexe Aktionen auslösen, wie Daten über eine Schnittstelle nachzulesen.


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


RAP - Draft Query

Kategorie - ABAP

In diesem Artikel schauen wir uns die Draft Query in RAP an und wie du damit die Einträge und ihre Sichtbarkeit steuern kannst. Dazu schauen wir uns die Praxis an einem Beispiel an.

03.04.2026

RAP - Importance

Kategorie - ABAP

Schauen wir einmal auf die Wichtigkeit von Informationen innerhalb einer SAP Fiori Anwendung und wie wir damit die Sichtbarkeit in der RAP Anwendung steuern können.

24.03.2026

RAP - Kritikalität

Kategorie - ABAP

Für was brauchst du eigentlich die Kritikalität in deiner Anwendung und was kannst du damit erreichen? Schauen wir uns verschiedene Formen und Szenarien an.

17.03.2026

RAP - Icons

Kategorie - ABAP

Wie findest du eigentliche Icons im UI5 Umfeld und wie kannst du diese mit ABAP Mitteln in deine Fiori Elements Anwendung einbauen? Lass uns diese Frage im Artikel beantworten.

13.03.2026

RAP - Gruppierung von Aktionen

Kategorie - ABAP

Wie kannst du eigentlich deine verschiedenen Aktion in RAP unter einem Button gruppieren, vor allem wenn die Aktionen relativ ähnlich sind. In diesem Artikel schauen wir uns die Details zur Umsetzung mit ABAP an.

10.03.2026