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

RAP - Ermittlung

674

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 - Änderungsbelege implementieren (Nativ)

Kategorie - ABAP

Hast du das passende Release, dann kannst du Änderungsbelege auch mittlerweile nativ in RAP implementieren, ohne viel mnauelle Implementierung. Schauen wir uns dazu die verschiedenen Schritte an.

24.04.2026

RAP - Auxiliary Class

Kategorie - ABAP

Wenn die Implementierung in der Verhaltensimplementierung eines RAP Objekts wächst, welche Möglichkeiten hast du dann noch für eine saubere Kapselung? Schauen wir uns das einmal im Detail an.

17.04.2026

RAP - Änderungsbelege implementieren (Manuell)

Kategorie - ABAP

In diesem Artikel steigen wir in die manuelle Implementierung der Änderungsbelege in unser RAP Objekt ein und schauen uns die verschiedenen Schritte der Integration an. Am Ende sollen Änderungsbelege automatisch erzeugt werden.

14.04.2026

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