Josué Cruz.

SAP Portal, SAP KM, SAP Java Developer, SAP ESS/MSS, SAP Internet Sales, ABAP certified, Adobe Forms (fabricadoenmexico@gmail.com)

Initial WorkSet Map for SAP Enterprise Portal
Josué Cruz (fabricadoenmexico@gmail.com)

Important Note

Is important for readers that knows that this development is based in the original Workset Map Iview. Objetive

The Workset Map Iview serves as entry page for a role in SAP Enterprise Portal, but there isn´t a Initial Workset Map Iview that shows a initial portal page with information of user roles . This is the reason to me for develop a general Initial Workset Map Iview. My Initial Workset Map or Welcome Page looks like the image below, showing the roles which contains the user logged into the portal. Each image is the pictogram property of each role, and their respective role description.

Steps for making your own Initial WorkSet Map

1. Open the SAP Netweaver Developer Studio.

Josué Cruz. SAP Portal, SAP KM, SAP Java Developer, SAP ESS/MSS, SAP Internet Sales, ABAP certified, Adobe Forms (fabricadoenmexico@gmail.com) 2. Create a New Project, File > New > Project. In the wizard screen select Portal Application > Create a Portal Application Project and click on the Next Button. Finally enter the Project Name, “com.fabricadoenmexico.worksetmap.initialpage” and click on the Finish Button.

3. Create a Portal ApplicationObject, File >New > Other. In the wizard screen select Create a new Portal Application Object and click on the Next Button. Select the name of the project created in the previous step com.fabricadoenmexico.worksetmap.initialpage and click on the Next Button. Select Portal Component > AbstractPortalComponent and click on the Next Button. Enter the Name and Package Name property and click on the Finish Button.

4. Setting your classpath project. You need some JAR FILES for the project classpath. Enter to your server and go to the path C:\USR\SAP\XXX\JXXX or /usr/sap/JXXX (dependence of the OS). Copy the next files to some place in your local file system. Some files can be located on the NWDS Plugins but for educational purposes i prefer this way. Path
../j2ee/cluster/server0/apps/sap.com/irj/servlet_jsp/irj/root/WEB- INF/portal/portalapps/

Files
com.sap.portal.htmlb/lib/htmlb.jar com.sap.portal.navigation.api_service/lib/com.sap.portal.navigation.api_service_api.jar com.sap.portal.navigation.helperservice/lib/com.sap.portal.navigation.helperservice_api.jar com.sap.portal.navigation..api_mimeservice/lib/ com.sap.portal.navigation.api_mimeservice_api.jar

Path
../j2ee/cluster/server0/apps/sap.com/irj/servlet_jsp/irj/root/WEB- INF/portal/

Files
lib/prtapi.jar

To complete this step go to NWDS. Right Click on the name project Properties>Java Build Path > Libaries Tab. Click on Add External JARs Button and in the new file selection window select all the jar files that you copy to your file system in this step. 5. Open the AbstractPortalComponent. Go to open the java file com.fabricadoenmexico.worksetmap.initialpage > src.core > InitialWorkSetMap.java Copy the next code to this file

Josué Cruz. SAP Portal, SAP KM, SAP Java Developer, SAP ESS/MSS, SAP Internet Sales, ABAP certified, Adobe Forms (fabricadoenmexico@gmail.com)
package com.fabricadoenmexico; import java.util.Hashtable; import java.util.Properties; import import import import import import import import import import import import import import import import import import import import import import import import import com.sapportals.htmlb.FormLayout; com.sapportals.htmlb.FormLayoutCell; com.sapportals.htmlb.Image; com.sapportals.htmlb.Link; com.sapportals.htmlb.TextView; com.sapportals.htmlb.enum.CellHAlign; com.sapportals.htmlb.enum.CellVAlign; com.sapportals.htmlb.enum.LinkDesign; com.sapportals.htmlb.rendering.IPageContext; com.sapportals.htmlb.rendering.PageContextFactory; com.sapportals.portal.navigation.INavigationMimeRepositoryService; com.sapportals.portal.navigation.INavigationNamingHandler; com.sapportals.portal.navigation.INavigationNode; com.sapportals.portal.navigation.INavigationService; com.sapportals.portal.navigation.NavigationEventsHelper; com.sapportals.portal.navigation.NavigationEventsHelperService; com.sapportals.portal.navigation.NavigationNodes; com.sapportals.portal.prt.component.AbstractPortalComponent; com.sapportals.portal.prt.component.IPortalComponentContext; com.sapportals.portal.prt.component.IPortalComponentRequest; com.sapportals.portal.prt.component.IPortalComponentResponse; com.sapportals.portal.prt.event.IPortalRequestEventData; com.sapportals.portal.prt.pom.INode; com.sapportals.portal.prt.runtime.PortalRuntime; com.sapportals.portal.prt.service.IService;

