In dem Dynpro befindet sich außerdem ein Eingabefeld.
Dieses Eingabefeld wird ebenfalls alle 5 Sekunden geupdatet.
Dies muss unterbunden werden.
Meine Fragen:
1. Warum wird das Eingabefeld überhaupt geupdatet, ich mache ja einen TABLE refresh.
2. Kann ich das Updaten des Eingabefeldes irgendwie unterbinden oder vom Update ausschließen
Ich nehme mal an, du löst das Refresh mit einem CL_GUI_TIMER aus oder?
Das GUI-Eventhandling kann normalerweise zwischen dem Modus APPL_EVENT (siehe Methode SET_REGISTERED_EVENTS) und NON-APPL_EVENT hin- und hergeschalten werden. Wenn APPL_EVENT aktiv ist, wird automatisch auch PAI/PBO ausgelöst.
Damit kann man im Grunde steuern, ob die Controls die eigentlich im CFW leben mit dem Dynpro syncronisiert werden sollen oder nicht.
Soweit ich das sehe wird der Event EVENTID_FINISHED von CL_GUI_TIMER automatisch im NON-APPL_EVENT Modus registriert (siehe CONSTRUCTOR). Das von dir entdeckte Verhalten kann also jetzt daran liegen, dass der CL_GUI_TIMER das NON-APPL_EVENT ignoriert und immer PAI/PBO auslöst oder dass das vom ALV-Grid ausgelöst wird. Ob es am ALV-Grid liegt kann man ganz leicht ermitteln indem man prüft wie der Parameter I_APPL_EVENTS im CONSTRUCTOR versorgt ist. Wenn X dann werden automatisch alle Events des ALV-Grid im APPL_EVENT Modus registriert.
Wenn man den Parameter auf leer setzt sollte das Aktualisieren des gesamten Dynpros unterbunden werden, aber man verliert damit dann auch die Möglichkeit, dass Ereignisse im ALV-Grid (z.B. Button-Klick) Auswirkungen auf das Dynpro haben. Möchten man dennoch Felder im Dynpro nach einem ALV-Grid Ereignis aktualisieren muss man sich mit der DYNP_VALUES_UPDATE-Krücke (analog zu Process on Value-Request oder POV) behelfen.
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.