Sortierung und Editierbarkeit im ALV(OO)-Grid

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

Sortierung und Editierbarkeit im ALV(OO)-Grid

Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
Hallo,

ich benutze einen ALV-Grid als Erfassungstool.
Das beinhaltet das Zellen bei Bedarf auf editierbar oder nicht editierbar bzw neue Zeilen angelegt und alte Zeilen kopiert oder gel�scht werden k�nnen.

Die Funktionen Kopieren, Neuanlage und L�schen habe ich selber mit Logik hinterlegt.

Das funktioniert soweit ganz gut.
Ich kann neu anlegen, �ndern oder l�schen.
In den jeweiligen Events(user_command, data_changed)
wird die Tabelle ge�ndert und mit der Methode refresh_table_display an das GRID �bermittelt.

Bei einem der ersten Vortests fiel aber auf, da� wenn das Programm mit einer Anzeigevariante aufgerufen wird, er beim aktualisieren v�llig durcheinanderkommt.(Sortierung zb. nach Datum)

Das Programm �ndert dann S�tze mit einem v�llig anderen Index als die die er �ndern sollte.
(z.B. �ndern des Datums in Satz 1 bewirkt das er laut Sortierung an Index 3 rutscht, das macht er auch noch, aber leider wird jetzt Satz 2, der jetzt nat�rlich auf Index 1 rutscht mit dem gleichen Wert wie Satz 3 modifiziert)

Beim debuggen fiel mir auf, das in der internen Tabelle alle Eintr�ge die korrekten Werte enthalten.
Trotz des Aufrufes von der Methode refresh_table_display wird das Grid falsch dargestellt.

Vielleicht kann mir ja jemand weiterhelfen.
Die letzte L�sung w�re die Sortierungs und Anzeigevariantenfunktion zu entfernen. Aber eigentlich sollte es doch anders funktionieren.

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


Beitrag von Heiner Tiling (ForumUser / 15 / 0 / 0 ) »
Hallo,

ich habe zwar nicht alles ganz nachvollziehen können, aber ich würde folgendes Vorgehen mal ausprobieren:

- nach dem aktualisieren der Anzeige auch einen Dispatch machen (Call Method <grid>->dispatch). Hierdurch wird die aktuelle Anzeigetabelle in die itab geschrieben. nun die itab wie gewünscht ändern und dann neu ausgeben.

- zur Editierbarkeit eines Feldes muss der Feldkatalog beim entsprechenden Feld das Edit-Flag setzen. (ls_fcat-edit = 'X'.).

Ich hoffe es hilft weiter.

Gruß
Heiner

Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
Hallo Heiner,

Danke für deine Tipps, leider beseitigen sie das Problem nicht. Den dispatch hatte ich schon drin und im Feldkatalog setzte ich das Edit-Flag.
Laut Debugger werden mir im Event DATA_CHANGED in der internen Tabelle die richtigen Werte angezeigt.(danach rufe ich die Methode refresh_table_display auf)
Meine Problematik scheint darin zu bestehen, das bei sortierten Listen(z.b. mit Anzeigevariante)
falsche Zeilen aktualisiert werden.
*
Beispiel
*
Ausgangsliste:
Sortiert nach Kundennummer
Sp.Kunnr Sp.Name Sp.Ort
5001345 AEG Nürnberg
5001445 Siemens München
5001545 RAG Essen
*
Ich füge eine neue Zeile ein.
Da sie initial ist wird sie laut Sortierung an Stelle 1 gesetzt
Sp.Kunnr Sp.Name Sp.Ort
0000000
5001345 AEG Nürnberg
5001445 Siemens München
5001545 RAG Essen
*
Ich pflege den initialen Eintrag.
Sp.Kunnr Sp.Name Sp.Ort
5001450 Daimler Stuttgart
5001345 AEG Nürnberg
5001445 Siemens München
5001545 RAG Essen
*
Nach dem Event DATA_CHANGED wird der gerede gepflegte Eintrag richtigerweise zwischen Siemens und RAG gesetzt.
Aber und da ist mein Problem: Der nach Index 1 rutschende Eintrag AEG bekommt die gleichen Werte wie der gerade neu eingefügte Satz Daimler.
*
Sp.Kunnr Sp.Name Sp.Ort
5001450 Daimler Stuttgart
5001445 Siemens München
5001450 Daimler Stuttgart
5001545 RAG Essen
*
In der internen Tabelle stehen die Einträge genau wie ich sie brauche, sobald die Liste allerdings angezeigt wird ist die (in diesem falle) erste Zeile fehlerhaft. (Vielleicht reicht in diesem Fall ein
refresh_table_display einfach nicht aus)
*
Dieses Verhaltensmuster habe ich nur bei sortierten Listen. Lasse ich eine Sortierung nicht zu und übernehme die Sortierung programmintern, läuft alles normal.
*
Muss ich vielleicht vorher erst abfragen ob die Liste sortiert(gefiltert) ist?

