This is a test message to test the length of the message box.
Login
ABAP RAP Mehrere Filter, Sortierung, Gruppierung
Erstellt von Software-Heroes

RAP - Mehrere Filter und Einstellungen

89

Wie sieht es eigentlich aus, wenn wir in RAP mehrere Filter und Felder als Standard setzen wollen und dazu noch eine standardmäßige Sortierung benötigen?

Werbung


In diesem Artikel schauen wir uns an, wie wir mit Varianten mehrere Felder mit verschiedenen Filtern vorbelegen können und unsere Ausgabe sortieren und gruppieren können.

 

Einleitung

Im letzten Artikel hatten wir uns angeschaut, wie wir einen Standardwert auf einem Feld belegen, um so einen Filter vorzubefüllen. In diesem Artikel schauen wir, wie wir das für mehrere Felder und mit mehreren Abgrenzungen machen können. Dazu verwenden wir Selektions- und Präsentationsvarianten, um den ListReport zu beeinflussen. Dazu erweitern wir unser Report Pattern um die neuen Varianten.

 

Vorbereitung

Bevor wir in die Beispiele einsteigen, müssen wir noch den View für uns vorbereiten. Dazu benötigen wir für die folgenden Beispiele noch ein Feld als Selektion. Dazu ergänzen wir die Metadata Extension "ZBS_C_DRPCurrency".

@UI.selectionField: [{ position: 20 }]
Decimals;

 

Nach unserer Anpassung sieht die App erst einmal wie folgt aus, wir haben zwei zusätzliche Filter im oberen Teil der Anwendung. An der Liste hat sich erst einmal nichts geändert.

 

Präsentation

In diesem Kapitel schauen wir uns die Präsentationsvarianten und ihre Wirkung an.

 

Grundlage

Bei der Präsentationsvariante geht es um die Gruppierung und Sortierung der Ausgabe. Dabei können wir die verschiedenen Felder beim Laden der Liste beeinflussen. Dazu definieren wir einen "qualifier" für die Variante, über den wir die Variante identifizieren können. Als Basis definieren wir im Header nun die folgenden Annotationen.

