This is a test message to test the length of the message box.
Login

ABAP - BOPF Abfragen

293

Nach Anlage der Testdaten hatten wir kleinere Schwierigkeiten beim Lesen der Daten. Heute zeigen wir dir die Lösung des Problems.

Werbung


In diesem Artikel beschäftigen wir uns mit der Frage, wie wir die Daten einfach abfragen können. Denn wir wir bereits im letzten Artikel festgestellt haben, gibt es nur einfache Zugriffe über den Schlüssel, doch dieser muss auch erst einmal ermittelt werden.

 

Abfragen

Dafür gibt es Abfragen, die wir Anlegen und Verwenden können. Die Definition einer Abfrage erfolgt in der Transaktion BOBX, wo wir auch das Modell anlegen. Mit einem Rechts-Klick auf Abfragen, können wir eine neue Abfrage definieren.

 

Ohne viel Aufwand können wir zwei Grundabfragen anlegen, die das System bereits vorsieht. SELECT_ALL ermittelt alle Schlüssel aus dem BOPF und gibt diese ohne Einschränkungen zurück. SELECT_BY_ELEMENT übernimmt die Selektionskriterien und schränkt die Menge der Schlüssel ein. Dafür verlangt diese Abfrage eine Struktur oder ein Feld nach dem gefiltert wird.

 

 

Aus Erfahrung können wir dir sagen, dass die Hinterlegung der Tabelle der beste Weg ist. Es fehlen zwar die transienten Felder aus den Daten, doch es können auch die Schlüssel für PARENT abgefragt werden, wenn man zum Beispiel über eine untere Entität in die Suche einsteigt.

 

BOBT

Nach Definition und Aktivierung im Modell, stehen nun auch in der Testumgebung die beiden neuen Abfragen zur Verfügung. Diese können nun für die Selektion herangezogen werden. Möchte man einfach alle Elemente aus den Tabellen lesen, reicht die Abfrage SELECT_ALL.

 

Wenn du über die Elemente einschränken möchtest, bekommst du wieder ein Popup zur Verfügung gestellt. Dieses mal sind alle Felder aus der Struktur zur Eingabe verfügbar, was dir die Eingrenzung der Daten erleichtern sollte. Nun kannst du auch über den Kreditor einschränken.

 

Technische Abfrage

Sicherlich fragst du dich, wie man die Abfrage auch technisch durchführen kannst? In diesem Abschnitt zeigen wir dir ein Codebeispiel, wie du das Beispiel oben umsetzen kannst.

Im ersten Schritt benötigst du eine Instanz des Service-Managers, um eine Aktion im BOPF durchführen zu können. Dann befüllst du die Selektionstabelle mit den Einschränkungen und übergibst im letzten Schritt alles an die QUERY Methode des Service-Managers. Du bekommst ein Nachrichtenobjekt zurück, dass du noch auf Fehler prüfen solltest, ebenso die Schlüsseltabelle ob Einträge enthalten sind. Da du nur die Schlüssel erhalten hast, müsst du noch über die RETRIEVE Methode die Daten anfordern.


DATA:
  lt_sel  TYPE /bobf/t_frw_query_selparam,
  lt_data TYPE ztest_t_contract.

" Service Manager Instanz
DATA(lo_smgr) = /bobf/cl_tra_serv_mgr_factory=>get_service_manager( zif_tst_bopf_c=>sc_bo_key ).

" Selektion befüllen
APPEND VALUE #(
  attribute_name  = zif_tst_bopf_c=>sc_node_attribute-contract-creditor
  sign            = 'I'
  option          = 'EQ'
  low             = '0000123456'
) TO lt_sel.

" Lesen des Schlüssels
lo_smgr->query(
  EXPORTING
    iv_query_key            = zif_tst_bopf_c=>sc_query-contract-select_by_elements
    it_selection_parameters = lt_sel
  IMPORTING
    eo_message              = DATA(lo_msg_query)
    et_key                  = DATA(lt_key)
).

" Prüfung der Fehler
IF lo_msg_query->check( ) = abap_true OR lt_key IS INITIAL.
  RETURN.
ENDIF.

" Lesen der Daten
lo_smgr->retrieve(
  EXPORTING
    iv_node_key             = zif_tst_bopf_c=>sc_node-contract
    it_key                  = lt_key
  IMPORTING
    eo_message              = DATA(lo_msg)
    et_data                 = lt_data
).

 

Hinweis: Wie dir sicherlich aufgefallen ist, verwenden wir das Konstanten-Interface des BOPF Modells für die Erzeugung des Service-Managers, aber auch bei den Zugriffen. An diesen Stellen niemals die Werte als Literale hinterlegen, da diese sich beim Neugenerieren des Interfaces ändern könnten.

 

Fazit

Mit Hilfe der Abfragen kannst du nun gezielt an die Daten gelangen und die Rückgabemengen einschränken. Ab hier ist das Datenmodell bereits für Auswertungen einsetzbar. Du siehst, dass mit den Standard Abfragen bereits viel möglich ist und du nicht immer eigene Einschränkungen benötigst.


Enthaltene Themen:
BOPFAbfragenDaten lesen
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