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

ABAP - BOPF Ermittlung

230

Wie sieht es mit abgeleiteten Daten aus die nicht auf der Datenbank stehen? Dieser Frage wollen wir im heutigen Artikel nachgehen.

Werbung


Mit der Datenermittlung kannst du zur Laufzeit beim Zugriff auf BOPF zusätzliche Daten lesen. Diese transiente Daten hatten wir bereits mit dem Datenmodell vorgestellt und möchten dir heute an einem Beispiel zeigen, wie die Daten einfach dazugelesen werden können.

 

Anlage der Ermittlung

Die Ermittlung wird auf dem jeweiligen Knoten angelegt, dazu muss wieder die Transaktion BOBX aufgerufen werden. Auf dem entsprechenden Knoten legst du nun eine Ermittlung an.

 

Dazu werden die einzelnen Felder befüllt, wobei der Name der Verarbeitungsklasse wieder über "Zusätze -> Repository-Namen vorschlagen" generiert werden kann. Als Kategorie wählst du Transient, da wir zusätzliche Daten zu diesem Knoten lesen wollen.

 

Im nächsten Schritt muss eingestellt werden, wann die Ermittlung durchlaufen werden soll. Für transiente Daten reicht in den meisten Fällen die Ermittlung beim "Laden".

 

Der Zeitpunkt ist hier direkt nach dem Laden der Daten aus der Datenbank, damit die Daten vollständig sind. Abhängigkeiten gibt es hierbei keine.

 

Implementierung

Die Implementierung der Logik erfolgt in einer eigenen Klasse die das Interface /BOBF/IF_FRW_DETERMINATION implementiert. In der Methode EXECUTE bekommt man alle selektierten Knoten übergeben, in diesem Fall nur die Tabelle mit Schlüsseln. Wie die Implementierung aussehen könnte, erfährst du im folgenden Code-Beispiel:


DATA:
  lt_head TYPE ztest_t_contract.

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

LOOP AT lt_head REFERENCE INTO DATA(lr_head).
  SELECT SINGLE name1
   FROM lfa1
   WHERE lifnr = @lr_head->creditor
   INTO @lr_head->creditor_name.

  IF sy-subrc = 0.
    io_modify->update(
      EXPORTING
        iv_node     = is_ctx-node_key
        iv_key      = lr_head->key
        iv_root_key = lr_head->root_key
        is_data     = lr_head
    ).
  ENDIF.
ENDLOOP.

 

Über die Retrieve-Methode liest du zu den Schlüsseln noch die entsprechenden Daten, dazu wird der Kombi-Tabellentyp verwendet, der die Daten entgegen nimmt. Dann ein Loop über die Kopfdaten per Referenz, Lesen der Zusatzeigenschaften aus dem Stammsatz des Lieferanten und Aktualisierung der Daten mit der Update-Methode, wobei du die neuen Daten als Referenz übergibst. Durch den Loop per Referenz hast du dieses Problem bereits gelöst.

 

Test

Beim Lesen des Knotens werden nun automatisch zum richtigen Zeitpunkt auch die Daten nachgelesen und die Struktur angereichert. Dies kannst du am einfachsten über die Test-Transaktion BOBT probieren. Wenn du dir nun die Beispieldaten anschaust, wird das Feld CREDITOR_NAME nun befüllt.

 

Fazit

Nicht alle Daten müssen immer im Datenmodell auf den Tabellen persitiert werden. Mit dem gezeigten Beispiel bekommst du einen Einblick, wie leicht weitere abhängige Daten zu deinem Datenbestand geladen werden können. Du solltest bei der Implementierung darauf achten, dass die Datenermittlung bei jedem Lesezugriff aufgerufen wird, was die Einzelzugriffe langsamer machen kann.


Enthaltene Themen:
BOPFErmittlungDaten ableiten
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