Show TOC

Dialogfenster derselben Component aufrufenLocate this document in the navigation structure

Verwendung

Wenn das Dialogfenster, das 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:

Beispiel

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.

         
Hinweis

Beachten Sie, 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.

Buttons im Dialogfenster

Mit Hilfe des Parameters BUTTON_KIND legen Sie fest, welche Buttons 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 Domäne eine Reihe von Festwerten besitzt. Die Festwerte repräsentieren alle sinnvollen Kombinationsmöglichkeiten der Dialogfenster-Buttons wie 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 Buttons erzeugt, je eine für Ja, Nein bzw. Abbrechen.

Buttons ein- und ausblenden

Sie können auch einen Button oder mehrere Buttons deaktivieren. Dazu steht die Methode SET_BUTTON_ENABLED des Interface IF_WD_WINDOW zur Verfügung.

Standardmäßig sind die Popup-Buttons immer aktiv.

Window des Dialogfensters

In der Hook-Methode WDDOINIT der View des Dialogfensters werden die Button-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.

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.

Weitere Informationen

Weitere Informationen zu den Interfaces und Methoden finden Sie im System unter den entsprechenden Objekten.