Ich habe in einem klassischen Dynpro ein ALV-Grid in einem Container ausgegeben. Das Dynpro-Menü soll nun sowohl Standard-Transaktionen (z.B. MM03) als auch eigene ALV-Funktionen (die die ALV-Liste manipulieren) enthalten. Wählt der Benutzer eines dieser Menü-Einträge aus, soll dieses Event im ALV behandelt werden.
Ich wäre dankbar, wenn mir jemand beantworten könnte, ob das überhaupt realisierbar ist, und wenn ja, wie funktioniert das?
Mit user command Modul meinst Du sicher ein PAI-Modul, in dem ich die Funktionscodes der Menüeinträge abarbeite, oder?
Meine Anwendung ist eine OO-Anwendung, d.h. die ALV-Tabelle wird in einer Methode bearbeitet. Der User soll die Möglichkeit haben, bestimmte ALV-Zeilen zu markieren, dann eine eigene Funktion durch Auswahl aus dem Dynpro-Menü auszuwählen, die dann diese Zeilen bearbeitet. Bei Auswahl dieser Funktion soll jetzt der zugeordnete Funktionscode (Okcode) an den ALV eventhandler übergeben werden, damit dort eine entsprechende Methode aufgerufen wird, die die selektierten ALV-Zeilen bearbeitet. In dem PAI-Modul hätte ich auch die selektierten ALV-Zeilen nicht zur Verfügung, um die entsprechden Funktionen ausführen zu können. Nach der Bearbeitung der selektierten Zeilen, soll die ALV-Liste refreshed werden.
Die Anforderung, alle Menüs (Dynpro + ALV-eigene) als Dynpro-Menü abzubilden, stammt von meinem Auftraggeber.
Ich muss das entweder jetzt realisieren oder erklären, warum es nicht geht.
Kennst Du Dich an dieser Ecke aus, dann wäre ich über eine Antwort dankbar?
Doch, doch, die ausgewählten Zellen kannst du schon bekommen. Du benötigst nur die Instanzreferenz zum Grid, dann bekommst Du sie per GET_SELECTED_ROWS oder GET_SELECTED_CELLS.
Ich kenne mich ein wenig aus "Dialogprogrammierung mit EnjoySAP Controls" und "ABAP Objects - Grundlagen und Anwendung der objektorientierten Programmierung in ABAP" sind von mir.
Ich habe gerade über eine Methode Dispatch (cl_gui_cfw) gelesen, die Applikationsereignisse verteilen kann. Kennst Du diese Methode? Kann die das eventuell leisten, was ich will?
Den Weg, den Du vorgeschlagen hast, würde ich gerne als Ersatz-Option nehmen, falls ich anders nicht weiterkomme.
DISPATCH ist dazu da, dass wenn du eigene Ereignisse im Grid definiert hast und als Anwendungsereignisse registriert hast. Dann wird beim Ereignis PAI ausgelöst und du muss mit dem DISPATCH-Aufruf explizit die Abarbeitung der Eventhandler anstoßen.
Das heisst also, die Methode ist nicht für Dynpro-Ereignisse geeignet, wenn ich das richtig verstanden habe? Gibt es denn überhaupt eine Möglichkeit, über Dynpro-events ALV-Behandlermethoden zu triggern?
Hallo Frank,
ich denke, dass ich gerade eine Lösung realisiert habe. Den Anstoss dazu gabst Du mir mit deiner Bemerkung zur Übergabe der Referenz.
Ich machs jetzt so:
1. Zuerst rufe ich die Methode zur Bearbeitung und Ausgabe des Grids auf.
2. Dann rufe ich einen FUBA auf, der nichts weiter tut, als das ALV-Trägerdynpro zu rufen. Dabei übergebe ich die Referenz meiner ALV-Bearbeitungsklasse.
--> die Grid Liste wird in einem control angezeigt.
3. Der Benutzer selektiert Zeilen der Liste und wählt aus dem Dynpro-Menü
eine Funktion aus.
Dies ruft das PAI-Modul auf, in dem ich dann meinen ALV event handler aufrufe und dabei den okcode übergebe.
4. In der eventhandler Methode lese ich die markierten Zeilen aus und rufe die über das Dynpro-Menü ausgewählte Funktion (Methode/Standard-Transaktion) auf.
Vielen Dank für deine hilfreichen Beiträge.
PS: Ist dein Buch über Dialogprogrammierung mit Controls noch im Handel erhältlich?
Das ist vergriffen, es sind aber alle Inhalte ins Nachfolgerbuch "ABAP Objects" eingeflossen, schau dir einfach das Inhaltsverzeichnis bei Amazon oder im dpunkt-Verlag an.