Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata

Applies to:

  • SAP CRM
  • CRM Web UI 
  • CRM Web IC 
  •  BSP GUI for Windows
  • SAP shortcuts

Summary

                          CRM contact center and sales team users extensively use ECC transactions in the daily business. The new CRM Web UI uses ITS based GUI for HTML to launch ECC transactions. But many SAP CRM users would like to continue using GUI for Windows rather than ITS based GUI for HTML for many reasons like-- Screen rendering performance, GUI response to key strokes etc.  Unlike PCUI, The new CRM Web UI does not require SAP portals in CRM landscape.The following solution will discuss about the launching of ECC transactions in GUI for Windows with out any portal Transaction IViews.

Author:  

Ranganatha P Kurupati 
Company:       Bespoke Consulting LLC.
Created on:    02/22/2010
Author Bio
            I'm currently working as a CRM Consultant in Win IC, Web IC , Sales, Service and  Marketing areas. I have over 10 years of experience across SAP modules and specialized in SAP SRM, CRM, cProjects, Travel and Expense mgmt and Workflow.

Introduction

           SAP transactions codes can be saved as shortcuts and used to launch transactions. The same shortcut files can be generated dynamically using ABAP. Then the generated SAP shortcuts will be sent to Browser as a MIME objects in HTTP responses which will inturn launch the transaction in GUI for Windows. This solution will be implemented using Business Server Pages (BSP) and integrated into CRM Transaction Launcher.

Solution in Detail

Step-1.   Create a BSP Application and then create a page with flow logic.


 
 

Step-2.   Create URL ID for the BSP created in Step-1.



 
 
 
 

 
 

Step-3.   Transaction launcher

3.1    Start Transaction launcher wizard.
3.2     Enter Launch Transaction ID, This Launch transaction ID will be used as parameter in Logical Link ID creation (Step-4).


3.3     Enter a Class name.
3.4     Enter URL ID created in Step-2.



 

3.5     Enter an import parameter ID and value for passing current customer data. This data will be read in BSP as explained in Step-7.1




Step-4.  Create a Logical Link ID and assign the Transaction launcher ID (refer 3-2) as parameter.



Step-5.  Create a Direct link group and assign the logical link ID created in Step-4. 




Step-6.  Add the Direct link group to the Navigation bar Profile assigned in your Business Role.


 

Step-7.  Implement logic in BSP created step-1.

7.1     Read current customer.

   lv_customer_id = runtime->server->request->get_form_field( 'CUSTOMER_ID' ).

7.2     Create a SAP shortcut using Function module

  DATA: l_shortcut    TYPE string.

  CALL FUNCTION 'SWN_CREATE_SHORTCUT'
     DESTINATION lv_ecc_rfcdest
      EXPORTING
        i_transaction           = 'VA01'
        I_TITLE                 = 'Launching Sales order...'
      IMPORTING
        shortcut_string         = lv_shortcut
      EXCEPTIONS
        INCONSISTENT_PARAMETERS = 1
        OTHERS                  = 1.

  

7.3     Populate data in the Initial screen of Transaction VA01 using Shortcut parameters. For all available shortcut parameters, consult the SAP Note 103019.

  REPLACE FIRST OCCURRENCE OF 'Command=VA01' in l_shortcut WITH
  'Command="VA01 KUAGV-KUNNR=CUSTOMERNO;VBAK-AUART=OR;VBAK-  VKORG=US01;VBAK-VTWEG=01;VBAK-SPART=01"'.

  REPLACE FIRST OCCURRENCE OF 'CUSTOMERNO' in l_shortcut  with lv_customer_id. 
 

7.4      Send SAP shortcut as a MIME object in BSP response.

 DATA: l_xshortcut   TYPE xstring.
  runtime->server->response->set_header_field( name  = 'content-type'
        value = 'application/x-sapshortcut' ).

 CALL METHOD cl_http_utility=>if_http_utility~encode_utf8
    EXPORTING
      unencoded = l_shortcut
    RECEIVING
      encoded = l_xshortcut
    EXCEPTIONS
      OTHERS = 1.
  IF sy-subrc = 0.
    CALL METHOD runtime->server->response->set_data( data = l_xshortcut ).
  ENDIF.



 

Results

