es kommt immer wieder die leidige Frage hoch warum der Anwender nach einer Eingabe in ein ALV-Grid immer erst eine Taste (z.B. ENTER) betätigen muss, um dem Programm die erfassten Werte zur Verfügung zu stellen.
Muss man dieses wirklich tun oder gibt es eine Möglichkeit (nicht Web-Dynpros) um diese Übernahme automatisch zu relaisieren?
jein:
Es gibt neben dem MC_EVT_ENTER für die Enter-Taste noch den MC_EVT_MODIFIED der beim Verlassen und wenn sich in der aktuellen Zelle etwas verändert hat ausgelöst wird. Da gibt es nur mitunter das Problem, dass das Grid kurz flackert bzw. die neue Zelle den Focus kurzzeitig verliert.
Warum das so gelöst ist: Stell dir ABAP und Dynpros als eine Art HTML-Seite vor. Du gibst Daten ein und erst mit dem Abschicken kommen sie am Server an und können weiter verarbeitet werden. (AJAX und Javascript denken wir uns jetzt einfach mal weg)
In einem "normalen" Dynpro kann man ja auch erst nach einer Aktion die PAI/PBO auslöst die neu eingegebenen Daten verarbeiten.
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.
der Anender startet eine Transaktion mit einem ALV, dort gibt er Daten ein und betätigt dann direkt einen Button, der außerhalb des Grid's liegt. Die erfassten Daten sollen dann direkt verarbeitet werden. Ich denke, das ist dann ohne ENTER nicht möglich.
Es wird ja (Dank des Buttons) PAI/PBO ausgelöst. Die Änderungen vom Benutzer musst du durch die Methode CHECK_CHANGED_DATA in die zum ALV gehörige Tabelle (per SET_TABLE_FOR_FIRST_DISPLAY gesetzt) zurück schreiben lassen.
Also einfach in der PAI-Verarbeitung zuerst CHECK_CHANGED_DATA ausführen und dann kannst du die Daten einfach wie gewohnt aus deiner (globalen) Programmtabelle auslesen.
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.