ich würde gerne, wenn in ein ALV Grid eine neue Zeile eingefügt wird, die eingegebenen Werte überprüfen. Leider nützt /h hier nichts oder gibt es doch eine Möglichkeit hier in den Debugger zu springen?
Welches Event wird denn vom ALV Grid für das Einfügen einer neuen Zeile verwendet?
Beim Einfügen kenn ich jetzt nichts, aber zum Prüfen der Eingabe gibt es den Event DATA_CHANGED. Der wird immer dann durchlaufen, wenn die Informationen aus dem Grid am Client endgültig an den Applikationsserver übertragen werden. Also entweder bei PAI/PBO, Aufruf von CHECK_CHANGED_DATA oder wenn einer der On-Edit-Eventauslöser (Cell Leave oder Enter) registiert ist.
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.
Danke für den Tip. Jetzt habe ich noch folgendes Problem:
Meine Tabelle besteht aus 7 Feldern, wovon nur 1 eingabebereit ist. Wenn ich eine neue Zeile hinzufüge, dann sollen alle Felder eingabebereit sein. Wie mache ich das, wenn ich nicht an das interne Event rankomme? Gibt es da so etwas wie ein Callback den ich verwenden kann?
Wie mache ich das, wenn ich nicht an das interne Event rankomme?
Dazu ist es notwendig das DATA_CHANGED-Event zu implementieren. In der Klasse CL_ALV_CHANGED_DATA_PROTOCOL gibt es für diesen Zweck das Attribut MT_INSERTED_ROWS.
Das ALV-Grid braucht dann noch eine Spalte mit dem Typ LVC_T_STYL, mit der die Editierbarkeit pro Zelle festgelegt wird. Bei einer neuen Zeile müssen dann alle Zellen der Zeile als editierbar festgelegt werden.
Hallo,
das Event 'ON_DATA_CHANGED' ist registriert und wird auch angesprungen. Hier hole ich mir dann über die Methode GR_GRID_APPLICATION->CHANGE_DATA( ) die Referenz ER_DATA_CHANGED.
Soweit so gut. In dem Attribut MT_MOD_CELLS sind ja die neuen Felder/Feldinhalte aufgelistet. Wenn ich jetzt zu jeder Zelle den Style setze, dann passiert nichts. Die Felder welche vorher schon Read-Only waren bleiben auch Read-Only.
Bisher habe ich folgende Konstanten verwendet:
CL_GUI_ALV_GRID=>MC_STYLE_ENABLED, MC_EVT_MODIFIED, MC_EVT_ENTER, leider ohne Erfolg.
Das Programm BCALV_GRID_EDIT hat mir mit meinem Problem erstmal nicht weitergeholfen. Hier wird allerdings ein editierbares Grid angezeigt und über die Stylestabelle einzelne Zelen auf Read-Only gesetzt.
Hast Du vielleicht ein Beispielprogramm oder ein Schnipet für mich?
Möglich, dass du die Sache etwas anders angehen musst:
1) Alle Spalten in deinem Grid und auch das Grid selbst auf "editierbar" stellen.
2) In allen Zeilen im Feld für die Styleinformationen (Typ LVC_T_STYL) die Zellen auf "nicht editierbar" stellen.
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.