When using a Portal integrated Launchpad such as ESS/MSS, all navigation requests are handled by Launchpad. In the standard solution the navigation requests are passed to the portal integration API which then invokes the Application Integration implementation included in the ERP Common role. For external URLs the navigation target within the ERP Common role is the iView “Launchpad Start URL” with the ID lpd_start_url. The challenge with the standard implementation is that external URLs will be accessed inside a frame. Most web sites such as Google, Yahoo, etc. do not allow their websites to run inside a frame and even if some web sites do, they might not work properly while accessed in a frame.
Custom Portal Component
Create a new Portal Application Project in NWDS. Within the project create a new Portal Application Object. Choose Portal Component of type AbstractPortalComponent. See the attachment for the coding of doContent().
You may be required to add servlet.jar as an External JAR into the build path, especially if you get syntax errors for HttpServletRequest.
Save, Export and Deploy to AS JAVA.
Select the new PRT iView (Copy) from the Portal Content Catalog under folder Portal Applications and create a new iView for it (Paste as PCD Object). Name the new iView “Launchpad Start URL”, technical ID lpd_start_url with the prefix com.sap.pct.erp.common.
Modifiying ERP Common role
Locate the standard “Launchpad Start URL” iView and remove it from the role. Add the custom iView to the role as a delta link. Now locate the standard iView and add also it as a delta link to the role, the iView will automatically be named lpd_start_url_2.
Test and verify
For any URL of type EXTERNAL, a proper redirect should now happen bypassing the portal completely. For all other types of URLs the standard iView (lpd_start_url2) will be called.
In the standard Launchpad implementation, navigation paths can’t be easily modified. The paths are contained in table APB_LPD_PATHS. SAP note 1757909 introduces customization table APB_LPD_PATHS_C which can be used to override the navigation paths. Even then having custom navigation types is challenging: at least data types and classes need to be enhanced. The approach I have taken has minimal impact on the back-end system but still a standard portal object needs to be modified which means it must be done again in case of system updates.