ALV Refresh Table Display funktioniert nicht.

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

ALV Refresh Table Display funktioniert nicht.

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
Hallo zusammen,

ich habe ein Problem im Bezzug auf den Refresh im CL_GUI_ALV_GRID.
Ich hatte die aufgabe ein Sudoku zu bauen. Dabei bi n ich schon sehr weit, jedoch will ich, dass wenn man eine zweistellige zahl oder einen Buchstaben eingibt eine Fehlermeldung kommt und der Alv das letzte Feld in das eingetragen wurde löscht.
Hier ein Ausschnitt:

Code: Alles auswählen.

*******************************************************************
*Zahlenprüfung
*******************************************************************
  IF <lf_feld> NA '123456789'.
    MESSAGE text-002 TYPE 'I'.
    <lf_feld> = ' '.
    MODIFY gt_feld FROM ls_feld INDEX ls_changed-row_id.

    me->refresh( ).

*    gr_alv->refresh_table_display( ).
  ENDIF.


  lf_laenge = strlen( <lf_feld> ).

*******************************************************************
*Längenprüfung
*******************************************************************
  IF lf_laenge > 1.
    MESSAGE text-001 TYPE 'I'.
    <lf_feld> = ' '.
    MODIFY gt_feld FROM ls_feld INDEX ls_changed-row_id.
    CALL METHOD gr_alv->refresh_table_display.
  ENDIF.
So. In meiner Methode Refresh mach ich bis jetzt nicht mehr als einen Refresh_table_display und einen flush(zur Sicherheit).
Das Problem: Die Tabelle die ich jetzt ausgeben will, hat das falsch eingetragene Feld schon gelöscht. Jedoch ist nach dem refresh und dem Flush in der Ausgabe der Buchstabe immer noch da.

Die Frage: Woran liegt das und wie kann ich das beheben.

Versucht hab ich auch schon einen Frontend Update einen weiteren Set_tabel_for_first_display usw...

Bitte um Hilfe Danke.

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


Re: ALV Refresh Table Display funktioniert nicht.

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
In diesem Fall wäre es besser du verwendest rein nur die Control-Funktionen die das ALV-Grid für die Datenänderung zur Laufzeit zu Verfügung stellt. Wenn du zwischendrin mit PAI/PBO herumhantierst kommen solche Inkonsistenzen zustande.

Du musst den Event DATA_CHANGED des ALV-Grid für das komplette Handling der Feldprüfungen und Änderungen verwenden.
Hier ist ein Beispiel, damit du ungefähr verstehst was du alles brauchst.
https://www.berater-wiki.de/Klasse_CL_G ... enthandler
Wichtig ist vorallem das REGISTER_EDIT_EVENT für MC_EVT_MODIFIED (Prüfen der Änderung beim Verlassen der Zelle) und dass du mit CL_ALV_CHANGED_DATA_PROTOCOL (ER_DATA_CHANGED im Event) auch Werte wieder in das Grid zurückschreiben kannst.
Im Netz gibts dazu noch einiges mehr.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
deejey

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.

ECC: 6.18
Basis: 7.50

Re: ALV Refresh Table Display funktioniert nicht.

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
a-dead-trousers hat geschrieben:
21.02.2020 20:15
In diesem Fall wäre es besser du verwendest rein nur die Control-Funktionen die das ALV-Grid für die Datenänderung zur Laufzeit zu Verfügung stellt. Wenn du zwischendrin mit PAI/PBO herumhantierst kommen solche Inkonsistenzen zustande.

Du musst den Event DATA_CHANGED des ALV-Grid für das komplette Handling der Feldprüfungen und Änderungen verwenden.
Hier ist ein Beispiel, damit du ungefähr verstehst was du alles brauchst.
https://www.berater-wiki.de/Klasse_CL_G ... enthandler
Wichtig ist vorallem das REGISTER_EDIT_EVENT für MC_EVT_MODIFIED (Prüfen der Änderung beim Verlassen der Zelle) und dass du mit CL_ALV_CHANGED_DATA_PROTOCOL (ER_DATA_CHANGED im Event) auch Werte wieder in das Grid zurückschreiben kannst.
Im Netz gibts dazu noch einiges mehr.

