Skip to Content
Mar 01, 2011 at 09:33 AM

Embedded component with message view


I've created a component with a message view. In the WDDOINIT method I have:

  data: lr_wd_message_area    type ref to if_wd_message_area,
        lr_current_controller type ref to if_wd_window_controller.

* Set up message controller
  lr_current_controller ?= wd_this->wd_get_api( ).
  lr_wd_message_area = lr_current_controller->get_message_area( ).
  lr_wd_message_area->set_display_attributes( i_show_only_current = ' '
                                              i_for_all_instances = ' '
                                              i_use_toggle_area   = ' ' ).

When I call the component as a standalone application it works fine. lr_wd_message_area is instantiated. When I embed the component in the window of another application, I get a dump, as lr_wd_message_area is NOT instantiated. In the other application, the component is embedded directly in a window, which is called as a popup.

 ...  lr_popup = lr_window_manager->create_window(
  modal               = abap_true
  window_name         = 'W_LOG'
  title               = 'Errors log'
  close_button        = abap_true
  button_kind         = if_wd_window=>co_buttons_close
  message_type        = if_wd_window=>co_msg_type_error
  close_in_any_case   = abap_true
  message_display_mode = if_wd_window=>co_msg_display_mode_all ).

  lr_popup->open( ).

When I test the program, it dumps at line lr_wd_message_area = lr_current_controller->get_message_area( ). (in the first code fragment), as lr_current_controller isn't instantiated. When I call the component directly, the lr_current_controller is instantiated.

What could be causing this lack of instantiation?


Edited by: Matt on Mar 1, 2011 11:45 AM