@UI.presentationVariant: [ {
  qualifier: 'pVariant',
  visualizations: [{ type: #AS_LINEITEM }]    
} ] 

@UI.selectionPresentationVariant: [ { 
  presentationVariantQualifier: 'pVariant'
} ]

 

Dabei definieren wir eine Variante mit dem Namen "pVariant" und einer Visualisierung auf Zeilenebene. Da wir mehrere Varianten anlegen könnten, ordnen wir zum Abschluss die aktive Variante zu.

 

Sortierung

Nach der Grunddefinition gibt es erst einmal keine Änderungen in der Liste. Wollen wir nun eine neue Sortierung einführen, dann definieren wir Felder und Reihenfolge über die Variante.

sortOrder: [{ by: 'Currency', direction: #DESC }],

 

In diesem Fall erzeugen wir eine Sortierung absteigend über das Feld "Currency". Laden wir nun unsere App Preview, dann erhalten wir die folgende Änderung. Ebenfalls ist die Sortierung an dem Icon an der Spalte zu erkennen.

 

Gruppierung

Wollen wir nun zum Beispiel Gruppen erstellen, dann verwenden wir in der Variante den Zusatz "groupBy" und können dort eine Liste von Spalten hinterlegen. In Unserem Beispiel erzeugen wir eine Gruppe über den letzten Änderer.

groupBy: [ 'EditorName' ],

 

Laden wir nun die App erneut, dieses Mal ohne die Sortierung, dann erhalten wir eine gruppierte Ansicht.

 

Selektion

Die Selektionsvariante beeinflusst die Selektion unserer Liste. Damit können wir zum Beispiel einen komplexen Filter beim Laden setzen.

 

Grundlage

Die Grundlage ist ähnlich wie bei der Präsentationsvariante. Bei der Selektionsvariante erzeugen wir ebenfalls eine neue Variante mit eigener ID. Diese ID ordnen wir dann als aktive Variante zu.

@UI.selectionVariant: [{  
  qualifier: 'sVariant',
  filter: ''
}]   

@UI.selectionPresentationVariant: [ { 
  selectionVariantQualifier: 'sVariant'
} ] 

 

Mehrere Werte

Wollen wir nun mehrere Werte abgrenzen, können wir das zum Beispiel über den freien Filter machen. Dazu definieren wir uns einen Filter über vier Währungen. Hierbei müssen wir die alte Version des Vergleichsoperators verwenden (EQ).

filter: 'Currency EQ AED OR Currency EQ AFN OR Currency EQ EUR OR Currency EQ USD'

 

Schauen wir uns dann die Filterbar in der Anwendung an, dann wurden die 4 Währungen als Standardfilter übernommen.

 

Mehrere Felder

Wollen wir mehrere Felder mit Defaultwerten befüllen, dann können wir einfach einen entsprechend komplexen Filter vorbelegen. In diesem Fall setzen wir unsere Logik in Klammern und ergänzen um einen Filter auf den Dezimalstellen.

filter: '( Currency EQ AED OR Currency EQ AFN OR Currency EQ EUR OR Currency EQ USD ) AND Decimals EQ 2'

 

In der Anwendung sollten nun beide Filter vorbelegt sein und die Datenmenge entsprechend klein werden.

 

Vollständiges Beispiel

Die Änderungen findest du bei uns im GitHub Repository und noch einmal im speziellen in diesem Commit. Insgesamt haben wir die Metadata Extension um diese beiden Defaultvarianten ergänzt.

@UI.presentationVariant: [ {
  qualifier: 'pVariant',
  sortOrder: [{ by: 'Currency', direction: #DESC }],
  groupBy: [ 'EditorName' ],
  visualizations: [{ type: #AS_LINEITEM }]    
} ] 

@UI.selectionVariant: [{  
  qualifier: 'sVariant',
  filter: '( Currency EQ AED OR Currency EQ AFN OR Currency EQ EUR OR Currency EQ USD ) AND Decimals EQ 2'
}]   

@UI.selectionPresentationVariant: [ { 
  presentationVariantQualifier: 'pVariant',
  selectionVariantQualifier: 'sVariant'
} ] 

 

Sind alle beiden Varianten in der vollen Ausprägung aktiv, ändert sich nun unsere Liste zur folgenden Ausgabe. Es werden nur noch die 4 Einträge ermittelt, die Sortierung ist absteigend und es wird die Gruppierung auf den Änderer angezeigt.

 

Fazit

Über die Varianten können standardmäßig mehrere Filter gesetzt werden, es kann die Sortierung oder eine Gruppierung geändert werden. Grundsätzlich kann der Anwender über die App-Varianten das gleiche machen und sich auch neue Sichten speichern. Hier verhält sich die Liste die die ALV-Varianten.


Enthaltene Themen:
RAPBTPMehrere FilterSortierungGruppierung
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.


RAP - API Pattern

Kategorie - ABAP

In diesem Artikel schauen wir uns das API-Pattern für RAP an und wie du es flexibel in der ABAP Entwicklung einsetzen kannst, um Schnittstellen zur Verfügung zu stellen.

20.06.2025

RAP - Länge von Meldungen

Kategorie - ABAP

Deine Meldung wird bei der Ausgabe mit RAP abgeschnitten? Lass uns das Problem und eine Lösung anschauen.

13.05.2025

RAP - Suchhilfe und Schlüssel optimieren

Kategorie - ABAP

In diesem Artikel optimieren wir unsere Suchhilfen im Custom Pattern, verwenden das Additional Binding und machen unsere RAP Anwendung fit für den Endanwender.

06.05.2025

RAP - Festwert-Filter

Kategorie - ABAP

Wie verwendest du Festwerte aus einer Domäne für einen Filter und passt diesen nach deinen Bedüfnissen in RAP an? Mehr dazu hier.

02.05.2025

RAP - Custom Pattern (Verhalten)

Kategorie - ABAP

In diesem Artikel erweitern wir das Custom Pattern in RAP um zusätzliche Daten und Verhalten. Damit können wir Mehrwerte in der Implementierung schaffen.

29.04.2025