CL_SALV_TABLE: Sortierung retten

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

CL_SALV_TABLE: Sortierung retten

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Moin,

ich habe einen CL_SALV_TABLE (ja, immer noch denselben ;) ), bei dem ich zwischendurch die Daten neu selektiere und in die interne Tabelle schreibe. Das wird zum Problem beim Sortieren:

* Anwender sortiert
* Anwender führt ein Benutzerkommando aus
* Daten werden neu selektiert und in die SALV-Tabelle geschrieben

Das Problem ist, dass dabei die Sortierung natürlich verlorengeht. Ich müsste mir die Sortierung wegsichern und auf die neu selektierten Daten anwenden. Genauso mit Filtern, Zwischensummen, etc.

Was ist die einfachste Möglichkeit, das zu machen? CL_SALV_SORT->get_sorts( ) liefert für alle Spalten meiner Tabelle ein leeres Objekt (=nicht sortiert), was eigentlich nicht sein kann.... Außerdem macht das tierisch Arbeit, die Sortierkriterien für jede einzelne Spalte einzeln zu holen und zurückzuschreiben.

Wer kennt eine weniger aufwendige Lösung (und eine, die funktioniert, denn getrost( ) geht ja offenbar nicht)?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
ralf.wenzel hat geschrieben:Das Problem ist, dass dabei die Sortierung natürlich verlorengeht.
Warum das? Wie aktualisierst du denn die Daten?
Normalerweise macht man das über ->refresh( ).
Da sollte die Sortierung beibehalten werden.

Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
ewx hat geschrieben:
ralf.wenzel hat geschrieben:Das Problem ist, dass dabei die Sortierung natürlich verlorengeht.
Warum das? Wie aktualisierst du denn die Daten?
Normalerweise macht man das über ->refresh( ).
Da sollte die Sortierung beibehalten werden.
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.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Das heißt, du baust den SALV nach der Selektion komplett neu auf?
Falls ja, warum nicht REFRESH()?

Übrigens ein Paradebeispiel für ABAP Messaging Channels!
...wenn ich das richtig verstanden habe.

Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
ewx hat geschrieben:Das heißt, du baust den SALV nach der Selektion komplett neu auf?
Falls ja, warum nicht REFRESH()?
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.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Ich frag nochmal:
ewx hat geschrieben:Das heißt, du baust den SALV nach der Selektion komplett neu auf?

Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
ewx hat geschrieben:Ich frag nochmal:
ewx hat geschrieben:Das heißt, du baust den SALV nach der Selektion komplett neu auf?
Ja.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Und warum machst du dann nicht die Selektion und rufst hinterher den REFRESH 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( ).
Filter und Summen bleiben erhalten.
Wichtig ist aber der REFRESH_MODE => FULL!

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
ralf.wenzel


Re: CL_SALV_TABLE: Sortierung retten

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Ich habe mich missverständlich ausgedrückt (obwohl deine Frage eigentlich präzise war). Ich meinte, ich baue die Datenbasis neu auf, das SALV Objekt selbst (natürlich) nicht, das wäre auch reichlich dämlich. Auf präzise Fragen sollte man präzise antworten, sorry. Das war mein Fehler.

Warum es trotzdem nicht lief? Ganz einfach:

Irgendwann ist jede Anwendung so komplex, dass man sie selbst nicht mehr überblickt - ich habe tatsächlich einmal "soft" ge-refresh-t. Ich habe das jetzt gekapselt, damit ich den Aufruf nur noch einmal habe.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: CL_SALV_TABLE: Sortierung retten

Beitrag von black_adept (Top Expert / 3944 / 105 / 886 ) »
Fehlposting
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

2
Antw.
3831
Views
Salv Table - Layouts speichern
von JohnLocklay » 14.06.2019 11:33 • Verfasst in ABAP Objects®
3
Antw.
1923
Views
GUI Status verhindert on click Event des SALV Table
von Pinguincommander » 05.02.2019 09:51 • Verfasst in ABAP® Core
1
Antw.
4729
Views
sorted table, hashed table: Übergabe Workarea -> Performa
von Jürgen Fischer » 30.01.2006 08:09 • Verfasst in ABAP® Core
0
Antw.
975
Views
SALV-Klassen
von mumcs » 27.02.2006 19:23 • Verfasst in ABAP® für Anfänger
5
Antw.
6701
Views
SALV Refresh
von Mustafapmk0 » 06.02.2017 15:50 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 73

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 73

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 132
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 166