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
Exactly, you should not use MessageArea in the reusable view assembly.
So in the approach 1. You could have the view-b with message area. view-a which is reusable view should not have the messageArea.
Approach 2, should not have MessageArea at all.
In our company, we do not include MessageArea at all. Exceptional cases have to be solved in a order as i described above.