ich habe ein Problem in der Methode handle_data_changed meines ALV-Grids.
Das Ereignis wir korrekt ausgelöst und alle Zelle bis auf die aktuelle Zelle(also die Zelle die geändert wurde) lassen sich ändern. Beim Ändern des Wertes wird die Datentabelle korrekt beschrieben, auch nach dem Aufruf von alv_grid->refresh_table_display stehen in ihr noch der richtige (von mir bearbeitete) Wert.
Im ALV-Grid zeigt er diese Änderung allerdings nicht an. Es muss was mit Zelle auf sich haben, die geändert wurde.
Hier der Quelltext von handle_data_changed.
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- METHOD handle_data_changed.
- ******************************************
- *** HandleDataChanged ***
- ******************************************
- *** alle Inhalte der geänderten Zellen in die interne Tabelle schreiben
- *** Dazu auf die richtige Zeile in der ITAB positionieren:
- READ TABLE <itab> ASSIGNING <wa> INDEX ls_good-row_id.
- *** Und das geänderte Feld dem Feldsymbol zuweisen
- * alles außer Zahlen entfernen
- UNASSIGN <feld1>.
- CALL FUNCTION 'SPELL_AMOUNT'
- EXPORTING
- amount = <feld>
- language = sy-langu
- currency = 'EUR'
- IMPORTING
- in_words = spell.
- ELSE.
- * WRITE <feld> TO <feld> USING EDIT MASK 'RR___.___,__'.
- * Anzeige refreshen
- stable-col = 'X'.
- stable-row = 'X'.
- CALL METHOD alv_grid->refresh_table_display
- EXPORTING
- is_stable = stable.
- GeSHi ©
Das Feld ALSWORTE wird korrekt gefüllt und im Grid angezeigt.
Selbst nach dem Refresh hat <itab> noch den richtigen Inhalt.
Hat jemend eine Idee wie ich das lösen kann?