public class InitialWorkSetMap extends AbstractPortalComponent { private NavigationNodes initialNodes = null; public void doContent(IPortalComponentRequest request, IPortalComponentResponse response) { IPortalRequestEventData data = request.createRequestEventData(); //THIS METHOD LOAD THE USER NAVIGATION NODES doLoadUser( request); int numOfNodes = this.initialNodes.size(); INavigationNode navigationNode = null; StringBuffer scriptTarget = null; NavigationNodes nodes = null; NavigationEventsHelperService service = (NavigationEventsHelperService) PortalRuntime. getRuntimeResources(). getService( "com.sap.portal.navigation.helperservice.navigation_events_helper" ); INavigationNamingHandler navService = (INavigationNamingHandler) PortalRuntime. getRuntimeResources(). getService( "com.sap.portal.navigation.service.navigation" ); NavigationEventsHelper helper = service.getNavigationEventsHelperInstance(); INavigationMimeRepositoryService mimeRepositoryService = (INavigationMimeRepositoryService) PortalRuntime. getRuntimeResources(). getService( "com.sap.portal.navigation.mimeservice.navigation_mime_repository" ); String mimeServiceCompName = ((IService)mimeRepositoryService).getContext().getApplicationName(); String webResource = request.getWebResourcePath(mimeServiceCompName); IPortalComponentContext componentContext = request.getComponentContext();

Josué Cruz. SAP Portal, SAP KM, SAP Java Developer, SAP ESS/MSS, SAP Internet Sales, ABAP certified, Adobe Forms (fabricadoenmexico@gmail.com)
navigationNode = service.getCurrentLaunchNavNode(request); String navCompName = navigationNode.getName(); navCompName = service.getInternalURL(navCompName); String parentName = null; if(request.getComponentContext() != null){ parentName = request.getComponentContext().getContextName(); parentName = service.getInternalURL(parentName); } INode currentNode = request.getNode(); request.setNode(request.getNode().getParentNode()); request.setNode(currentNode); response.write("<SCRIPT>"); response.write("function openURL(eventObj) {"); response.write("EPCM.doNavigate(eventObj); "); response.write("}"); response.write("</SCRIPT>"); IPageContext myContext = PageContextFactory.createPageContext(request, response); com.sapportals.htmlb.Form myForm = myContext.createFormDocument("overviewCompName"); myContext.getDocument().addComponent(myForm); FormLayout matrixLayout = new FormLayout(); FormLayout worksetEntryLayout = new FormLayout(); FormLayoutCell cell = null; FormLayoutCell imageCell = null; FormLayoutCell titleCell = null; FormLayoutCell descCell = null; com.sapportals.htmlb.ClientEventContainer eventContainer = null; TextView descTextView = null; INavigationNode currNode = null; Link titleLink = null; int currentPageLocation = -1; int k = 1; //THE NEXT CODE LINE IS IMPORTANT, IS THE COLUMN NUMBERS IF YOU WANT MORE THAN 2 int middlePoint = numOfNodes % 2 != 0 ? numOfNodes / 2 + 1 : numOfNodes / 2; int i = 0; for(int j = 1; i < numOfNodes; j++) { currNode = (INavigationNode)this.initialNodes.get(i); if(currNode.getName().endsWith(navCompName) || parentName != null && currNode.getName().endsWith(parentName)) { currentPageLocation = j; break; } i++; } if(currentPageLocation != -1 && numOfNodes % 2 == 1) middlePoint--; i = 0; try { //IF YOU WANT TO PRNT THE FIRST NAVIGATION PUT TO TRUE PRINTFIRSTNODE String printFirstNode = "false"; int initialIndex = 1; if (printFirstNode.equalsIgnoreCase("false") && 2 < numOfNodes) i++; for(int j = 1 ; i < numOfNodes; j++) { INavigationNode node = (INavigationNode)this.initialNodes.get(i); currNode = (INavigationNode)node; if( j == currentPageLocation || k == 3 && middlePoint + j == currentPageLocation) { j--;

Josué Cruz. SAP Portal, SAP KM, SAP Java Developer, SAP ESS/MSS, SAP Internet Sales, ABAP certified, Adobe Forms (fabricadoenmexico@gmail.com)
currentPageLocation = -1; } else { if(j > middlePoint) { j = 1; k++; } worksetEntryLayout = new FormLayout(); boolean enablePictogramClick = false; Image image = null; String enablePicClickProperty = "false"; if(enablePicClickProperty != null) enablePictogramClick = Boolean.valueOf( enablePicClickProperty).booleanValue() ); String imageName = null; try { imageName = (String)currNode.getAttributeValue( "com.sapportals.portal.navigation.Pictogram" ); if(imageName == null || imageName.equals("")) imageName = "default.gif"; } catch(Exception e){ imageName = "default.gif"; } image = new Image(webResource + "/images/" + imageName, imageName); if(enablePictogramClick) { String nameImgLink = currNode.getName() + "imageLinkToNode"; Link imageLink = new Link(nameImgLink, ""); scriptTarget = new StringBuffer(); String navContext = null; navContext = currNode.getName(); helper.addClickEvent(currNode, scriptTarget, request, false, "ExecuteLocally=true", navContext ); imageLink.setReference("javascript:void(0)"); imageLink.setOnClientClick(scriptTarget.toString()); imageLink.setLinkDesign(LinkDesign.DRAGRELATE); imageLink.addComponent(image); imageCell = worksetEntryLayout.addComponent(1, 1, mageLink); } else { imageCell = worksetEntryLayout.addComponent(1, 1, image); } imageCell.setRowspan(2); imageCell.setPaddingRight("25"); imageCell.setPaddingLeft("5"); imageCell.setVerticalAlignment(CellVAlign.TOP); try { titleLink = new Link(currNode.getName(), currNode.getTitle(request.getLocale())); scriptTarget = new StringBuffer(); helper.addClickEvent(currNode, scriptTarget, request, false, true, "ExecuteLocally=true", true ); titleLink.setReference("javascript:void(0)"); titleLink.setOnClientClick(scriptTarget.toString()); titleLink.setLinkDesign(LinkDesign.DRAGRELATE) ; titleLink.setTooltip(currNode.getTitle(request.getLocale())); descTextView = new TextView( currNode.getDescription(request.getLocale()) );

Josué Cruz. SAP Portal, SAP KM, SAP Java Developer, SAP ESS/MSS, SAP Internet Sales, ABAP certified, Adobe Forms (fabricadoenmexico@gmail.com)
descTextView.setWrapping(true); titleCell = worksetEntryLayout.addComponent(1, 2, titleLink); descCell = worksetEntryLayout.addComponent(2, 1, descTextView); titleCell.setVerticalAlignment(CellVAlign.TOP); titleCell.setHorizontalAlignment(CellHAlign.LEFT); descCell.setVerticalAlignment(CellVAlign.TOP); descCell.setHorizontalAlignment(CellHAlign.LEFT); descCell.setWidth("100%"); } catch(Exception e) { descCell = worksetEntryLayout.addComponent(2, 1, new TextView()); } worksetEntryLayout.setWidth("100%"); worksetEntryLayout.setDebugMode(false); cell = matrixLayout.addComponent(j, k, worksetEntryLayout); cell.setPaddingLeft("5"); cell.setPaddingTop("5"); cell.setPaddingRight("25"); cell.setPaddingBottom("5"); cell.setVerticalAlignment(CellVAlign.TOP); } i++; } } catch (Exception e) { e.printStackTrace(); } matrixLayout.setWidth("80%"); matrixLayout.setDebugMode(false); myForm.addComponent(matrixLayout); myContext.render(); } public int doLoadUser(IPortalComponentRequest request){ Hashtable environment = new Hashtable(); environment.put("NavigationPrincipal", request.getUser()); INavigationService connector = (INavigationService) PortalRuntime. getRuntimeResources(). getService( "com.sap.portal.navigation.service.navigation" ); try { this.initialNodes = connector.getInitialNodes(environment); }catch (Exception e) { } return 0; } }

