cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with CrossComponent Context Mapping with PopupWindow (web dynpro ab

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

former_member215843
Active Participant
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Answers (0)