0

我在某些情况下发现了这个问题,这就是我解决的方法。

情景。从组件控制器而不是视图调用弹出窗口。

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.

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

在方法中设置事件处理程序如下。

在此处输入图像描述

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

当我运行程序时

在此处输入图像描述

4

1 回答 1

0

以下步骤将为您提供帮助。

  1. 在组件控制器中创建方法 popup_window,方法参数 ir_vc 类型参考 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 ).

问候,

奥马尔·阿卜杜拉

于 2018-10-30T05:30:54.907 回答