Getting portal roles in web dynpro

Hello
I'm sure this is a common problem but I've checked all the older posts and I just can't get it working.
We have a web dynpro app that runs within an EP iView (EP6SP14), and we need to retrieve the <i>portal</i> roles for the user.
With the APIs (using IRole and IUser and the getRoles() method) we only get the J2EE roles.  These are not the same.
Can anyone help?
Thanks
Chris

Hi
Thanks for the response.  Unfortunately, we have already tried a similar approach.  See our code below.  It sees to pull the WAS J2EE roles, but not the PCD roles.
public void getPortalUserDetails( )
            IWDMessageManager messageManager =
                  this.wdThis.wdGetAPI().getComponent().getMessageManager();
            PortalIntegrator portalIntegrator = null;
            new PortalIntegrator(this.wdThis.wdGetAPI());
            WDClientUser.forceLoggedInClientUser();
            if (WDPortalUtils.isRunningInPortal()) {
                  try {
                        IWDClientUser currentUser = WDClientUser.getCurrentUser();
                        IUser sapCurrentUser = currentUser.getSAPUser();
                        sapUser = sapCurrentUser;
                        String userId = currentUser.getClientUserID();
                        // Get the SAP Current User  
                        if (sapCurrentUser != null) {
                             portalUserId = sapCurrentUser.getUniqueName();
  public boolean isManager( )
            String roleName = null;
            boolean correct = false;
            try {
                  if (sapUser != null) {
                        Iterator rit = null;
                        rit = sapUser.getRoles(true);
                        IRoleFactory rfact = UMFactory.getRoleFactory();
                        while (rit.hasNext()) {
                             roleName = (String) rit.next();
                             IRole role = rfact.getRole(roleName);               
                        wdComponentAPI.getMessageManager().reportSuccess(
                             "rolename: " + roleName);
                        correct = sapUser.isMemberOfRole(roleName, true);
            } catch (Exception e) {
                  correct = false;
                  Logger.error(e.toString());
                  return correct;
//     return true;

Similar Messages

  • Get date from portal in a web dynpro?

    hi all,
    how get date from portal in a web dynpro???
    thanks.

    new Date(System.getTimeInMillis());
    Good luck, Roelof

  • Can the role info be passed from portal to ABAP web dynpro application

    Hi,
    We have some roles in the portal. We call the ABAP web dynpro applications from the portal. Is it possible to pass on the role from the portal to the Web dynpro ABAP application so that we can use this role information in the application.
    Thanks,
    Pooja

    Hi,
    you can try to add the expression
      role=<IView.PCDUnit>
    as part of the Application Parameters in the iView. This will be the role in 99%. However not all iViews started in the Portal must belong to a role. You can start iViews using page navigation that are not part of a role. Therefore the PCD does not talk about roles but about "units" which is the superordinate term.
    the value will be the PCD path of the role - e.g:
      portal_content/myFolder/roles/myRole

  • How to set a variable in portal session using web dynpro java.

    Hi,
    I have created a web dynpro application, which is running inside portal. I have created a role called "R1". Inside role R1, i have created 3 workset W1, W2 and W3. and inside each workset i have some pages and iviews.
    My requirement is when user logins to the portal , and when he clicks on role R1 for the first time, a login page should come (so that we can do revalidation), and when he enters his password again in that login page , then only workset W1, W2 and W3 should be visible/accessible to him and after successful revalidation, if he clicks again on role R1, in that particular portal session, than that login page should not come.
    for this, i thought i will set a variable in portal session, whenever user successfully revalidated himself, and if after successful revalidation he clicks again on role R1, i will check in doinit method of webdynpro whether variable is set or not (which i already set on successful revalidation), and if it is set then i will do Donavigation else i will present login page to the user.
    Can anyone tells me how to set a variable in portal session using web dynpro java.
    thanks
    Arush

    Hi,
    Try this:
    WDScopeUtil.put(WDScopeType.CLIENTSESSION_SCOPE, key, value)
    WDScopeUtil.get(WDScopeType.CLIENTSESSION_SCOPE, key)
    Ex:
    WDScopeUtil.put(WDScopeType.CLIENTSESSION_SCOPE,"Key1","Value1");
    String value1=WDScopeUtil.get(WDScopeType.CLIENTSESSION_SCOPE,"Key1").toString();
    /people/william.cui/blog/2007/02/12/sharing-session-context-between-parent-and-external-windows-running-on-same-host
    Regards,
    Charan

  • Any way to get HTTP header in web dynpro Java?

    Is there any way to get HTTP header in web dynpro java? This method gives me the params. Is params same as header? It doesn't have any way to retrieve header data. I am on NW 7.0.19
    WDProtocolAdapter.getProtocolAdapter().getRequestObject().getParameter("param");

    Dear Faraz,
    I'm afraid the code you've pasted is only to retrieve URL parameters.
    Have you tried this document to see if it offers any good hint:
    [http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b0446f5c-fcb9-2910-e082-88becbe3ddc9]
    Not sure if you can process the HTTP header with a WD4J.
    An alternative could be to develop some Portal component in plain JAVA working as a proxy to call your WD4J afterwards.
    That portal component would process your HTTP header and forward any parameter to your WD4J.
    But this is me just guessing.
    Kind Regards
    /Ricardo

  • Generate URL to Portal Objects in Web Dynpro

    Hi All,
    I have a requirement where in I have to generate a URL to portal objects such as iviews/pages from the PCD. I am able to retrieve the PCD contents but I am not able to generate the URL dynamically.
    I cannot use WDPortalNavigation.absoluteNavigate method, since I need the URL of the object.
    IUrlGenerator can be used, but it is asking for the IPortalComponentRequest object. Now where can I get this object in web dynpro.
    Or is there a way to generate the URL of the iview/page dynamically in Web Dynpro. I have to use standard API only.
    Please provide inputs on this.
    Thanks in advance.

    Use the below url
    /irj/servlet/prt/portal/prtroot/pcd!3aportal_content!2f<yourfolder ID>!2f<if any subfolder id>
    !2fcom.abc.xyz
    where com.abc.xyz is the ID of the xyz iview/page
    Use that url in your webdynrpo
    Raghu

  • Create portal user using web dynpro abap application

    Dear All,
    I would like to know is it possible to create portal user-id through web dynpro abap application.
    My requirement is
    > I have to create a web dynpro abap application. In the web dynpro abap application I have name email-id and phone number as entry fields.
    > I will click on submit, one unique id will get created. This unique id will be the login id for portal.
    I found how to create portal user using web dynpro java, but i could not find regarding web dynpro abap.
    If it is possible to create the portal users using web dynpro abap pls share the code as well.
    Regards,
    Swapnil Indulkar

    Hi swapnil,
    I think by using BAPi.. BAPI_USER_CREATE1 you can create.
    Please check this...
    Create portal user from webdynpro abap
    Creating user and assigning a group through code
    user administration su01
    How can i get the portal user id from logon ticket in the webdyn 4 ABAP
    Cheers,
    Kris.
    Edited by: kissnas on May 21, 2011 8:47 AM

  • Userid of a Portal-user in Web Dynpro ABAP

    Dear colleagues,
    we want to migrate our application from BSP to Web Dynpro ABAP and I'm looking for a procedure how I can get the userid of a Portal-user in Web Dynpro ABAP which is running inside an iView ?
    In BSP I used iView application parameter user_id and in the BSP the event handler for data retrieval with:
    userid = runtime->server->request->get_form_field( 'userid' ).
    Found a lot of entries how to do it in Java but no one for WDA ?
    Thanks in advance
    Michael

    Hi Michael,
    Actualy it is not so trivial. You have some options:
    1) In case user_id is parameter of iView you can read URL parameter like described here Webdynpro ABAP url-parameters
    2) In case user_id is not iView parameter you can use usuall ABAP <i>sy-uname</i> system variable.
    But pay attantion that it is not really EP user. Here we have 2 options: user mapping and SSO. In case of user mapping <i>sy-uname</i> will contain R/3 user which is mapped to EP user. In case of SSO <i>sy-uname</i> will contain same user name like in EP, because by using SSO user must ne the same on issuing and accepting systems.
    Best regards, Maksim Rashchynski.

  • Using KM and Collaboration API in portal component and web dynpro

    Hi,
    I have to develop portal components and Web Dynpros (JAVA) which have to use the following functions:
    - copy, delete KM documents
    - sending E-Mails 
    Can anyone give me some actual documentation links for the KM and Collaboration APIs ?
    Which references do I need in portalapp.xml for KM/collaboration and which jar-Files do I have to add to the project?
    We are using NetWeaver 7.01 SP18.

    Hi  Yogalakshmi,
    thank you for the link and the information. Now I managed to work with the KM documents.
    One more Question: to get the resource Context, I use this code:
    portalUser = WPUMFactory.getServiceUserFactory().getServiceUser("cmadmin_service");
    IResourceContext resourceContext = new ResourceContext(portalUser);
    The method getServiceUser is deprecated, also the com.sapportals.portal.security.usermanagement.IUser is deprecated. Is there an other possibility to get the ResourceContext. (perhaps with com.sap.security.api.IUser) ?

  • How to catch URL parameter from Portal URL in Web Dynpro iView

    Hi All,
    I have a web dynpro application running as a portal iView successfully. Now the client wants to make it internationalized with 7 languages. Currently they access the portal - and via role assignment they get to the portal tab with the wd iView. Now they want to send a parameter for the language key with the portal URL. So when they are typing in http://myportal.mydomain.com now they want to type in http://myportal.mydomain.com?sap-locale=de or so. My question is how can I catch this parameter in the WD application when it is running inside a portal iView? Is it at all possible?
    I have written a very small application which is trying to catch a URL parameter named PARAM. The code I have written is the default one as below:
    String paramValue = WDWebContextAdapter.getWebContextAdapter().getRequestParameter("PARAM");
    When I run the application standalone and add the PARAM=something in last of the URL I can catch it. But when I create an iView and while previewing it I add the same PARAM value it is coming as null all the time. Same when I add this iView to a role and show it via role assignment in protal. Please help to let me know how to achieve this. I think if I can read the parameter value from Portal URL in the WD iView - then I can set it as the default locale of the application and then show language specific file to achieve internationalization.
    Your urgent help will be highly appreciated.
    Warm Regards,
    Shubho

    Hi Shubhadip
    Even if you get the parameters, how do you internationalize your application? Are you not following the standard way as described in the following link. In this case you never need to capture any such parameter. This is done by the WD runtime automatically .
    <a href="http://help.sap.com/saphelp_erp2005/helpdata/en/f4/d95664da179b4db731e21c2e470b72/frameset.htm">Internationalization of WD projects</a>
    You can retrieve application parameters specified at the creation of iview by "adding parameters(with the same name as in iview application parameters) to the default plug of the Component Interface View of the WD application". "onDefaultPlug" method of the interface view controller you get these values as parameters, which you can save in the context node of component controller for later use.This is guaranteed to work.
    But again this is not what you want exactly. You want the user to specify the value at runtime. If you have just 7 languages, you can create 7 set of iviews with different application parameter value indicating language key, and assign to 7 different set of roles, each representing one set of users with common language.
    I hope you find a solution.
    Regards
    kk

  • Portal 7.3 & Web Dynpro iView, both accessed from Internet via Web Dispatch

    Hi guru,
    I'd like to know the best (or the correct) way to configure the FQDN and required DNS setting to allow user access ABAP Web Dynpro iview from internet.
    My setup here is very typical:
    One EP 7.3 in intranet, having "ep.internal.mycomp.com" as FQDN (given during installation)
    One SAP ECC in intranet, having "erp.internal.mycomp.com" as SAPLOCALHOSTFULL parameter
    One Web Dispatcher in DMZ, having "service.mycomp.com", and listen to 80 port (later added 8000 port for AS ABAP).
       User access my portal by using http://service.mycomp.com/irj, no problem.
    But problem raised during access WD4A iview, here are my problem and questions:
    [Problem]
    At the beginning, we found that the WD4A iView can only be accessed in intranet, not from internet. Eventhough we register "service.mycomp.com" in public DNS. After some http level analysis, I was shock that the WD4A iview is provided directly by AS ABAP which running this WD4A, EP does not play a "relay" role. (Don't believe the URL bar in your IE, use Tamper Data or HTTP live to check the HTTP requests, you will get it). Since we DO NOT have "erp.internal.mycomp.com" in public DNS, so the iview cannot be displayed. But I DON'T want direct access to my ERP box.
    I don't know a way to get rid of the "erp.mycomp.com" request generated by EP. So I tried to overcome the problem by leveraging the same Web Dispatcher used by EP. And I did make the WDisp -> ERP WD4A work using WDisp's FQDN (ie. service.mycomp.com:8000, also keep original service.mycomp.com:80 to EP), but the iview in EP does not use this FQDN. It use the SAPLOCALHOSTFULL parameter configured in backend ERP.  WDisp does not do any URL replacement for me.
    [Question 1]
    Is there any way to hide WD4A iview in EP (server to server communication only)?
    [Question 2]
    If I can only have "service.mycomp.com" entry in my public DNS, should I change the SAPLOCALHOSTFULL in ERP to "service.mycomp.com"?  I doubt  that it may cause a "loop" situation between WDisp and ERP ?
    [Question 3]
    Is it possible to access WD4A on ERP by two different FQDNs (one for public via WDisp, the other for internal access w/o WDisp) ? I know there is only one SAPLOCALHOSTFULL configuration.
    Anyone have done such integration ? please share your configuraiton. Thanks

    Hay Wei-Shang Ku,
    Many thanks to your prompt reply of this very old post I tried to ask!
    for the /sap/* redirect, think it required to use icm/HTTP/redirect_<xx> parametet in WDISP profile. And i did applied below too to make default WDISP URL go to /irj  (Portal login page).
    icm/HTTP/redirect_0 = PREFIX=/,TO=/irj
    so for "all request to /sap/* will go to ERP":
    icm/HTTP/redirect_0 = PREFIX=/sap/*,TO=/???  (how do you set the TO value here?)
    May i have your WDISP profile setting for reference? Did you make use of parameter wdisp/system_0?
    And here is my overall setting:
    we only have "service.mycomp.com" entry in public DNS.
    1. "service.mycomp.com" is WDISP URL mapped to 1 public IP (we used default http 80 port)
    2. we want user can access JPortal & also backend ERP via WebDynpro iView in JPortal via
       service.mycomp.com  (only port only)
    3. ERP system profile:
        SAPLOCALHOSTFULL = <ERPHOSTNAME>.mycomp.com (not in public DNS)
        icm/server_port_0 = PROT=HTTP,PORT=80$$,TIMEOUT=3600,PROCTIMEOUT=3600
    4. Portal:
        ABAP WebDynpro iView setting -
       System  = XXX (where XXX is alias of system iView)
      System iView setting -
        Logical System Name = ERPCLNTXXX
        ITS host = <ERPHOSTNAME>.mycomp.com:8000
    Thanks again your information, have headache of this issue for long times....
    Gary

  • Retrieving EP roles from web dynpro

    Hello
    I'm sure this is a common problem but I've checked all the older posts and I just can't get it working.
    We have a web dynpro app that runs within an EP iView (EP6SP14), and we need to retrieve the portal roles for the user.
    With the APIs (using IRole and IUser and the getRoles() method) we only get the J2EE roles. These are not the same.
    Can anyone help?
    Thanks
    Chris

    Hi Chris,
    have you tried to read the groups of your user? As far as i know, the roles from EP are mapped to the groups in J2EE.
    Try something like this:
    IWDClientUser user = WDClientUser.getCurrentUser();
    Iterator groups = user.getSAPUser().getParentGroups(false);
    while (groups.hasNext()) {
      String bez = UMFactory.getGroupFactory().getGroup((String) groups.next()).getDisplayName();
      // bez contains your roles (groups)
    i hope that helps
    regards
    ingo

  • Getting Portal Role of the Logged in User.

    Hi Experts ,
    I have a scenario similar to the one in following weblog:
    /people/preksha.malhotra/blog/2006/12/12/accessing-a-web-dynpro-application-through-portal-using-portal-user-id
    I need to know, if I can get the Portal "Role" of the user who has
    looged in on the portal and then pass it as the application parameter
    to the Web Dynpro application.
    Also, if there is any other way to get the Portal Role of the user
    in Web Dynpro, if EP and Web Dynpro are on different servers.
    For the same server situation i have tried the following code which works:
    Iterator rit = null;
    IWDClientUser clientUser = WDClientUser.getCurrentUser();
    IUser user = clientUser.getSAPUser();
    rit = user.getRoles(true);
    IRoleFactory rfact = UMFactory.getRoleFactory();
    while (rit.hasNext()) {
    String roleName = (String) rit.next();
    IRole role = rfact.getRole(roleName);
    wdContext.currentContextElement().setRole(role);
    Any help would be appreciated.
    Thanx in Advance
    Alka.

    Hi Alka,
    sitting in front of the same problem here as you are facing. I have WD and portal on seperate servers and want to look for specific roles a user has (or not).
    Did you find a solution? Or do you know if it is possible at all? I could imagine that the UMFactory is just looking at the server the WD is deployed to and not the portal server where it is displayed. The user is passed via SSO but the roles most probably not... (i guess?).
    You could make my day if you have a solution though... ;).
    Thanks,
    Christian

  • How to Disable Portal Links with Web Dynpro Java?

    Hi all,
    I have configured some access to my apps through iviews in my portal content, each application is included in a PCD Structure inside a User Role; according the roles asigned to my users are the access to the applications the user wolud have
    For example:
    Role 1
    RootApp
         iView1.1
         iView1.2
         iView1.3
    Role 2
    RootApp
         iView2.1
         iView2.2
    Role 3
    RootApp2
         iView3.1
    My users might have one or even the 3 roles, and depending on their roles is the access to the applications that they may have.
    Now I have a requirement of the user wherein when the user logs in to the portal and clic in the RootApp link the Dynpro Application must to present an iView showing a set of terms and conditions; if the users accept the terms then they can continue using the application defined by the PCD definition, but if the users don't accept the terms, the aplication links in the portal must be disabled and the user can not use the aplications defined, but this only has to be applied to the root link selected (RootApp) in wich the user doesn't agreet the terms and conditions, however, other applications that are non dependent of the root link (RootApp) can be used (RootApp2).
    Are there any way to disable only certain portal links using a web Dynpro implementation?
    Thanks In Advance

    Hi
    IMyService portalservice=(IMyService)WDPortalUtils.getServiceRefrence(IMyService.KEY);
    portalservice.myMethod();
    This is the code to get portal service reference and call methods implemented in the service
    Also, add prtapi.jar to build path. Add sharing refernce to portal:sap.com/<Portal Application name>
    Regards,
    Yoga

  • How to get User Id in Web dynpro application

    Hi Experts,
    I am running web dynpro application with authentication checkbox set. I want to display user id of the user in my application. I am using following code in Init method of component controller.
    IWDClientUser wdUser = WDClientUser.getCurrentUser();
    WdContext.currentContextElement().setUserName           (wdUser.getClientUserID());
    Here I am getting some integer value as userId.
    I am not using Portals, so solutions suggested for portal are not useful for me .
    Is there any way to get this uset id.
    Thanks in advance

    hi
    try this piece of code
              IWDClientUser wdUser = WDClientUser.getCurrentUser();
              IUser user = wdUser.getSAPUser();
              if (user != null)
                        IUserAccount[] acct = user.getUserAccounts();
                        if(acct[0] != null)
                                  String strUserid = acct[0].getLogonUid();
    wdContext.currentZtms_Fm_Regupdate_InputElement().setAssoid(new String(strUserid));
    Note: Defining the IUser will show an error. To resolve this, within the properties of
    the project, choose Java build path -> Libraries -> Add external jars ->
    com.sap.securities -> lib -> com.sap.security.api. Open this file and retype the code.

Maybe you are looking for