Ralf

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo Ralle,

diese Frage wurde hier im Forum schon einmal gestellt.
Damals wurde m.W. empfohlen, eine Tabelle mit den Daten zu halten und darauf die Änderungen anzuwenden und für die Anzeige eine spezielle Anzeigetabelle aufzubauen, die an den ALV übergeben wird.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Flo (Specialist / 161 / 0 / 0 ) »
Hier mal was zu Editierfunktionen und Grids mit dem Event HANDLE DATA CHANGED

* see SAP-Note 453255 ALV-Edit: Beratungshinweis zum Prüfprozess

Ein typischer Fehler der Verwendung des eingabefähigen ALV Grids ist die Verwendung eines Tabellenrefreshs im data_changed Eventhandler. Ein damit verwandter Fehler ist die direkte Manipulation der Datentabelle während des Events. Beide Fehler führen dazu, daß die Daten, welche der ALV verwendet und diejenigen des Anwendungsprogramms nicht mehr übereinstimmen. Dies kann zu Programmabbrüchen, häufiger jedoch zu Fehlern in der Programmlogik führen, insbesondere

o Datenänderungen im event handler werden nicht vom ALV übernommen.

o Daten gehen gänzlich verloren

o Daten werden überschrieben

Beitrag von ralle (ForumUser / 49 / 0 / 0 ) »
danke, dann weiß ich ja Bescheid.
Das dürfte der Fehler sein.

Ralf

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Hallo,

hast du beim refresh der Tabelle mit der Methode den Parameter - zeilen-/spaltenstabil - auch mit versorgt? Vielleicht ist das der Fehler ?!

Gruss Jens
thanks Jens

Seite 1 von 1

Vergleichbare Themen

4
Antw.
5085
Views
ALV Grid Sortierung aktualisieren im grid 1 und grid 2
von c oco » 06.02.2012 10:09 • Verfasst in ABAP Objects®
3
Antw.
2407
Views
ALV grid - Sortierung über Summen
von Martin_1 » 15.02.2005 14:18 • Verfasst in ABAP® Core
3
Antw.
2442
Views
ALV Grid - Sortierung und Filterung entfernen
von der_neuling » 29.01.2021 12:28 • Verfasst in ABAP® für Anfänger
10
Antw.
1265
Views
ALV Grid Sortierung - Doppelte Werte gruppieren
von der_neuling » 05.05.2022 16:56 • Verfasst in ABAP® für Anfänger
4
Antw.
6935
Views
ALV und Editierbarkeit
von Mrs. Hilflos » 12.12.2006 11:43 • Verfasst in ABAP Objects®

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 27 Minuten von Lukas Sanders 2 / 783
Dialog-Container mit Toolbar/Status
vor 13 Stunden von black_adept gelöst 21 / 2612

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

Daten an Tabelle binden
vor 27 Minuten von Lukas Sanders 2 / 783
Dialog-Container mit Toolbar/Status
vor 13 Stunden von black_adept gelöst 21 / 2612

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2399
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8984