Möchte man Daten in einem ALV automatisch sortieren, dann muss man mit Sortierungsregeln arbeiten. Das klingt im ersten Moment vielleicht etwas kompliziert, lässt sich im Web Dynpro allerdings recht einfach umsetzen.
In meinem kleinen Beispiel besteht der ALV Datenkontext aus mehreren Feldern mit Produktinformationen. Damit sich die User schnell zurecht finden, möchte ich die Daten nach der Produkt ID und den Produkt Texten Sortieren. Man benötigt eine Referenz auf das Tabellen Objekt um die Tabellen Felder auslesen zu können. Danach kann man die benötigen Felder in einem Loop oder einem Array Zugriff ermitteln und eine Sort Rule erzeugen.
Der Sort Rule kann man beim erzeugen einige Parameter mitgeben. Ein Blick in die Methodendefinition kann hier nicht schaden. Danach noch die Sortierposition gesetzt und man ist auch schon fertig.
METHOD sort_alv. DATA: obj_table TYPE REF TO cl_salv_wd_config_table. * Get table reference obj_table = wd_this->wd_cpifc_cmp_selectable_alv( )->get_model( ). * Get table fields DATA(lt_fields) = obj_table->if_salv_wd_field_settings~get_fields( ). * Set or delete filter rule LOOP AT lt_fields ASSIGNING FIELD-SYMBOL(<wa_fields>). IF <wa_fields>-fieldname = 'PRODUCT_ID'. * Set sort rule DATA(obj_sort_rule) = <wa_fields>-r_field->if_salv_wd_sort~create_sort_rule( group_aggregation = abap_true ). obj_sort_rule->set_sort_position( '1' ). ELSEIF <wa_fields>-fieldname = 'TXTSH'. * Set sort rule DATA(obj_sort_rule) = <wa_fields>-r_field->if_salv_wd_sort~create_sort_rule( group_aggregation = abap_false ). obj_sort_rule->set_sort_position( '2' ). ENDIF. ENDLOOP. FREE: lt_fields. FREE: obj_table. ENDMETHOD.
Comments are closed.