on 02-08-2007 1:00 PM
The situation:
I have four views (View V1, V2, V2_popup, V3) in three Components C1, C2,C3.
View V1 is embeded in Component C1. View V2 is embeded in C2 with view V2_popup as Popup-Window.
View V3 is embeded in Component-C3. And at last the View of Component C2 and C3 are embeded in View V1.
The Problem is the CrossOver Context Mapping between the view V2 and V3.
My first way is the "direct context mapping":
I define a node in the ComponenteControllen from Component-C2 as interface and use it over the ComponentenController
from Component-C3 in view-V3. Now I bind an attribute of the mapped node to an ui-element (e.g: inputfield),
but the output of the Field is empty.
The second way is, that I define an external Mapping for this situtation.
I define a node in the componente-controllen from Component-C2 (an Component-C3)as interface with the attribute "Input Element (Ext)".
Than I map the two nodes with a node from Component-C1. That's works fine.
BUT, if I execute an action (e.g. action_save)in the popup for view-v2 (V2_popup) the changings from the inputfields don't write (show)in the context of the
popup-view. I check this with the debugger. And if I close the popup and open it again, the changings are visible.
Short: If I define a node with attribute "Input Element (Ext)", I don't can read changings from
the screen in a popup-window.
How I can solve this problem???
Message was edited by:
Maik Sturm
Hi Maik,
Popups are handled in a special way within Web Dynpro. When a popup is visible, all the methods belonging to the main window are not called, but the so called phase model is only executed on the popup window.
Ciao, Regina
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Regina,
that don't solved my problem:
Your answer say me, that my second way is wrong.
But why I don't show data in the context-node by my first way ("direct context mapping").
I have instance of the usage component in the method wdinit(), how descriped:
http://help.sap.com/saphelp_nw2004s/helpdata/en/0e/496ad66c601349a730502d3ea26e05/content.htm
In the follow description "Component Usage with Controller Access" ( http://help.sap.com/saphelp_nw2004s/helpdata/en/eb/f712403dbedd5fe10000000a155106/content.htm) is only descriped, how I call a method from the usage Component, but not a node from the context.
Where is the Problem or my Bug by my first way??
Thanks,
Maik
Hi Maik,
try this:
at first you have to instantiate all! used components in the wddoinit method of the componentcontroller in your main (c1) component.
e.g. instance of c2 Component
lr_usage_c2_comp = wd_this->wd_cpuse_c2_comp( ).
IF lr_usage_c2_comp->has_active_component( ) IS INITIAL.
lr_usage_c2_comp->create_component( ).
ENDIF.
and at the end set the reference:
l_ref_interfacecontroller = wd_this->wd_cpifc_c3_comp( ).
l_ref_interfacecontroller->set_usage(
ir_usage_c2_comp = lr_usage_c2_comp ).
set_usage is a method in the c3 component controller,
METHOD set_usage .
DATA: lr_usage TYPE REF TO if_wd_component_usage.
lr_usage = wd_this->wd_cpuse_c2_comp( ).
lr_usage->enter_referencing_mode( ir_usage_c2_comp ).
After doing this the components are using the same instance and you can simply use direct mapping between the components.
Hope it helps.
regards
Christian
User | Count |
---|---|
89 | |
10 | |
9 | |
9 | |
9 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.