Hallo zusammen,
Ich habe ein Dynpro mit einem ALV (CL_GUI_ALV_GRID). Der ALV ist editierbar und ich nutze beim Editieren das Error Protokoll des ALVs (CL_ALV_CHANGED_DATA_PROTOCOL). Das klappt auch wunderbar.
Wenn der Benutzer das Fenster schließen will und es noch fehlerhafte Eingaben gibt, soll das Protokol nochmal ausgegeben werden.
Die fehlerhaften Eingaben kann ich herausfinden. Jetzt besteht nur noch das Problem, dass Protokoll auszugeben.
An das Protokoll kommt man aber nur ran, wenn man das Event DATA_CHANGED abfängt (was ich beim ändern des ALVS auch mache). Dann hat man die Referenz er_data_changed und kann das Protokoll behandeln. Anders kommt man meines Wissens nach nicht an das Protokoll heran oder?
Hat jemand eine Idee, wie ich das Problem umgehen kann?
Die Fehlermeldungen müssten eigentlich auch noch in dem Protokoll drin stehen (da sie vorher schonmal angezeigt wurden). Nur leider gibt es keine Methode zum Anzeigen des Protokols.
Meine Ansätze:
1. Eigenes Obejekt von CL_ALV_CHANGED_DATA_PROTOCOL erzeugen und ausgeben. Die Fehlermeldungen kann man ganz einfach hinzufügen. Das Anzeigen klappt schon teilweise. Er kennt die Feldnamen des ALVs natürlich nicht, weil er den gesamten ALV nicht kennt. Dann zeigt er die Spaltenbezeichnungne nicht an (also die Feldnamen, bei denen der Fehler aufgetreten ist).
Damit könnte ich noch leben, aber beim Schließen des Protokolls möchte das Protokoll den Focus setzen im ALV und dann gibt es einen DUMP, weil das Protokol das Feld natürlich nicht findet.
2. Im ALV gibt es die Möglichkeit, dass Event DATA_CHANGED mit der Methode CHECK_DATA_CHANGED auszulösen. Dafür müsste es aber zu erst eine Änderung geben. Die Änderungen wurden aber schon behandelt und es gibt dementsprechend keine Änderungen und das Event wird nicht ausgelöst.
Dann dachte ich mir, ich simuliere einfach eine Änderung und trickse den ALV aus. Der lässt sich leider nicht austricksen. Ich müsste die ALV-internen Tabellen ändern. Das ändern des Feldkataloges und de Refresh des ALVs reichen nicht aus.
Kann ich den ALV auf diese Weise irgendwie austricksen?
Ansonsten habe ich nur noch die Idee mir selbs ein kleines Log zu schreiben (zum Beispiel SBAL) und auszugeben. Das sieht aber natürlich dann 1. etwas anders aus und 2. kann ich mir nicht vorstellen, dass ich das Protokol des ALVs nicht irgendwie verwenden kann
Danke und viele Grüße
Henrik