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

RAP - Ermittlung

741

Wie werden Daten im ABAP RESTful Programming Model automatisch abgeleitet und angereichert? Dieser Frage gehen wir in diesem Artikel nach.

Werbung


Die letzte Woche hatten wir uns mit der Validierung auseinandergesetzt und wie du damit dein Business Objekt sauber hältst. Diese Woche werden wir einmal auf die automatischen Ableitungen eingehen und wie du nicht alle Felder vom User befüllen lassen musst.

 

Allgemein

Eine Ermittlung kann Arbeit abnehmen und Felder mit Informationen befüllen, die sich vielleicht aus anderen Datenquellen ergeben. Oder es werden Informationen abgeleitet, wenn der Anwender vergisst sie zu befüllen. Eine Ermittlung kann einfach oder komplex sein, am Ende sorgt sie ebenfalls für die Vollständigkeit der Daten im Business Objekt.

 

Anlage

Legen wir im ersten Schritt eine Ermittlung in unserem Business Objekt an, dazu definieren wir sie in der Verhaltensdefinition und geben die entsprechenden Eigenschaften:

determination fillCurrency on modify { create; update; }

 

Hierbei steht "on modify" und "on save" zur Verfügung, die die Ermittlung unterschiedlich auslösen. "On Modify" löst jedes Mal aus, wenn sich die Daten ändern und der User etwas Neues in ein Feld eingibt. Hier sollten vor allem schnelle Ermittlung durchgeführt werden, die nicht so viel Performance verbrauchen. "On Save" wird erst beim Sichern der Daten in der Speichersequenz ausgelöst und eignet sich vor allem für performance-intensive Aufgaben. In der geschweiften Klammer, stehen wie bei der Validierung, Felder und Events zur Verfügung. Hier kann man noch entsprechend granular die Ermittlung anpassen.

Im Anschluss kannst du die Methode in der Klasse wieder mit STRG + 1 generieren lassen und musst diese nicht per Hand anlegen. Die Methodendefinition sieht nun wie folgt aus:

METHODS fillcurrency FOR DETERMINE ON MODIFY
  IMPORTING keys FOR partner~fillcurrency.

 

Hinweis: Eine Ermittlung muss nur auf Ebene des Interfaces definiert werden, da sie jederzeit gilt und nicht in der Projektionsschicht nach außen gegeben werden muss und auch nicht kann.

 

Implementierung

Die Methodenschnittstelle ist sehr überschaubar und enthält weniger Parameter als bei den Validierungen. Wie immer werden die betroffenen Schlüssel übergeben, als Rückgabe steht uns nur die Tabelle für Meldungen zur Verfügung, falls während der Ableitung etwas schieflaufen sollte.

 

Entsprechend einfach gestaltet sich unsere Ableitung, wir Lesen die übergebenen Schlüssel und prüfen, ob das Feld PaymentCurrency befüllt ist. Ist dies nicht der Fall, dann setzen wir einen Defaultwert, damit das Feld nicht leer bleibt. Die Implementierung sieht dann wie folgt aus:

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

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

 

Hinweis: Ein Commit darf in diesem Fall nicht gesetzt werden, da wir uns in der Bearbeitung des Business Objekts befinden. Versuchst du es dennoch, erhältst du vom Compiler eine Fehlermeldung und das Aktivieren ist nicht möglich.

 

Test

Im nächsten Schritt testen wir die Ermittlung einmal in der App. Dazu legen wir einen neuen Datensatz an und befüllen den Schlüssel, sowie das Pflichtfeld Land. Das Pflichtfeld hatten wir im letzten Artikel zum Thema Validierung angelegt:

 

Nach dem Speichern erhalten wir nun das folgende Bild, die Währung wurde auf Default gesetzt und muss nicht mehr befüllt werden.

 

Fazit

Die Ermittlung ist eine gute Möglichkeit fehlende Informationen anzureichern, dabei kannst du schnelle und langsame Ermittlungen gut teilen und entsprechend oft der Performance aufrufen. Langsame Ermittlungen machen vor allem beim Speichern Sinn, denn eine Änderung wird nach jedem Feld aufgerufen.


Enthaltene Themen:
RAPBTPErmittlungREX1
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 - Navigation (App to App)

Kategorie - ABAP

Wie kannst du eigentlich innerhalb deiner Fiori Anwendung auf eine andere Anwendung navigieren, ohne das der User die App manuell wechseln muss? Schauen wir uns die Navigation zwischen Fiori Apps an.

01.09.2026

ABAP in der Praxis - Setup App erstellen

Kategorie - ABAP

Keine SAP GUI mehr? Wie erstellen wir dann eigentlich eine statische Setup App und bleiben auf ABAP Seite trotzdem flexibel für die weitere Implementierung? Hier ein praktisches Beispiel.

28.08.2026

RAP - Singleton Pattern

Kategorie - ABAP

Das Singleton Pattern in RAP gibt es schon länger, doch wie genau funktioniert es und wie kannst du es auch für andere Use-Cases nutzen? Schauen wir uns dazu die Details in diesem Artikel an.

25.08.2026

RAP - Nativer Datei-Upload

Kategorie - ABAP

Du willst eine Datei in deine RAP Application hochladen und im Anschluss verarbeiten? Die offizielle Lösung für Up- und Download lässt noch warten, mit einem kleinen Umweg ist es aber bereits Heute möglich.

18.08.2026

RAP - Feature Control (Teil 2)

Kategorie - ABAP

Wie sieht es eigentlich mit den Feature Controls in RAP aus und welche Änderungen gab es nun mittlerweile? Hier schauen wir noch einmal auf die Features für unsere Sales App und welche Updates sich ergeben haben.

14.08.2026