cancel
Showing results for 
Search instead for 
Did you mean: 

Fire outbound plug of interface view controller?

Former Member
0 Kudos

Hello Experts-

In my WD project I have two apps A and B.

I need to navigate from app A to app B.

In the interface view controller of app A, I have created an outbound plug called GotoB.

I determine the URL of app B using the WDURLGenerator and store that value in a string.

In a view of the app A I have the code:

<code>

wdThis.wdGetAInterfaceViewController().wdFirePlugGoToB("URLtoB");

</code>

For some reason nothing seems to be happening when the event triggers in the view of app A that runs the above code. The view of app A just seems to refresh. The one thing that does happen is that on the refreshed view of app A if I click on the button to trigger this event again I get an 'app A has expired' WAS error.

What am I missing here? How can I make the navigation from app A to app B work?

Thank you,

- Vik.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hello,

Did you marked the Outbound Plug in the Interface View Controller as a exit plug? There is a CheckBox called "Exit plug" in the wizard for creating OutBound Plugs in Interface View Controller. It has to be marked, for the plug to work as you expect.

Rest of your case looks ok.

--

regards

Marcin

Former Member
0 Kudos

Small add-on:

Verify that single parameter of exit plug called <b>Url</b> -- it is case-sensitive.

VS.

Former Member
0 Kudos

Thank you everyone for contributing.

I had all the pieces in place, the only issue was that the parameter in the outbound plug of the interface view controller was 'URL' and not 'Url'.

I applied Valery's message and renamed that parameter from 'URL' to 'Url' and now the code is working just fine.

Former Member
0 Kudos

Hi Pant

Since you have the URL of the second application, Use LinktoAction UI element in App A and in the action of this UI element use this code to open App B.

wdComponentAPI.getWindowManager().createExternalWindow(<URL>,<Title>,<boolean Value)

Let me know if you require any other help.

Kishore

Former Member
0 Kudos

Hi Naga-

Will this make the transition between the two apps be within the same browser window?

I don't want to have a new window pop-up and this one get closed. I also do not want the session for application A to stay open. The advantage to using the outbound plug of an interface view controller is that it will close the current session on application A.

I want to have seamless a transition between the two applications. Please advice.

Thanks,

- Vik.

former_member182372
Active Contributor
0 Kudos

Hi,

well step by step:

1) Create component Component1 (package="com.sap.sdn", window name = "Component1CW", View name="Conponent1CV")

2) Create component Component2 (package="com.sap.sdn", window name = "Component2CW", View name="Conponent2CV")

3) Create application "App1" (package="com.sap.sdn", Web Dynpro component="Component2", the rest - by default)

4) In Component1CWInterfaceView create outbound plug "GoToComp2"

5) In Conponent1CV add Component1CWInterfaceView as required controller

6) In Conponent1CV add button and in action handler put following:

  public void onActionGoToComp2(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
  {
    //@@begin onActionGoToComp2(ServerEvent)
    wdThis.wdGetConponent1CWInterfaceViewController().wdFirePlugGoToComp2();
    //@@end
  }

7) In component Component2 add Component1 as Used Web Dynpto Component (name="Component1CU")

😎 In Component2CW embed view (Component1CWInterfaceView) as Embed Interface View of a Component Interface, and set this view as default.

9) In Component2CV add inbound plug "FromComponent1"

10) In Component2CW link embedded View Component1CU.Conponent1CWInterfaceView.GoToComp2 with Component2CV.FromComponent1

11) Build-deploy-run. Click on button. It should work.

Regards, Maxim R.