Danke erstmal für die schnelle Antwort...
jedoch schaut es so aus, dass es auch nciht dann geht wenn ich alles in die DATA_CHANGED Methode schreibe. Das REGISTER_EDIT_EVENT für MC_EVT_MODIFIED hab ich auch verwendet, und das REGISTER_EDIT_EVENT für MC_EVT_ENTER auch.
Funktioniert irgendwie alles nicht. Meine Frage: Kann es daran liegen dass meine Tabelle und mein Feldkatalog global ist? Nein oder?
Global sind beide weil ich sie immer wieder in versch. Methoden verwende und benötige.
Danke schonmal für die Antwort. :D

Re: ALV Refresh Table Display funktioniert nicht.

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
AKTUALISIERUNG:
Kleine Erkenntnis: Wenn ich im Debugger durchgehe und über den Flush gehe, verschwindet das zeichen auf meiner Ausgabetabelle. Das Problem ist wenn ich dann ganz durchgehe, ist das Zeichen wieder in der Ausgabetabelle zu sehen, obwohl ich danach den ALV Nicht merh veränder. Hier der Code zur besseren Vorstellung:

Code: Alles auswählen.

**********************************************************************
*Zahlenprüfung
**********************************************************************
    IF <lf_feld> NA '123456789'.
      MESSAGE text-002 TYPE 'I'.
      <lf_feld> = ' '.
      MODIFY gt_feld FROM ls_feld INDEX ls_changed-row_id.



      gr_alv->refresh_table_display( ).

      cl_gui_cfw=>flush( ).


    ENDIF.

Re: ALV Refresh Table Display funktioniert nicht.

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Lass das "refresh_table_display" und das "flush" weg.
Das sind die Methoden für das PAI/PBO.
Zur korrekten Datenänderung darfst du nur die Inhalte in mt_mod_cells verändern.
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.

ECC: 6.18
Basis: 7.50

Re: ALV Refresh Table Display funktioniert nicht.

Beitrag von Ichse2 (ForumUser / 28 / 9 / 0 ) »
a-dead-trousers hat geschrieben:
24.02.2020 10:43
Lass das "refresh_table_display" und das "flush" weg.
Das sind die Methoden für das PAI/PBO.
Zur korrekten Datenänderung darfst du nur die Inhalte in mt_mod_cells verändern.
Okay, aber wie bekomm ich das dann in meine Ausgabe??
Also nur weil ich es in der mt_mod_cells wieder auf leer ändere, ändert sich ja nichts in meiner Ausgabe. Wie bekomm ich das dann da hin.

Re: ALV Refresh Table Display funktioniert nicht.

Beitrag von ewx (Top Expert / 4843 / 311 / 638 ) »
Ichse2 hat geschrieben:
02.03.2020 08:48
Also nur weil ich es in der mt_mod_cells wieder auf leer ändere, ändert sich ja nichts in meiner Ausgabe.
doch. normalerweise schon.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
3583
Views
Refresh Display im ALV nach Filtern
von ernst » 24.01.2006 18:00 • Verfasst in ABAP Objects®
4
Antw.
5122
Views
Set table for first display
von pippi1710 » 27.10.2011 10:34 • Verfasst in ABAP® für Anfänger
0
Antw.
2134
Views
display a Internal table on a SmartForm
von jamiguel77 » 31.12.2014 20:15 • Verfasst in ABAP® für Anfänger
4
Antw.
4404
Views
Refresh bei ALV funktioniert nicht
von robertli » 24.10.2006 14:00 • Verfasst in ABAP® Core
1
Antw.
2001
Views
cl_salv_table refresh funktioniert nicht?
von abapz » 08.10.2015 11:28 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 6 Stunden von Bright4.5 1 / 125
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1767
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8369