jiannan.che2

2 Posts
h2. The Purpose of this Blog The purpose of this blog is to describe an interoperable scenario between SAP Services Registry in SAP NetWeaver PI 7.1.1 and the Microsoft UDDI Services 9.0.  I am exploring this scenario as a prototype work to evaluate if it is possible to use Microsoft UDDI Server as the company-wide UDDI repository that can work with SAP.  The procedure described in this blog primarily follows the procedure outlined in the SAP article “{code:html}HOW TO SET UP AN INTEROPERABLE SCENARIO WITH SAP NETWEAVER SERVICES REGISTRY AND HP SOA GOVERNANCE SYSTINET REGISTRY FOUNDATION{code}”.

h2. Configure the Microsoft UDDI Services 9.0 h3. Configuration for HTTP Basic Authentication The {code:html}Firefox Poster Extension{code} was used to post the requests. 101 h2. Configuring the SAP NetWeaver Services Registry h3. Configure the UDDI Destination Template This is done following the procedure described in this SAP Help page (http://help.sap.com/saphelp_nwpi711/helpdata/en/47/d390edb8fc3c83e10000000a42189c/content.htm). 1. Start Netweaver Administrator and go to SOA Management->Technical Configuration-> Destination Template Management 102 2. Select the UDDI_Destination entry in the list and click on the Edit button 103 3. Put in the URL address of the sap.xml installed in the Microsoft UDDI Server 104 4. Select HTTP Authentication from the Dropdown, select the User ID/Password (Basic) radio button, and put in the user ID/password 105 5. Click on the Save button to save the configuration h3. Configure the Service Registry for Basic Authentication 1. Within Netweaver Administrator, go to SOA Management -> Application and Scenario Communication-> Single Service Administration 106 2. Search “ServicesRegisterySi” by “Service WSDL Port Type” in the Service Definitions tab 107 3. Select “ServicesRegistrySi” and select Configuration Tab 108 4. Select the Service Endpoint “ServicesRegistrySiPort” and edit the security configurations by clicking the edit button.  Check the UserIdPassword check box under HTTP authentication and save the changes 109 h3. Configure the UDDI Destination Service 1. Within Netweaver Administrator, go to SOA Management -> Application and Scenario Communication-> Single Service Administration -> Consumer Proxies and search “DestinationSi” service proxy by WSDL Port Type 110 2. Go to the Configuration Tab and create a logical port (there is a button labeled “New”) 111 3. Select “Enter Manually” and Next 4. Enter a logical port name, set as default, and enter a valid URL for the third party service’s registry wsdl (i.e. http://microsoft_uddi_server:port/uddi/sap.xml (http://microsoft_uddi_server:port/uddi/sap.xml)). Next. 112 5. Select HTTP Authentication, User ID/Password (Basic), and enter a valid user ID/password for login to the Microsoft UDDI server.  Finish and save the new logical port. 113 h2. Testing to see if this configuration works h3. Publish a web service from the SAP Service Registry user interface 1. Open the SAP Service Registry in a browser window and go to Service Definitions->Publish 116 2. Enter the WSDL URL of a service to be published and click the Next button 117 3. Put in the service related data and click on Next 118 4. Put in the system data and click on Next 119 5. Select a state of the service and click on Next 120 6. Classify the service and click on Next 121 7. Do a final review and click on Finish 122 8. The service is successfully published 123 9. Search for the service in SAP Service Registry to verify 124 125 126 10. Search for the service in Microsoft UDDI Server to verify 127 128 129 130 131 The lifecycle status is also published 132 The documentation URL is also published 133 h3. Publish an Enterprise Service from an ECC System to the Microsoft UDDI Server 1. Through the WSPARAM transaction code, check that the ECC system has been configured to connect to the SAP Service Registry in the SAP PI 7.1.1 system.  Copy the name of the Service Registry for later use.  If there is no logical port configured in WSPARAM list, click here (http://help.sap.com/saphelp_nwpi711/helpdata/en/25/683fbe7e01407cb20995d10d71c895/content.htm) for more information on setting Up the Connection from ECC backend to the Services Registry. Advised by SAP that since Microsoft UDDI does not provide the Security service, when configuring the connection in the ECC backend, make sure the new consumer proxy ServicesRegistryFlatSi is used instead of the older one ESRegistryWSSi.  The older one always goes via the UDDI security service. 134 2. Execute the program “PRG_ER_SERVICES_PUBLICATION” a. Enter the enterprise service name “ECC_MATLERPINVHNDLBYIDLOCQR” b. Check the Force Publication checkbox c. Enter the logical port name copied in step 1 d. Click on the Execute button 135 3. The publishing log is displayed showing that the service has been published successfully*.  Follow the same procedure described in step 9 and step 10 in the previous section to verify the published service in SAP service registry and in Microsoft UDDI server.
136

*Note: This service publishing from ABAP backend was not working initially.  From the tracing log the issue was found related to the physical system name published into the UDDI server.  Somehow the physical system name has “#ABAP” attached to the tail that got published into the UDDI server.  Hence when publishing the service definition using the physical system name without the “#ABAP” it failed.  I have not figured out the root cause but have come up with a work-around by manually publishing the physical system name (without “#ABAP”) into the UDDI server.  Then everything worked fine. h3. Publish an Enterprise Service Definition without End-point from SAP ESR to the Microsoft UDDI Server 1. Open a service interface in SAP ESR, select the WSDL tab, and click on the Publish button 137 2. Click on the Publish button again 138 3. Publishing result is displayed 139 4. The service definition without end-point is published into Microsoft UDDI as a tModel instead of a service. 140

The intent of this blog is to share the experience of how Visual Composer (CE 7.1.1 version) is used to develop a composite application with two SAP Enterprise Services from a PI 7.1 Service Registry.  The purpose of the application is to search for Batch ID’s of specified Material Number and Plant Code, and display detail of a selected Batch ID from the list. 

The application allows the user to enter a material number and a plant code.  Then it would call the first service BatchSimpleByElementsQueryResponse_In with the material number and plant code and display the result as a list of batch ID’s.  Then when user selects a Batch ID in the list the detail of the Batch would be displayed by calling the second service BatchByIDQueryResponse_In.

Below steps with screen shots explain how this application was created using VC 7.1.1.

  1. Start a new model using the Composite View.
    Image001

  2. Search for the services from the Service Registry.
    Image002

  3. Create a Data Service for the 1st service and select needed data from the In/Out Ports.
    Image003

    Image004

    Image005

    Image006

    Image007

  4. Add a Form View by dragging from the In Port of the Data Service.
    Image008

    Image009

    Image010

  5. Define Data for the Data Share s1.
    Image011

    Add one row for each of the two recordsets using the Initialize Data button.
    Image012

    Image013

    Image014

  6. Add Table View for each of the two recordsets in Data Share s1.
    Image015

    Image016

    Image017

    Image018

    Image019

  7. Connect Out Port of the two Table Views to the In Port of the Data Service.
    Make sure the Event name is set to “insert” and the Select mode is set to “All data rows”.
    Image020

    Then configure the data map.
    Image021


    Image022

    Image023

    Image024

  8. Adjust the View’s Layout as appropriate.
    Image025

  9. Add a Table View by dragging from the Out Port of the Data Service.
    Image026

    Image027

    Image028

  10. Create another Data Service for the 2nd service and select needed data from the In/Out Ports.
    Image029

    Image030

    Image031

  11. Connect the Out Port of the Table View of the 1st data service to the In Port of the 2nd data service.
    Image032

  12. Map the data between the table view and the 2nd data service.
    Image033

    Image034

  13. Add a Form View to display the response data from the Out Port of the 2nd data service.
    Image035

    Image036

    Image037

  14. The whole picture of the Composite View.
    Image038

  15. Deploy.
    Image039

  16. Test run the application.
    Image040

    The input, enter the Material Number and the Plant Code:Image041

    The output, select one Batch ID from the list of Batches and the Batch detail is displayed:Image042

This Composite View is composed of two data services, two form views, three table views, and absolutely no coding.  The biggest challenge to me was to figure out how to call the first service BatchSimpleByElementsQueryResponse_In that has clustered data structure for the input data.   I have searched in SAP SDN for examples or discussions without much luck.  Hope this blog will save a little time for others who will implement something similar.