!--a11y-->
Dialogfenster derselben Component
aufrufen 
Wenn das Dialogfenster, dass Sie zur Anzeige bringen wollen, in speziellem inhaltlichen Zusammenhang mit der aktuellen Component steht und extra dafür angelegt wird, sollten Sie das zugehörige Window ebenfalls in dieser Component anlegen.
Um zur Laufzeit aus einem angezeigten Window heraus ein Dialogfenster in einer Ereignisbehandlermethode zu erzeugen bietet das Interface IF_WD_WINDOW_MANAGER die Methode CREATE_WINDOW. Der Methode CREATE_WINDOW wird der Name des zu öffnenden Windows als Parameter übergeben. Am View-Controller muss für das Dialogfenster ein Attribut vom Typ IF_WD_WINDOW deklariert werden. Im unten stehenden Beispiel ist dies das Attribut m_popup1_1:

Das als Dialogfenster verwendete Window (hier: „POPUP1_1“) muss in der Component bereits existieren.
method onactionpopup1_1 .
data: l_cmp_api type ref to if_wd_component, l_window_manager type ref to if_wd_window_manager.
l_cmp_api = wd_comp_controller->wd_get_api( ). l_window_manager = l_cmp_api->get_window_manager( ). if wd_this->m_popup1_1 is initial. wd_this->m_popup1_1 = l_window_manager->create_window( window_name = 'POPUP1_1' button_kind = if_wd_window=>co_buttons_yesnocancel message_type = if_wd_window=>co_msg_type_question ). endif. wd_this->m_popup1_1->open( ).
endmethod.
|
Beachten Sie an dieser Stelle, dass die Methode CREATE_WINDOW das neue Dialogfenster lediglich erzeugt aber noch nicht öffnet. Zum Öffnen des Dialogfensters benötigen Sie zusätzlich die Methode OPEN.
Die Schaltflächen des Dialogfensters
Mit Hilfe des Parameters BUTTON_KIND legen Sie fest, welche Schaltflächen sich auf dem Dialogfenster befinden sollen. Im oben stehenden Beispiel wird an dieser Stelle die Konstante CO_BUTTONS_YESNOCANCEL gesetzt. Diese Konstante ist von ABAP-Dictionary-Typ WDR_POPUP_BUTTON_KIND dessen Domaine eine Reihe von Festwerten besitzt. Die Festwerte repräsentieren alle sinnvollen Kombinationsmöglichkeiten der Dialogfenster-Schaltflächen wie z.B. OK , OK/Abbrechen oder Ja/Nein/Abbrechen. Die Voreinstellung der Konstanten, die ein Attribut des Interfaces IF_WD_WINDOW ist, ist der Wert 5. Das bedeutet, die Kombination enthält die Konstanten CO_BUTTON_YES, CO_BUTTON_NO, CO_BUTTON_CANCEL und auf dem Dialogfenster werden drei Schaltflächen erzeugt, je eine für Ja, Nein bzw. Abbrechen.
In der Hook-Methode WDDOINIT der View des Dialogfensters werden die Schaltflächen-Konstanten mit geeigneten Aktionen verbunden. Dazu stellt das Interface IF_WD_WINDOW die Methode SUBSCRIBE_TO_BUTTON_EVENT bereit. Die Aktionen müssen direkt am View-Controller des Dialogfensters angelegt und deren automatisch erzeugte Ereignisbehandler-Methoden geeignet ausprogrammiert werden.
method wddoinit .
data: l_api type ref to if_wd_view_controller, l_window_ctlr type ref to if_wd_window_controller, l_popup type ref to if_wd_window.
l_api = wd_this->wd_get_api( ). l_window_ctlr = l_api->get_embedding_window_ctlr( ). if l_window_ctlr is bound. l_popup = l_window_ctlr->get_window( ). if l_popup is bound. l_popup->subscribe_to_button_event( button = if_wd_window=>co_button_yes button_text = 'Yes' "#EC * action_name = 'YES' action_view = l_api is_default_button = abap_true ). l_popup->subscribe_to_button_event( button = if_wd_window=>co_button_no button_text = 'No' "#EC * action_name = 'NO' action_view = l_api is_default_button = abap_true ). l_popup->subscribe_to_button_event( button = if_wd_window=>co_button_cancel button_text = 'Cancel' "#EC * action_name = 'CANCEL' action_view = l_api is_default_button = abap_true ). endif. endif. endmethod.
|
Die Phasenmodell-Instanz des
Dialogfensters hängt an der gleichen Component wie die
Instanz des aufrufenden Windows. Daher werden – wenn das
Dialogfenster geöffnet ist - nicht nur alle Hook-Methoden
der
Views gerufen, die im Dialogfenster angezeigt werden
sondern auch alle Hook-Methoden der Views, die im aufrufenden Window
eingebettet sind.
Jeder Window-Controller besitzt die beiden Hook-Methoden WDDOONOPEN und WDDOONCLOSE. Diese beiden Methoden werden immer nur dann durchlaufen, wenn ein Window als Dialogfenster geöffnet bzw. geschlossen wird. Da mit dem Öffnen eines Dialogfensters keine Navigation verbunden ist, wird auch kein Inbound-Plug gerufen und keine damit verbundene Ereignisbehandler-Methode durchlaufen. Die Methode WDDOONOPEN dient daher u.a. zur eventuellen Implementierung von Initialisierungen.