
Vom ALV zum List Report (Selektion)
Du willst von einem Report mit ALV auf ein RAP Objekt mit List Report umsteigen? Wo findest du eigentlich die verschiedenen Funktionen für die Selektion? Schauen wir uns den Vergleich im Detail an.
Inhaltsverzeichnis
In diesem Artikel werfen wir einen Blick auf die möglichen Einstellungen bei der Selektion und wie diese in den beiden Varianten funktionieren.
Einleitung
Ein wichtiger Bestandteil einer Anwendung, die Daten anzeigt, ist die Selektion der Daten. Dabei werden Filter vorgegeben, die die Menge an möglichen Daten einschränken sollen und so verschiedene Optionen geben, um auf die Daten am Ende zugreifen zu können. Dabei gibt es hier verschiedene Möglichkeiten, die der SAP-Standard in der SAP GUI anbietet, wie zum Beispiel die Selektion über Select-Options, einen Parameter, eine Checkbox oder Radiobuttons, die bestimmte Einschränkungen vornehmen.
Aufbau
Gehen wir dazu in den Vergleich und schauen uns die alte Welt mit der neuen Welt an, indem wir unsere Anwendungen miteinander vergleichen.
SAP GUI
Starten wir die Transaktion oder die Anwendung direkt über die SE38, dann landen wir auf dem Selektionsbild. Das Selektionsbild zeigt jeweils nur die verschiedenen Kriterien an, die zur Verfügung stehen, um die Daten einzuschränken. In unserem Beispiel vier Felder. Auf dem Selektionsbild werden keine weiteren Daten oder Ausgaben angezeigt. Dies ist zur Vorbereitung unserer Auswahl der Einstellung.
SAP Fiori
Im List Report in Fiori Elements werden die Filter oberhalb der Tabellenausgabe angezeigt. Das heißt, nach einem Klick auf die Kachel im Fiori Launchpad landen wir direkt im List Report, wo wir Filter und mögliche Daten auf einen Blick sehen. In diesem Beispiel haben wir nur einmal die Filterbar als Screenshot aufgenommen, diese beinhaltet alle angezeigten Filter.
Der Vorteil bei einer Fiori-Elements-Anwendung ist der Button "Adapt Filters", der auf dem Screenshot dargestellt ist. Über diesen können wir weitere Filter dynamisch einblenden, was auf einem Selektionsbild erst einmal so nicht im Standard vorgesehen ist. Angeboten werden alle Filterkriterien, die für diese Entität aktiviert sind, was normalerweise fast alle Felder sind, außer sie sind virtuelle Felder, berechnete Felder oder wurden explizit deaktiviert.
Elemente
Gehen wir in diesem Kapitel einmal auf die Darstellung der verschiedenen Einschränkungen und Möglichkeiten ein und schauen auf die Umsetzung in beiden Welten.
Select-Option
Die Select-Option ist das flexibelste Element, das es auf dem Selektionsbild gibt, da, wenn sie leer gelassen wird, alle Einträge selektiert werden. Ansonsten können wir verschiedene Filter anwenden. In unserem Beispiel haben wir ein Between (BT) verwendet und ein Equal (EQ), um die Datensätze zu ermitteln. In der Darstellung wird die Select-Option angezeigt, jeweils der erste Eintrag. Am hinteren Button erkennt man, dass noch weitere Einstellungen gepflegt sind.
Die gleiche Einstellung haben wir nun auch in der Fiori-Anwendung vorgenommen. Hier versucht das System, die verschiedenen Einträge innerhalb des Feldes zu visualisieren, solange der Platz reicht. Daher sehen wir hier ganz gut den Between-Wert, aber auch den Equal-Wert, der gesetzt wurde. Die Sichtbarkeit ist immer abhängig von der verfügbaren Auflösung.
Parameter
Ein Parameter lässt jeweils nur einen Wert zu, den wir über das Selektionsbild eingeben können. Der Nachteil eines Parameters ist: Wird dieser leer gelassen, wird dann auch auf der Datenbank zum Beispiel gegen den Wert leer geprüft, was dafür sorgen kann, dass wir keine Ergebnisse erhalten. Ein Parameter enthält nur einen Feldwert und keine weiteren Vergleichsoperationen.
Fiori verwendet für den Parameter auch eine Select-Option. Dadurch ist es möglich, einen Wert leer zu lassen und trotzdem Ergebnisse zu erhalten. Ist dies nicht gewünscht, wie in unserem Fall, müssen wir das Feld auf Mandatory setzen (siehe weiter unten im Artikel).
Damit wir in das Feld nur einen einzigen Wert eingeben können, definieren wir über die Annotation den Filter auf Single. So lässt das System nur zu, dass wir genau einen Wert eingeben und keine Möglichkeit haben, weitere Einschränkungen vorzunehmen, wie ein Größer-gleich, Kleiner-gleich oder Between. Es wird dann immer Equal (EQ) ans Backend übertragen.
@Consumption.filter.selectionType: #SINGLE
DocType,
Checkbox
In einer klassischen GUI-Anwendung können wir auch Checkboxen verwenden, um diese in Selektionen anzugeben. Dabei haben wir die Möglichkeit, ein Ja (X) oder Nein (Leer) zu setzen, indem wir die Checkbox anhaken oder eben leer lassen. Wie auch beim Parameter kann dies zu entsprechenden Problemen führen, wenn wir zum Beispiel Einträge mit beiden Werten haben möchten.
In Fiori wird dafür ein Dropdown zur Verfügung gestellt, welches automatisch vom System generiert wird, wenn wir zum Beispiel den Datentyp ABAP_BOOLEAN verwenden. Bei dieser Option ist es aber auch möglich, ein "Not Selected" zu setzen, das heißt, die Checkbox ist weder True noch False und wird damit bei der Selektion ignoriert. Damit haben wir eine flexible Möglichkeit zu prüfen, wenn es uns egal ist, ob ein Ja oder Nein in einem Feld steht, sondern wir alle Inhalte sehen wollen. Im Hintergrund wird wieder eine Select-Option verwendet.
Pflichtfelder
Ein wichtiger Bestandteil ist dabei auch ein Pflichtfeld, um damit zu klassifizieren, ob eine Eingabe verpflichtend ist. In diesem Fall haben wir unseren Parameter als Pflichtfeld (OBLIGATORY) gesetzt. Es wird ein Stern davor gesetzt, um darauf hinzuweisen, dass die Eingabe benötigt wird.
In der Filterbar wird bereits nach dem Öffnen der Anwendung eine rote Fehlermeldung am Feld gezeigt, noch bevor wir eine Eingabe getätigt haben. Damit sind die Pflichtfelder noch stärker hervorgehoben als in der SAP GUI. Grundsätzlich ist auch hier ein Stern vorhanden, um das Feld als Pflichtfeld zu markieren.
Als Annotation verwenden wir in diesem Fall ein Mandatory, welches dann dafür sorgt, dass das Feld eine Pflichteingabe benötigt. Damit erreichen wir das Verhalten der SAP GUI und erzwingen eine Eingabe vom Anwender.
@Consumption.filter.mandatory: true
DocType,
Ausführung
In der SAP GUI findest du dann den klassischen Ausführen-Button oder auch die Taste F8 über das UI. Je nach gewähltem Theme kann der Button dabei in der Buttonleiste im oberen Bereich sein, aber auch im unteren Bereich, wenn es sich um ein moderneres Theme handelt. Hier ist das Design abhängig vom jeweils gewählten Theme innerhalb der SAP GUI. Nach dem Ausführen der Selektion wird in den meisten Fällen dann das ALV angezeigt, welches die Daten beinhaltet, die durch den Filter gelaufen sind. Das eigentliche Selektionsbild ist dann erst einmal nicht mehr sichtbar.
Im List Report wird nach dem Klick auf den Go-Button oder über ENTER die Selektion gegen die gebundene Entität in der Tabelle ausgeführt. Die Daten werden dann im unteren Bereich direkt unter der Filterbar angezeigt und können eingesehen werden. Ein Unterschied hierbei ist, dass der Bereich der Selektion in der Anwendung immer noch verfügbar ist, sodass Filter dynamisch angepasst werden können. In den meisten Fällen werden aber auch nicht alle Daten direkt von der Datenbank gezogen, sondern über eine sogenannte Pagination nur ein Teil der Daten angezeigt, um die Performance zu erhöhen und die Übertragung vom Server zum Browser zu optimieren.
Vollständiges Beispiel
In diesem Kapitel findest du alle Ressourcen zum Vergleich der beiden Anwendungen. Wir haben das RAP-Objekt in ein neues Repository gelegt, damit du es klonen kannst. Das Programm ist lediglich eine Ressource, der ebenfalls in diesem Repository liegt. Tabelle und Generierungsklasse kannst du jeweils aus dem Repository verwenden, um auch die Daten für den Report generieren zu können. Bist du auf dem gleichen System, dann brauchst du die Tabelle und die Klasse nur einmal.
Fazit
Grundsätzlich sind alle Funktionen aus der SAP-GUI-Welt auch noch in der Fiori-Welt verfügbar, auch wenn sie vereinfacht wurden und zum Beispiel nur noch Select-Options verwenden, was aber auch wiederum die Flexibilität der einzelnen Felder erhöht. Grundsätzlich musst du hierbei etwas umdenken, wenn es um den Zugriff auf die Daten geht.