Click on ECC Txn  Direct link . ECC Sales Order will be launched in GUI for Windows.

If user is NOT logged in into ECC, A small pop up will be displayed prompting to enter a password. On entering password the control will be directly transferred to second screen of transaction VA01 by pre-populating Customer ID and Sales area data and skipping the initial screen.

If the user is already logged in into ECC, The control will be directly transferred to second screen of transaction VA01 by pre-populating Customer ID and Sales area data and skipping initial screen.



 

Limitations

        Initial login into SAP Application Server is required if SSO for GUI for Windows is not set up from your workstation. 

Related Content

SAP Notes

099054 -  SAPshortcut:  Collective note
396559 -  SAPshortcut:  User needed for SNC logon to a R/3 system
138498 -  Single Sign-On Solutions

SAP Help

http://www.microsoft.com/isv/sap/technology/interop/ad.aspx

http://help.sap.com/saphelp_nw04s/helpdata/en/e6/56f466e99a11d1a5b00000e835363f/frameset.htm&nbsp

                              
http://help.sap.com/saphelp_crm40/helpdata/en/92/54ee09984b11d687bc005004f2f41f/content.htm

Useful Information

Short quick summary to catch the reader's attention and of course the search engine

26 Comments

  1. Former Member

    One of the best articles.

  2. Good article. Is there a way to embed Launch Transaction links within say an Opportunity page ? I can create enhancement to the transaction, add a new BSP component to it, however how do I call Transaction launcher link within that component ?

  3. Guest

    Thanks Arif and Mukesh.

    Mukesh,

         Transaction launcher is used just to add a bsp or a non-bsp htm page or BOR entry to Nav bar. You can call Nav bar link from component with below code in o/b plug.

          lr_navigation = cl_crm_ui_navigation_service=>get_instance( me ).
          lr_navigation->navigate( iv_link_id = ''
                              iv_data_collection = lr_collection ). 

  4. Guest

    I got a few emails asking where the code goes in BSP.The answer is--

    entire code goes into Page layout. You can alternatively put the code into event handlers too.

    Thanks

    --Ranganatha

  5. Guest

    Hi Ranganath,

     First of all, Thank you very much to share this article with us.

    I have exactly same requirement in my current project in CRM 7.0 (Support Pack Level 5) and i implemented same steps as you desribed in the article. I am able to launch ECC transaction VA21 by following your article now, however i am facing few issues -
    1. It opens up transaction in new GUI window, not on IE page itself
    2. It ask for target system user credentials. I beleive this should be solved if we have SSO enabled for windows?
    3. I am able to pass parameters on 1st screen of VA21 (tx type and Sales area) however not able to skip the screen to jump to 2nd screen with customer id populated on it.

    My requirement is to integrate this solution from Create Quotation button on CRM Account page so i can pass tx type, sales area and customer number. Please suggest if you have any pointers for above issues?

     Please suggest as this is something really urgnet for me. Thank you very much in advance!!!

    Thank you,
    Abhishek

  6. Guest

    Hello Mr. Ranganat,

     I believe... its impossible to pass Sold-to pary number in second screen. I dont know how you are claiming here that customer number will be autopopulated in 2nd screen. Your code doesn;t even talk about skipping the 1st screen which i have figured later.

     Please suggest if i am wrong?

    Thanks,

    Abhishek

  7. Guest

    Hi Abhi,

    Pls remember this wiki is just a guide to build your own solution.

    If you have read Step 7.3 and SAP note 103019, You would have  known about skipping initial screen with out much effort.

    It is certainly possible  to pass customer number to VA01 like SAP does in CIC0

    You can also build custom transaction ZVA01 and call  order create with dialog FM and pass customer number and Sales area data.

    Thanks

    --Ranganatha

    PS:  I don't have wiki editor access, So I can't edit  about VA01 customer number issue. I hope this reply helps every one.


  8. Hi Ranganatha

     Very good artice . we have deployed an order entry  solution using this technique . We would like  to embed the sap gui transaction in webui Interaction , the way a transaction is presented when called by transaction launcher. Is this possible ?, Have any advice on how this could be achieved ?

    Many Thanks

    John









  9. Hi Ranganath,

     Thanks for such a nice article and great concept behind using BSP. 

    @ John,

     If you want to open ERP transaction inside WEB UI itself, then it is very much possible. There are many threads in CRM Web Client Forum on SDN describing how to do it.

     Hope that helps you.

  10. Guest

    Hi,

    I am trying to configure one bespoke R3 transaction and followed the steps mentioned above. I have added following code in OnCreate event of BSP page. But when I click on link in CRM UI, it opens a blank screen.

    * this handler is called once the page is first created (stateful mode)
    * it performs a once-off data initialization or object creation
    DATA: l_shortcut    TYPE string.
    DATA: l_xshortcut   TYPE xstring.
    data: response TYPE REF TO CL_HTTP_RESPONSE." if_http_response.
    create OBJECT response.

    CALL FUNCTION 'SWN_CREATE_SHORTCUT' DESTINATION 'PEDCLNT200'
     EXPORTING
       I_TRANSACTION                 = 'ZORD'
    *   I_REPORT                      =
    *   I_SYSTEM_COMMAND              =
    *   I_PARAMETER                   =
    *   I_SAPLOGON_ID                 =
       I_SYSID                       = SY-SYSID
    *   I_GUIPARM                     =
       I_CLIENT                      = SY-MANDT
       I_USER                        = 'UWXA11'
       I_LANGUAGE                    = SY-LANGU
       I_WINDOWSIZE                  = 'Normal window'
       I_TITLE                       = 'ZORD opening'
    *   I_CUSTOM                      =
     IMPORTING
    *   SHORTCUT_TABLE                =
       SHORTCUT_STRING               = l_shortcut
     EXCEPTIONS
       INCONSISTENT_PARAMETERS       = 1
       OTHERS                        = 2
              .
    IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    response->set_header_field( name  = 'content-type'
                                value = 'application/x-sapshortcut' ).
    CALL METHOD cl_http_utility=>if_http_utility~encode_utf8
      EXPORTING
        unencoded = l_shortcut
      RECEIVING
        encoded   = l_xshortcut
      EXCEPTIONS
        OTHERS    = 1.
    IF sy-subrc = 0.
      CALL METHOD response->set_data( data = l_xshortcut ).
    ENDIF.

    -------

    Kindly share what might be the issue.

    Thanks and Regards,

  11. Hello,

    the code you've provided can not work as you're calling the function with the CRM SYSID and the CRM Client. I think you should leave that empty as shown in the example. Please put a breakpoint after the SWN_CREATE_SHORTCUT call and check the l_shortcut variable. Save the content as a .sap textfile on your desktop and doubleclick on it to test it.

    Best regards
    Gregor

  12. Guest

    Hi Gregor,

    I checked the shortcut. It appears with '##' in between every line. When I saved it as .sap file , that did not work as SAP shortcut. But when I removed '##' and instead of '##' I inserted next line and then saved the file. That short cut worked.

    From SWN_CREATE_SHORTCUT > I am getting l_shortcut = [System]##Name=PED##Description=##Client=200##[User]##Name=UWXA11##Language=EN##[Function]##Title=Launching Sales order...##Command=ZORD##Type=Transaction##[Configuration]##GuiSize=Normal window##

    And when I save it in .sap file > it does not work. But if I modify the file >

    [System]
    Name=PED
    Description=
    Client=200
    [User]
    Name=UWXA11
    Language=EN
    [Function]
    Title=Launching Sales order...
    Command=ZORD
    Type=Transaction
    [Configuration]
    GuiSize=Normal window

    And then it works.

    I am not sure how do I correct that string at run time.I tried replacing '##' with new line in code. But it does not do anything.

    Any idea where the things are wrong. I doubt whether I shall modify the code as given in step 4.'Send SAP shortcut as a MIME object in BSP response' of blog.

    Thanks and Regards,

  13. If you check the binary representation of the ## characters you would see that this is already a CR/LF. Can you provide some more details about what browser and SAP GUI version you are using?

  14. Guest

    We are using Internet Explorer 9.0 and SAP GUI 7.1. (patch level 12)

  15. Please check Note 1592282 - SAP EP / NWBC: starting SAP GUI via SSD iView on IE9 failed. Perhaps using the latest release of SAP GUI 7.2 solves the problem. You should upgrade anyway to 7.20 as 7.10 is out of support.

  16. Guest

    I tried on other laptop where we have SAP UI 7.2 and IE 9. It did not work there as well. It still opens one blank screen.

  17. What you could try now is to enable the HTTP recording using Transaction SICF for the BSP application you've created. It will allow you to analyse the content which is returned by the application and also the HTTP Headers. Check if the content type is correct.

  18. Guest

    I have finally fix the issue, I was using response as object defined in program whereas it should be server based object.

    in program I replaced response by CALL METHOD runtime->server->response and it works...:)

    The final code looks like:

    DATA: l_shortcut    TYPE string.
    DATA: l_xshortcut   TYPE xstring.

    CALL FUNCTION 'SWN_CREATE_SHORTCUT' DESTINATION 'WEDCLNT220'
     EXPORTING
       i_transaction     = 'ZORD'
       i_client               = sy-mandt
       i_user                = sy-uname 
       i_language         = sy-langu
       i_windowsize   = 'Normal window'
       i_title                  = 'ZORD opening'
      IMPORTING
       shortcut_string  = l_shortcut
     EXCEPTIONS
       inconsistent_parameters   = 1
       OTHERS                             = 2
              .
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    CALL METHOD runtime->server->response->set_header_field( name  = 'content-type'
                                value = 'application/x-sapshortcut' ).
    CALL METHOD cl_http_utility=>if_http_utility~encode_utf8
      EXPORTING
        unencoded = l_shortcut
      RECEIVING
        encoded   = l_xshortcut
      EXCEPTIONS
        OTHERS    = 1.
    IF sy-subrc = 0.
      CALL METHOD runtime->server->response->set_data( data = l_xshortcut ).
    ENDIF.

    Thank you Gregor for your help.

    Regards,

  19. Hello Rangnath,

    Nice wiki, Congrats.

    I have a question while implementing transaction launcher via this approach.

    Question : With this implementation is it possible to return parameter from ECC to CRM system, for eg. can we send sales area data or "sold to party" from ECC to CRM in the same session?

    My requirement is to launch the ECC transaction from activity overview page in CRM and control should come back to activity overview page along with the return parameter from ECC.

    Any pointers towards this will be highly appreciated.

    Regards,
    Sumit Mittal

  20. Ranganath, thanks for such a nice documentation. However, it would be nice to mention the transaction codes in CRM for steps like Define URLs etc.

  21. Dear Vimal,

    if you know the transaction codes please maintain the page. It is a Wiki and I hope you can edit the page.

    Best regards
    Gregor

  22. Former Member

    Hello,

    it is possible to execute the event from a Button in my BSP view ?

    I put the coding in the handle of my button event but the transaction is not launched.

    When i copy the shortcut string to a file and save it as .sap the transaction opens corretly.

    Please help.

    Thanks

    Florian

  23. Former Member

    After coding of step 7 i attached this coding

     DATA lr_navigation TYPE REF TO if_crm_ui_navigation_service.

      lr_navigation = cl_crm_ui_navigation_service=>get_instance( me ).
      lr_navigation->navigate( iv_link_id = ' ZCOMMPR01' ).     "Name of my logical Link

    but nothing happen.

    I dont have put any entity in the collection for the navigation, should I ?

  24. Former Member

    Hi Experts,

    We are trying to call the ECC transaction VA01 from CRM WEB UI IC AGENT role. We are using the SAP Shortcuts concept with SWN_CREATE_SHORTCUT to call the ECC transaction as per the above instructions. Our requirement is to pass the Sold-to number in second screen of VA01, we tried passing the value to KUAGV-KUNNR in command but the values are not getting passed. Please let me know how we can pass the value to Sold-to party (which is on second screen of VA01) in this case. 

    Please advise.

    Regards.

  25. Former Member

    You need to parse the URL , read parameters and call the FM  order create with dialog . Check BUS2032 for exact FM name.

  26. Former Member

    Hello,

     

    I'm looking for solution to launch VA01 in SAP GUI for Windows inside WEB UI work area. I know it should be done using ssd command but looking for a code sample.

    Any feedback is greatly appreciated. We have CRM version 7.40, WEBCUIF 747, ECC  7.40

     

    Thanks,

    Helena