Of course the SAP NetWeaver Enterprise Portal is the only portal framework you'll ever need, but what if you have an existing website - based on a third-party or custom framework - and you want to embed content from your Enterprise Portal there (either the full EP page or a specific iview)? If using FPN isn't an option for you, you might proceed like this: you determine an appropriate URL to launch the content (for instance, for a BW report, you use something like: http://portal.domain.com/irj/servlet/prt/portal/prtroot/pcd!3aportal_content!2fcom.sap.pct!2fplatfor...), and specify this URL as the source of an iframe. Then you call your webpage and ... you encounter lots of difficulties. Difficulties like:
- if calling application integrator content (e.g. a BW report, BSP, or WebDynpro), you may see an error like 'Application <X> will run with a wrong client window id'. You may also experience session management issues.
- you may see javascript errors like ''EPCM.getSAPTop().gHistoryFrameworkObj' is null or not an object'
- if you're calling the EP content from SAP BusinessObjects InfoView, the content doesn't return and the page stays loading.
These difficulties arise because the portal javascript code assumes by default that the portal is loaded in the top frame of the current window. Since EP6.0 SP13, the EPCM.getSAPTop() method was implemented to enable referencing the sap portal in an iframe or frame of another system. To configure this method, you need to carry out some simple configurations to 'alert' EP that it is does not own the window.
These steps are already documented in the guide
How To … Interoperate SAP Enterprise Portal and IBM WebSphere Portal Server. The document is targeted at IMB WebSphere, but the relevant steps are applicable to all siutations where EP content is loaded in an external iframe. The requisite steps are described in particular in point 4.2.1.1.
As this document might not be easily found by someone facing such an issue, especially for a platform other than WebSphere, I want to highlight the relevant steps in this blog. Please note that integration of content from two different portals might present complexities across multiple points, and other issues like SSO, cross frame scripting, theme integration etc. are not considered by this configuration.
The general approach is to define a special URL alias for calling the portal, and maintain the parameter nested_window=1 for this alias. Then, when the portal is called using this alias, there is a changed behaviour in certain JavaScript methods that generally require the SAP EP to run in its own browser window.
Step 1. Define Your Alias
The alias must be set in the web.xml file, located in the directory \usr\sap\<SID>\<NO>\j2ee\cluster\server0\apps\sap.com\irj\servlet_jsp\irj\root\WEB-INF.
In the web.xml, make a copy of the init-param element whose param-name element has the value portal. In the copy, change the param-name value to portal/interop, and then append nested_window=1 to the value for param-value.
The following is an example of such a init-param element:
<init-param>
<param-name>
portal/interop
</param-name>
<param-value>
anonymous=0,proxy=0,low_bandwidth=0,include_in_url=1, include_application_name_in_url=1,nested_window=1
</param-value>
</init-param>
You need to restart the WAS Java after enabling the 'interop' link.
Step 2. Update Your Links
Secondly, you need to adapt the link which opens the EP content to include the the interop alias. Whenever you enter the portal with the URL http://portal.domain.com/irj/portal/interop, the portal works in nested mode. The best approach is to enter this alias in a URL using the NavigationTarget syntax, something like this:
http://portal.domain.com:50000/irj/portal/interop?NavigationTarget=pcd!3aportal_content!2fcom.sap.pc...
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
17 | |
11 | |
11 | |
11 | |
11 | |
8 | |
6 | |
5 | |
5 | |
5 |