on 05-21-2012 3:40 PM
Hi all,
I have a disturbing question within WebDynpro.
What i want:
Keep the popup screen open when the inputfield is initial or if the value is wrong (on domain level). (3 values on domain level: low, medium, high)
What i did:
I Create a popup and subscribed an action to the ok button:
wd_comp_controller->go_popup->subscribe_to_button_event(
button = if_wd_window=>co_button_ok
button_text = 'Ok'
action_name = 'ADD'
action_view = lo_view_controller
).
Within the onactionadd method i have placed a breakpoint but the program doesnt get past here if the inputfield is initial or if the inputfield has a bad value:
METHOD onactionadd.
ENDMETHOD.
When i leave the inputfield on the screen blank with
DETERMINED INPUT HELP: Z_MY_DOMAIN
TYPE OF INPUT HELP: fixed values for domains
Then when i push the Ok button it just closes the popup.
I Tryed to make the inputfield mandatory and use the next method within the WDDOBEFOREACTION:
CALL METHOD cl_wd_dynamic_tool=>check_mandatory_attr_on_view
EXPORTING
view_controller = lo_view_controller
display_messages = abap_true
IMPORTING
messages = lt_messages.
but even that diddnt work 😕
Hi,
here lo_view_controller is the parent view controller reference. I think you have created a view with one input field and embedded in popup window.! if so, why don't you take a button in the popup view and do validation in onAction of that button.
Remove the okcancle button of popup window and create a button in the popup view and do validation.
hope this helps u.,
Thanks & Regards,
Kiran
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Kiran,
Yes the inputfield is within another view that i use as a popup, so i could use a self created button and close the popupscreen myself.
But by doing this i would have a different kind of layout and they would love to have same layout regarding the buttons and the little line that make some turns as you can see in the picture. Thats why my question regarding the cancelation of the popup. But if it is not possible this way, then ill create the buttons myself and try to represent the layout as possible
Thanks & Regards,
Michael
Hi micheal,
Pass the close_in_any_case parameter in create_window method as ABAP_FALSE.
and do your validations in your onactionOK method and close the window explicitly by coding,this would solve your problem.
data lo_window_manager type ref to if_wd_window_manager.
data lo_api_component type ref to if_wd_component.
data lo_window type ref to if_wd_window.
data lo_view type REF TO if_wd_view_controller.
lo_view = wd_this->wd_get_api( ).
lo_api_component = wd_comp_controller->wd_get_api( ).
lo_window_manager = lo_api_component->get_window_manager( ).
lo_window = lo_window_manager->create_window(
window_name = 'WIN2'
* title =
close_in_any_case = abap_false
message_display_mode = if_wd_window=>co_msg_display_mode_selected
* close_button = abap_true
button_kind = if_wd_window=>co_buttons_ok
message_type = if_wd_window=>co_msg_type_none
default_button = if_wd_window=>co_button_ok
).
CALL METHOD LO_WINDOW->SUBSCRIBE_TO_BUTTON_EVENT
EXPORTING
BUTTON = if_wd_window=>co_button_ok
* BUTTON_TEXT =
* TOOLTIP =
ACTION_NAME = 'OK'
ACTION_VIEW = lo_view
* IS_DEFAULT_BUTTON = ABAP_FALSE
.
**now create a attribute in your view lo_win type ref to if_wd_window.
wd_this->lo_win = lo_window.
lo_window->open( ).
And in your onactionOK method check your input field and close it if your validations are passed.
method ONACTIONOK .
DATA lo_nd_inp TYPE REF TO if_wd_context_node.
DATA lo_el_inp TYPE REF TO if_wd_context_element.
DATA ls_inp TYPE wd_this->element_inp.
DATA lv_attr LIKE ls_inp-attr.
* navigate from <CONTEXT> to <INP> via lead selection
lo_nd_inp = wd_context->get_child_node( name = wd_this->wdctx_inp ).
* get element via lead selection
lo_el_inp = lo_nd_inp->get_element( ).
* get single attribute
lo_el_inp->get_attribute(
EXPORTING
name = `ATTR`
IMPORTING
value = lv_attr ).
if lv_attr NE ''.
wd_this->lo_win->close( ).
endif.
endmethod.
Hi,
What about binding the single field in a node in component controller and then from popup window, acessing the same from component controller's node?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Michael,
Where did you define the action ADD. It should be defined in the main view and not in the pop up view.
The method onactionadd will then only be triggered.
You can add the logic to validate the input and reopen the pop up if validaton fails in the method.
Hope it helps.
Regards,
Sayan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.