
Das Sortieren in einer Table gestaltet sich unterschiedlich, je nachdem, ob der Applikationsparameter WDUIGUIDLINE auf GL11 oder GL20 gesetzt ist.
WDUIGUIDELINE=GL11
Sie können festlegen, dass eine Table bzw. die einzelnen Spalten ( TableColumn ) durch einen Benutzer sortierbar sind. Dafür müssen die folgenden Bedingungen erfüllt sein:
Die Table muss enabled sein ( Table.enabled = TRUE)
Die Table-Action Table.onSort muss aktiviert sein (also einen Action-Handler haben)
Die Tabellenspalten sind sortierbar, falls die Eigenschaft TableColumn.sortState auf none, up oder down gesetzt ist (also nicht auf notSortable steht).
Wird auf den Tabellenspalten-Header geklickt, so wird die Eigenschaft TableColumn.sortState auf down oder up gesetzt und der Action-Handler für Table.onSort ausgeführt. Der Sortierzustand wird dabei durch Klick auf die Sortierikone in der Spaltenüberschrift umgeschaltet ( ). Dabei wird der Sortierzustand anderer sortierbarer Spalten der Table auf none zurückgesetzt.
Das Ereignis Table.onSort hat die unter Table-Ereignisse aufgeführten Event-Parameter.
Die eigentliche Sortierung muss die Anwendung selber vornehmen. Sie kann dazu in einfachen Fällen den Methoden-Handler und die dortige Funktion IF_WD_TABLE_METHOD_HNDL~apply_sorting() verwenden. Sie finden ein Beispiel im System in der Component DEMO_TABLE.
Falls zusätzlich noch die Action Table.onColumnSelect gebunden wurde, teilt sich der TableHeader in zwei Bereiche: die eine Seite (mit der Caption) ist die Klickfläche, die das Event Table.onColumnSelect auslöst. Die andere Seite ist eine Klickfläche, die das Sortieren wie oben beschrieben durchführt. Beim Mouse-Hover wird dann auch ein weißer Strich gezeichnet, der beide Klickbereiche trennt. Der Mauszeiger deutet an, dass sortiert werden kann. Sie finden ein Beispiel zum Testen im System in der Component WDR_TEST_TABLE unter Cell Popin und Sortieren und Filtern.
Beispiel für die visuelle Darstellung:
Falls Sie das Property table.multiColumnSorting einschalten, kann der Benutzer per Klick und gedrückter STRG-Taste auch Mehrfachsortierung durchführen. Dann wird der Event-Parameter multiple des onSort-Events auf X gesetzt. Auch hier ist die Anwendung für die korrekte Sortierung der Daten zuständig. Der Web Dynpro ABAP ALV beispielsweise beherscht diese Art der Sortierung.
WDUIGUIDELINE=GL20
Die Eigenschaften und Events der Table funktionieren in diesem Modus genauso wie unter GL11. Lediglich das Property MultiColumnSorting und das Event onColumnSelect werden ignoriert.
Der große Unterschied ist die Visualsierung. Eine sortierbare Spalte erhält ein Menü, das aufgeklappt wird, wenn man auf den Spaltenkopf klickt. Dort finden sich zwei Einträge für das auf- und absteigende Sortieren. Das Menü enthält noch weitere Einträge, falls das Filtern für diese Spalte aktiv ist.
Analog zu der hier beschriebenen Funktionalität wird beim Selektieren eines der Sortierpunkte im Menü das Ereignis Table.onSort ausgelöst und die entsprechenden Event-Parameter und TableColumn.sortState gesetzt.
Sie finden eine Beispielanwendung im System in der Component WDR_TEST_TABLE_BTC.
Einschränkungen für den Menü-Modus:
Es ist kein Table.onColumnSelect möglich.
Es ist kein Multi-Sorting möglich.