
RAP - Analytical Table
Schauen wir uns einmal in RAP das letzten fehlende Puzzlestück zur Ablösung des ALVs an und wie wir die Analytical Table mit wenig Aufwand einrichten können.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns die Analytical Table an und wie wir damit einige der fehlenden Funktionalitäten des ALVs erreichen können.
Einleitung
Der ALV war bisher das Standard Werkzeug eines ABAP Entwicklers, da damit alle Grundfunktionalitäten des Entwicklers dargestellt werden konnten ohne viel Aufwand in der Implementierung zu haben. Sortieren, Gruppieren, Filtern und Excelexport, waren bisher als Standard in der Anzeige verfügbar, welche auch im klassischen List Report in Fiori Elements zur Verfügung stehen. Allerdings fehlte bisher ein Feature, die Summen und Zwischensummen, die im ALV ebenfalls leicht erstellbar waren. Dazu werden wir heute unsere Sales App erweitern und den Table Type anpassen den der List Report im Moment verwendet.
Table Type
Generieren wir den klassischen List Report, dann ist dieser meist gleich aufgebaut. Im oberen Teil erhalten wir eine Filterbar, um die Daten im unteren Teil einzuschränken und damit zu arbeiten. Im unteren Teil wird eine Tabelle zur Ausgabe der Daten angezeigt und wenn wir auf ein Item klicken, gelangen wir zur Object Page, wo wir noch einmal mehr Informationen und Details bekommen.
Die Tabelle im unteren Teil kann allerdings durch Annotationen, Objekte oder beim Generieren verändert werden, um verschiedene Szenarien damit abzudecken. Daher gibt es für diesen Bereich bereits unterschiedliche Typen:
- Responsive Table - Dieser Typ ist für unterschiedliche Größen von Displays gedacht. Es werden nur so viele Informationen angezeigt, wie auf das Bild passen. Die Spalten, die zu viel sind, werden ausgeblendet.
- Grid Table - Es werden alle Spalten angezeigt, die zusätzlich eine fixe Breite haben. Informationen, die nicht auf das aktuelle Bild passen können per Scroll-Bar erreicht werden. Das Verhalten ist ähnlich einem zu großen ALV.
- Tree Table - Die Informationen werden hierarchisch ausgegeben und als Baum in der Liste dargestellt (siehe Artikel).
- Analytical Table - Es sind analytische Funktionen wie Summen und Zwischensummen möglich (dieser Artikel).
Analytical Table
Mit dem letzten Release 2511 wurde im ABAP Environment das letzte fehlende Feature in Form der Analytical Table ausgeliefert. Damit können wir die Summen und Zwischensummen in der Ausgabe aktivieren, allerdings mit gewissen Einschränkungen, wie wir gleich sehen werden.
Aktivierung
Um die Analytical Table zu aktivieren, reichen uns im Grunde zwei Annotationen im Projection View ZBS_C_SASale. Auf Ebene des Header müssen wir zuerst die Aggregation aktivieren. Hier stehen uns verschiedene Optionen wie FULL oder RESTICTED zur Verfügung. Aktuell aktiviert nur das Attribut #FULL die neue Tabelle.
@OData.applySupportedForAggregation: #FULL
Dann müssen wir noch auf den jeweiligen Elementen im Core Data Service die Default Aggregation aktivieren. Über die Annotation "Aggregation.default" setzen wir den jeweiligen Modus. Für den Verkauf setzen wir die Summe und für die Unterschiede jeweils den durchschnittstellen Wert, da uns der durchschnittliche Verlust pro Vertrag oder Gruppierung interessiert. Damit wäre die eigentliche Aktivierung abgeschlossen und die Umstellung auf die Analytical Table.
@Aggregation.default: #SUM
SalesVolume,
@Aggregation.default: #AVG
DifferenceAmount,
@Aggregation.default: #AVG
DifferenceQuantity,
Einschränkung
Führen wir unsere Anwendung aus, erhalten wir allerdings im Moment einen Fehler und wenn wir uns das Service Binding näher anschauen eine Fehlermeldung. Aktuell werden Funktionen rund um virtuelle Felder nicht unterstützt, wie die Elemente allein oder die Sortierung der Elemente. Daher müssen wir zur Demonstration die verschiedenen Elemente auskommentieren.
- Die Felddefinitionen auf Ebene des Projection Views (CDS ZBS_C_SASale)
- Die virtuellen Felder in der Metadata Extension (Metdata ZBS_C_SASale)
- Die gruppierten Felder in der Metadata Extension (Metdata ZBS_C_SASale)
Test
Schauen wir uns verschiedene Varianten der Analytical Table an und wie die Features auf unsere Daten reagieren.
Gesamtsumme
Nachdem wir die Anwendung gestartet haben, sind im Moment noch keine Zwischensummen definiert. Allerdings sehen wir, dass sich im unteren Bereich der Tabelle etwas geändert hat.
Da wir verschiedene Währungen in der Spalte verwenden, wird die Summe nicht sofort angezeigt. Um die Summe in diesem Fall zu sehen, müssen wir auf den Link "Show Details" klicken und bekommen dann die Auflistung der verschiedenen Summen in den verschiedenen Währungen.
Zwischensummen
Über die Eigenschaften der Tabelle können wir nun über die Gruppierung Zwischensummen erzeugen. Dazu wechseln wir auf den Reiter "Group" und definieren eine Gruppe Währung und eine zweite Gruppe Partner.
Es wird nun die Tabelle mit Summen und Zwischensummen geladen. In dem folgenden Beispiel haben wir auch einmal die Elemente geöffnet, um die verschiedenen Ebenen darzustellen. Da wir nur jeweils eine Währung haben, werden die Zwischensummen direkt ausgegeben und es entfällt die Anzeige per Link.
Möchtest du eine Gruppierung als Standard definieren, da kannst du eine entsprechende Variante anlegen und speichern oder direkt als Annotation am View hinterlegen. Weitere Informationen dazu in diesem Artikel.
Multi-Input Field
Auf der Ebene der Analytical Table funktioniert aktuell unser Multi-Input Field nur eingeschränkt. Die Spalte bleibt im Moment leer und das Feature ist nicht aktiv (nur Summe). Bilden wir dann Zwischensummen und öffnen die verschiedenen Zeilen, dann werden die gepflegten Elemente in der Anzahl angezeigt oder wenn nur ein Element vorhanden ist. Hier gibt es noch gewisse Unschärfen in der Darstellung des Feldes in der Spalte.
Vollständiges Beispiel
Das vollständige Beispiel findest du in GitHub im entsprechenden Paket für die Sales App. Die Änderungen aus diesem Artikel findest du in diesem Commit und kannst damit die Änderungen, plus die Zusatzinformationen, nachvollziehen.
Fazit
Die Analytical Table liefert die letzten Features für die Ablösung des ALVs, allerdings müssen wir uns im Moment zwischen verschiedenen Features entscheiden, die unser UI haben soll. Hoffentlich wird sich dieser Punkt noch einmal in Zukunft ändern und wir erhalten eine bessere Flexibilität bei der Nutzung der verschiedenen Table Types.
Quelle:
SAP Help - Developing Read-Only RAP Analytical Tables
ABAP Environment Roundtable #29







