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

RAP - Suche

337

In diesem Artikel beschäftigen wir uns mit der generischen Suche auf RAP Objekten und wie wir damit auch Fehleingaben interpretieren können.

Werbung


Bisher haben wir in der RAP-Serie vor allem Suchhilfen behandelt, die direkt an Felder geknüpft sind und es erlauben Werthilfen dafür zu erzeugen. Doch hier muss der User wissen, in welchem Feld er eigentlich nach Informationen suchen muss, und sollte die Abgrenzung einigermaßen kennen.

 

Einleitung

In RAP Objekten können wir aber auch die generische Suche aktivieren. Hierbei handelt es sich um ein Suchfeld, welches 1-n Spalten nach der eingegebenen Information durchsuchen kann. Mit diesem Suchfeld stehen verschiedene Möglichkeiten zur Verfügung, wie wir effizient Suchen gestalten können:

 

Aktivieren

Aktiviert kann die generische Suche mit Hilfe einer Kopf-Annotation im entsprechenden Consumption View des RAP Objekts, damit steht die Funktion in der UI zur Verfügung. Dafür muss irgendwo über der Definition die folgende Annotation eingefügt werden:

@Search.searchable: true

 

Die Annotation kann aber nicht allein im CDS View stehen, der Compiler wird eine entsprechende Fehlermeldung ausgeben, dass mindestens ein Element als durchsuchbar gekennzeichnet werden muss. In diesem Fall kennzeichnen wir die Rechnungsnummer und den Partner als durchsuchbar. Dazu ergänzen wir an den Feldern die entsprechenden Annotationen:

          @Search.defaultSearchElement: true
  key     Document,
...
          @Search.defaultSearchElement: true
          Partner,

 

Die entsprechende Suche ist nun definiert und wir können sie einmal in der Anwendung probieren. Im ersten Fall geben wir einmal eine Belegnummer ein und erhalten das folgende Ergebnis:

 

Im zweiten Testfall geben wir einmal eine Partnernummer ein und erhalten alle Belege mit der entsprechenden Partnernummer, in diesem Fall 35 Stück:

 

Fuzziness

Was in der aktuellen Version der Suche nicht funktioniert, ist die Suche nach Pattern oder Fehleingaben. Nicht immer sind die Informationen, genau wie gesucht, in der Spalte vorhanden. Manchmal weichen sie um kleine Nuancen ab und werden damit nicht im Suchergebnis angezeigt. Dafür gibt es die Fuzziness in der Suche, diese bestimmt, wieviel Fehlertoleranz bei der Suche angewandt wird. Definieren wir einmal die Rate an den beiden Feldern:

          @Search.defaultSearchElement: true
          @Search.fuzzinessThreshold: 1.0
  key     Document,
...
          @Search.defaultSearchElement: true
          @Search.fuzzinessThreshold: 0.9
          Partner,

 

Der "Threshold" bestimmt, wie ungenau die Werte in der Spalte sein können. Bei 1.0 muss der Wert zu 100% übereinstimmen, umso niedriger die Rate, desto breiter wird gesucht und desto mehr Treffer kommen auf die Suche zurück. Das zweite Feld stellen wir auf 0.9, damit können wir eine grobe Suche über den Partner starten. Geben wir nun den Wert "1234" ein, dann erhalten wir einen Treffer:

 

Wenn wir allerdings den Wert "12347" suchen, erhalten wir keinen Treffer. Hier wurde absichtlich in die Zeichenfolge ein Fehler eingebaut. Stellen wir nun einmal den Threshold auf 0.8 und versuchen die Suche erneut:

 

Die Fuzziness ist nun ungenauer und wir erhalten auch Treffer, die eigentlich nur so ähnlich sind, wie was wir gesucht haben. So können auch Rechnungen gefunden werden, die vielleicht einen Fehler bei der Erfassung erhalten haben und nicht mehr über die gesuchten Informationen verfügen.

 

Consumption View

Allein mit der Anpassung der Annotationen im Consumption View konnten wir eine generische Suche implementieren, die auch noch Abweichungen finden kann. Den gesamten Core Data Service findest du hier mit den entsprechenden neuen Annotationen:

@EndUserText.label: 'Consumption for ZBS_R_RAPCINVOICE'
@AccessControl.authorizationCheck: #NOT_REQUIRED
@Metadata.allowExtensions: true
@Search.searchable: true
define root view entity ZBS_C_RAPCInvoice
  provider contract transactional_query
  as projection on ZBS_R_RAPCInvoice as Invoice
{
          @Search.defaultSearchElement: true
          @Search.fuzzinessThreshold: 1.0
  key     Document,
          DocDate,
          DocTime,
          @Search.defaultSearchElement: true
          @Search.fuzzinessThreshold: 0.8
          Partner,
          @ObjectModel.virtualElementCalculatedBy: 'ABAP:ZCL_BS_DEMO_CRAP_VE_EXIT'
  virtual NumberOfPositions : abap.int4,
          _Position : redirected to composition child ZBS_C_RAPCPosition
}

 

Fazit

Die Implementierung einer generischen Suche in Fiori Elements ist sehr leicht und benötigt nur wenige Annotationen und keine großartige Entwicklung. Die Umsetzung sollte damit für dich kein Problem sein und so benötigst du nicht für jedes Feld eine eigene Suche.


Enthaltene Themen:
RAPBTPSucheREX2
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 - CDS Pattern

Kategorie - ABAP

Wie geht eigentlich das CDS Pattern und was hat CDS-only damit zu tun? In diesem Artikel schauen wir auf die Architektur und Nutzung des Patterns.

28.11.2025

Recycling Heroes - Kontakt App

Kategorie - ABAP

In diesem Tutorial modellieren wir eine RAP Anwendung von der Datenbank, über das Modell und das UI, bis zum Deployment und Bereitstellung im System. Damit solltest du den vollen Entwicklungszyklus für modernen ABAP Cloud Anwendungen lernen.

25.11.2025

RAP - EML Varianten

Kategorie - ABAP

Wenn du EML verwendest, um mit dem ABAP RESTful Application Programming Model zu interagieren, stehen dir aktuell mehrere Varianten zur Verfürgung. Schauen wir sie uns einmal im Detail an.

16.09.2025

RAP - Generator (from Scratch)

Kategorie - ABAP

Deine Entwicklung mit RAP fühlt sich manchmal sehr langsam an? Generatoren nehmen dir die Arbeit ab, um den eigentlich Stack aufzubauen und wiederkehrende Arbeit abzunehmen.

05.08.2025

RAP - Aktion (Verarbeitungsoptionen)

Kategorie - ABAP

Wie aktivierst du eigentlich den Multi-Select in RAP und steuerst die verschiedenen Verarbeitungsoptionen? Hier schauen wir uns die verschiedenen Möglichkeiten im Framework an.

01.08.2025