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.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
deejey
a-dead-trousers hat geschrieben: ↑21.02.2020 20:15In 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.
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.
Okay, aber wie bekomm ich das dann in meine Ausgabe??a-dead-trousers hat geschrieben: ↑24.02.2020 10:43Lass 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.
doch. normalerweise schon.