6. Edit the portalapp.xml. Go to project name and navigate to com.fabricadoenmexico.worksetmap.intialpage > dist > PORTAL-INF >portalapp.xml right click on this file and click on Open With > Portalapp.xml Editor, choose Source Tab and copy this xml lines.
<?xml version="1.0" encoding="UTF-8"?> <application> <application-config> <property name="SharingReference" value="usermanagement,knowledgemanagement,com.sap.portal.navigat ion.service, com.sap.portal.navigation.api_mimeservice, com.sap.portal.navigation.helperservice"/> <property name="PrivateSharingReference" value="com.sap.portal.htmlb"/> <property name="releasable" value="true"/> </application-config> <components> <component name="InitialWorkSetMap"> <component-config>

Josué Cruz. SAP Portal, SAP KM, SAP Java Developer, SAP ESS/MSS, SAP Internet Sales, ABAP certified, Adobe Forms (fabricadoenmexico@gmail.com)
<property name="ClassName" value="com.fabricadoenmexico.InitialWorkSetMap"/> </component-config> <component-profile/> </component> </components> <services/> </application>

7. Create the PAR file. Right click on <project_name> and Quick PAR Upload option. In the wizard click on Finish Button. 8. Upload the PAR file. Enter like Administrator to SAP Portal and go to System Administration > Support > Portal Runtime > Administration Console. Select the PAR file you made in the last step and click on the Upload button. 9. Create an iview of type Portal Component. Obviously your component you have created. 10. Create a role. 11. Assign the iview to role. 12. Assign the role to a user. 13. Enter to test. If you ok then You =  Endif

Sign up to vote on this title
UsefulNot useful