Und zwar habe ich ein editierbares ALV für das ich zum Ereignis data_changed die Methode on_data_changed registriert habe. Außerdem löse ich data_changed auch für Enter aus.
Das funktioniert soweit auch alles, die Methode wird durchlaufen und die eingegebenen Werte werden durch welche ergänzt, die ich aus der Datenbank gelesen habe.
Diese zusätzlich gelesenen Daten möchte ich nun mit ausgeben, also sie sollen dem Benutzer gleich angezeigt werden, nachdem er Enter gedrückt hat.
Dafür dachte ich, würde es reichen, die Daten in die Ausgabetabelle zu speichern (das tue ich) und dann auf dem Grid ein refresh_table_display( ) zu machen.
Leider wird das Grid dadurch aber nicht aktualisiert.
Ich schaffe es die Daten anzeigen zu lassen, wenn ich außerhalb der Methode einen refresh_table_display mache. Also die Daten sind auf jeden Fall da.
ja, das REFRESH_TABLE_DISPLAY wird in DATA_CHANGED nicht verarbeitet weil es zu einer Endlosschleife führen würde (Früher kam da glaub ich sogar eine Exception)
Die zusätzlich geänderten Daten kannst du innerhalb des Events-Handlers über den Parameter ER_DATA_CHANGED an das Grid übergeben.
Oder du verwendest DATA_CHANGED_FINISHED. Da sollte REFRESH_TABLE_DISPLAY wieder funktionieren.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.
er_data_changed ist eine REFERENZ auf ein Objekt IRGENDWO im Speicher.
d.h. Alle Operationen die du auf dieses Objekt (in deinem Fall MODIFY_CELL) anwendest, landen auch dort wo sie hingehören.
Der "Schreibschutz" den Importing hier bedingt gilt ja nur für die REFERENZ selbst, nicht aber für deren INHALT.
lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.