Warum das? Wie aktualisierst du denn die Daten?ralf.wenzel hat geschrieben:Das Problem ist, dass dabei die Sortierung natürlich verlorengeht.
Weil der Anwender sehen soll, wenn ein anderer inzwischen Daten verändert hat. Darum wird nach jeder Benutzeraktion komplett neu selektiert. Ja, macht die Anwendung nicht schneller, gerade bei der komplexen Selektion, aber in diesem Falle ist des Users Wille sein Himmelreich.ewx hat geschrieben:Warum das? Wie aktualisierst du denn die Daten?ralf.wenzel hat geschrieben:Das Problem ist, dass dabei die Sortierung natürlich verlorengeht.
Normalerweise macht man das über ->refresh( ).
Da sollte die Sortierung beibehalten werden.
Wen ich einen Refresh mache, werden die Daten doch nicht neu selektiert. Und wenn ich die Daten neu selektiere, sind sie eben nicht in der Reihenfolge, in der der Anwender die Liste sortiert hat.ewx hat geschrieben:Das heißt, du baust den SALV nach der Selektion komplett neu auf?
Falls ja, warum nicht REFRESH()?
ewx hat geschrieben:Das heißt, du baust den SALV nach der Selektion komplett neu auf?
Ja.ewx hat geschrieben:Ich frag nochmal:ewx hat geschrieben:Das heißt, du baust den SALV nach der Selektion komplett neu auf?
Code: Alles auswählen.
REPORT.
DATA h_land1 TYPE land1.
SELECT-OPTIONS s_land1 FOR h_land1.
*----------------------------------------------------------------------*
* CLASS l DEFINITION
*----------------------------------------------------------------------*
CLASS l DEFINITION.
PUBLIC SECTION.
CLASS-METHODS disp.
CLASS-METHODS load.
CLASS-DATA mt_data TYPE STANDARD TABLE OF t005.
CLASS-DATA mr_salv TYPE REF TO cl_salv_table.
CLASS-DATA mr_dock TYPE REF TO cl_gui_docking_container.
ENDCLASS. "l DEFINITION
*----------------------------------------------------------------------*
* CLASS l IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS l IMPLEMENTATION.
METHOD load.
SELECT * FROM t005 INTO TABLE mt_data WHERE land1 IN s_land1.
ENDMETHOD. "load
METHOD disp.
IF mr_salv IS INITIAL.
CREATE OBJECT mr_dock
EXPORTING
side = cl_gui_docking_container=>dock_at_bottom
ratio = 85
no_autodef_progid_dynnr = space
EXCEPTIONS
others = 6.
cl_salv_table=>factory( EXPORTING r_container = mr_dock
IMPORTING r_salv_table = mr_salv
CHANGING t_table = mt_data ).
mr_salv->display( ).
ELSE.
mr_salv->refresh( refresh_mode = IF_SALV_C_REFRESH=>full ).
ENDIF.
ENDMETHOD. "disp
ENDCLASS. "l IMPLEMENTATION
AT SELECTION-SCREEN.
l=>load( ).
l=>disp( ).
Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
ralf.wenzel