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

RAP - Suche

434

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 - Ä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