This is a test message to test the length of the message box.
Login
ABAP BOPF Validierung
Erstellt von Software-Heroes

ABAP - BOPF Validierung

198

Wie sorgst du am Einfachsten dafür, dass dein Datenmodell sauber bleibt? Die einfache Antwort erfährst du Heute.

Werbung


Das Thema Sauberkeit der Daten ist auch im BOPF sehr wichtig und stellt mit den Validierungen ein starkes Mittel zur Prüfung der Konsistenz da. Ähnlich wie die Ermittlung wird auch die Validierung im Datenmodell auf dem entsprechenden Knoten angelegt. Heute zeigen wir dir, wie man eine Validierung definiert und die entsprechende Logik in der Klas se implementiert.

 

Validierung anlegen

Die Validierung wird, wie die Ermittlung, wieder auf dem entsprechenden Knoten definiert für den sie gelten soll. Dazu per Rechts-Klick und Auswahl der "Konsistenz-Validierung" eine neue Hülle anlegen.

 

Name und Bezeichnung der Validierung befüllen und dann kannst du dir wieder per Vorschlag den Klassennamen generieren lassen.

 

Die Kondition muss nun noch für bestimmte Aktionen (Trigger) aktiviert werden. In diesem Fall aktivieren wir sie für alle Fälle, außer dem Löschen, da es dort keinen Sinn macht. Du kannst Validierungen auch nur beim Erzeugen durchlaufen, wenn im Anschluss die Daten nicht mehr veränderbar sind.

 

Implementierung

Die Logik wir wieder in der angelegten Klasse implementiert die das Interface /BOBF/IF_FRW_VALIDATION implementiert. In der Methode EXECUTE werden alle Prüfungen auf den Daten implementiert, dazu das folgende Beispiel:


DATA:
  lt_price_data TYPE ztest_t_price_scale.

eo_message = /bobf/cl_frw_factory=>get_message( ).

io_read->retrieve(
  EXPORTING
    iv_node       = is_ctx-node_key
    it_key        = it_key
    iv_fill_data  = abap_true
  IMPORTING
    et_data       = lt_price_data
).

LOOP AT lt_price_data REFERENCE INTO DATA(lr_price_data).
  DATA(ld_error) = abap_false.

  IF lr_price_data->min_quantity <= 0.
    ld_error = abap_true.
  ENDIF.

  IF lr_price_data->discount < 0.
    ld_error = abap_true.
  ENDIF.

  IF ld_error = abap_true.
    APPEND VALUE #( key = lr_price_data->key ) TO et_failed_key.

    eo_message->add_message(
      EXPORTING
        is_msg       = VALUE #( msgty = 'E'
                                msgid = 'ZTEST_MSG'
                                msgno = '001'
                       )
        iv_node      = is_ctx-node_key
        iv_key       = lr_price_data->key
    ).
  ENDIF.
ENDLOOP.

 

Die Daten müssen zuvor aus dem Datenmodell eingelesen werden, da uns an dieser Stelle erst einmal nur die Schlüssel zur Verfügung stehen. Im Anschluss erfolgt die Überprüfung der Daten auf Korrektheit. Sollten die Daten einen Fehler aufweisen, dann muss der Schlüssel in die Failed-Keys übernommen werden und es kann eine Nachricht erzeugt werden. Vor der Aufnahme der Nachricht auf jeden Fall darauf achten, dass per Factory eine neue Nachrichten-Instanz erzeugt wurde.

 

Test

Bei der Anlage der Testdaten erhalten wir nun eine entsprechende Fehlermeldung, wenn die Daten nicht korrekt befüllt sind. Die Daten können auch nur dann gesichert werden, wenn es keine Fehler mehr bei der Validierung gibt.

 

Fazit

Konsistente Daten im Datenmodell sollten nun für dich kein Problem mehr sein. Mit Hilfe unseres heutigen Artikel kannst du einfache Datenüberprüfungen zur Laufzeit realisieren. Viel Spaß beim Probieren mit deiner eigenen Lösung.


Enthaltene Themen:
BOPFValidierungDaten prüfen
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden 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.


ABAP - BOPF Quick Guide (Update)

Kategorie - ABAP

Ein kleiner Update zu unserem Buch das wir veröffentlicht haben. Für alle Menschen, die das papierlose Büro langweilig finden.

23.10.2020

ABAP - BOPF Quick Guide

Kategorie - ABAP

Du benötigst einen Schnelleinstieg in das Business Object Processing Framework (BOPF) der SAP, wir haben hier den richtigen Guide für dich.

11.09.2020

ABAP - BOPF Eclipse

Kategorie - ABAP

Kann man BOPF auch in Eclipse entwickeln? Hier zeigen wir dir, wie gut die Suche und Navigation im System läuft.

20.03.2020

ABAP - BOPF Performance

Kategorie - ABAP

Wie sieht es eigentlich mit der Performance bei Zugriffen auf BOPF aus? Dieser Frage wollen wir heute nachgehen.

13.03.2020

ABAP - BOPF Hilfsmethoden

Kategorie - ABAP

Das Framework stellt dir verschiedene Methoden und Objekte zur Verfügung, die die Benutzung vereinfachen sollen.

21.02.2020