Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Dialogfenster derselben Component aufrufen Dokument im Navigationsbaum lokalisieren

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:

Diese Grafik wird im zugehörigen Text erklärt

 

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.

Das Window des Dialogfensters

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.

 

 

Hinweis 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.

 

Die Methoden WDDOONOPEN und WDDOONCLOSE

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.

 

Ende des Inhaltsbereichs