Как вызвать всплывающее окно из контроллера компонента и обработать subscribe_to_button_event в WDA - PullRequest
0 голосов
/ 30 октября 2018

Я обнаружил эту проблему в каком-то сценарии, и именно так я решил.

Сценарий . Вызовите всплывающее окно из компонента-контроллера, а не из представления.

METHOD wddoinit.

DATA: lo_popup_window TYPE REF TO if_wd_window,
      lo_window_manager TYPE REF TO if_wd_window_manager,
      lo_cmp_api TYPE REF TO if_wd_component,
      lt_text TYPE string_table,
      ls_text TYPE string.

 lo_cmp_api = wd_this->wd_get_api( ).
 lo_window_manager = lo_cmp_api->get_window_manager( ).
 ls_text = 'Do you want to continue?'.
 INSERT ls_text INTO TABLE lt_text.

 CALL METHOD lo_window_manager->create_popup_to_confirm
      EXPORTING
        text = lt_text
        button_kind = if_wd_window=>co_buttons_yesno
        default_button = if_wd_window=>co_button_no
        window_title = 'Information'
        close_button = abap_false
      RECEIVING
        result = lo_popup_window.

 CALL METHOD lo_popup_window->popup_to_confirm->subscribe_to_button_event
      EXPORTING
          controller = lo_cmp_api
          button = if_wd_window=>co_button_no
          handler_name = 'ACTION_BTN_NO'.

 CALL METHOD lo_popup_window->popup_to_confirm->subscribe_to_button_event
      EXPORTING
          controller = lo_cmp_api
          button = if_wd_window=>co_button_yes
          handler_name = 'ACTION_BTN_YES'.

 lo_popup_window->open( ).

ENDMETHOD.

-------------------------------------------- ---------------------------------------

В методах установите обработчики событий следующим образом.

enter image description here

-------------------------------------------- ---------------------------------------

Когда я запускаю программу

enter image description here

1 Ответ

0 голосов
/ 30 октября 2018

Следующие шаги помогут вам.

  1. Создать метод popup_window внутри контроллера компонента, имеющего параметр метода ir_vc type ref to if_wd_view_controller
  2. Введите приведенный выше код в вопросе внутри метода popup_window.
  3. добавьте код изнутри, где вы хотите вызвать всплывающее окно.

Код в представлении:

DATA lo_componentcontroller TYPE REF TO ig_componentcontroller .
lo_componentcontroller = wd_this->get_componentcontroller_ctr( ).
lo_componentcontroller->call_popup( ir_vc = lo_api_main ).

С уважением,

Умар Абдулла

...