Professional Documents
Culture Documents
Configuring SAP
Exchange Infrastructure
in a Web Service
Scenario
BCO6679 WEB SERVICES
Special Project Essay
Frederico Chan (3844793)
11/8/2010
Table of Contents
1.0 Introduction to SAP Exchange Infrastructure (XI) ....................................................... 2
1.1 The Basic ................................................................................................................... 2
1.2 The Architecture......................................................................................................... 2
1.3 Adapter Engine and SOAP Adapter ........................................................................... 3
2.0 The Special Project Scope ......................................................................................... 4
3.0 Use of SAP XI to consume Web Services .................................................................. 6
3.1 Setting up a SOAP Adapter........................................................................................ 6
3.2 Uploading the WSDL.................................................................................................. 6
3.3 Creating a SOAP Receiver Channel .......................................................................... 8
3.4 Designing Integration Scenario .................................................................................. 9
3.4.1 Application Component ......................................................................................... 10
3.4.2 Actions .................................................................................................................. 10
3.4.3 Connection ............................................................................................................ 11
3.4.4 Start and End Point ............................................................................................... 11
3.5.0 Configuring Integration Scenario ........................................................................... 12
3.5.1 Test Configuration ................................................................................................. 15
4.0 Challenges ............................................................................................................... 16
5.0 Conclusion ............................................................................................................... 16
6.0 Reference ................................................................................................................ 17
7.0 Appendix .................................................................................................................. 18
Page 1 of 23
Figure 1.0 SAP XI shown as integration broker within the Netweaver Platform.
The goal of the SAP XI is to provide a platform for internal and external process integration. It
gets delivered with prepackaged collaboration knowledge and offers a major control point for
business integration. SAPs goal is to centralize cross-system integration in one place within SAP
XI in traditional SAP implementations this is achieved using ALE technology or other EAI tasks
like flat file exchange. SAP XI includes also a BPEL engine which enables not only simple message
routing between systems, but also more intelligent system integration scenarios. This BPEL
capability is not going to replace the existing SAP Business Workflow capabilities that are still
included within any ABAP based SAP instance like CRM, SRM or R/3.
Page 2 of 23
middleware components that are using both personalities of an SAP Web Application Server
the Java and the ABAP part.
Page 3 of 23
US Weather Data
SAP XI
First we discussed the consuming of Web Services with SAP XI. In the consuming example (Figure
4.0), the website WebServiceX.NET published US weather data via free web services, the
Victoria University SAP XI system is then configured with a SOAP adapter and a integration
scenario to consume that web service.
service The user interface is a web application
tion generated with
ABAP webdynpro, it serves as the triggering for the web service consumption by inputting the US
city name and triggering the request connection for web service.
service
The WebServiceX.Net is a free web service site providing a one week weather forecast for valid
USA city (eg. Washington, New York, San Francisco, etc). Although WebserviceX.NET provides
provide
other web services we are only using weather forecast in this example. The WSDL Schema
Sch
location can be found below, and for the entire definition file see Appendix A.
Page 4 of 23
http://www.webservicex.net/WeatherForecast.asmx?WSDL
Integration scenario is build with the use of SAP XI, Turquoise system (EC7), client 001 is used to
create all the mapping and interfacing of model scenario. The interface is a SOAP adapter
prebuild in SAP system and is available by calling it using Integration Builder.
The Web Application is a BSP (Business Server Pages) application use to enable the execution of
web service adapter. This application is use to make the necessary entries and display the results.
To be able to execute the SAP XI adapter after configuration the BSP application must be
activated via ICF (Internet Communication Framework).
Browser
Acces Web
Application
HTTP
Web
Services
www.webservi
cex.net
Web
Application
Abap\Java
Webdynpro
vunw7.vu.edu.au
EC7 : 105, 106, 107
SOAP
SAP
Login
XI
Integration
Engine
SLD
vunw7.vu.edu.au
EC7 : 001
SAP
Login
EC7 - Turquoise
Page 5 of 23
Page 6 of 23
In the external definition object, choose Category wsdl and click Import external definitions:
After importing the WSDL file, you can view the included messages on the Messages tab page:
Now create a message interface corresponding to the message types from the external
definition. The message interface is responsible for routing the message to the Web service.
Page 7 of 23
In the message interface object, select the message types of the external definition object by
using the input help:
After assigning the output and input message, save and activate your work. Now you can use the
message interface for routing and mapping.
Page 8 of 23
For the receiver SOAP adapter you need at least the following parameters:
Page 9 of 23
3.4.2 Actions
Following application component we define the Actions, it represents a function within an
application component that is not subdivided further. Actions subdivide the process flow of an
integration scenario, in our example we have Actions Look Up Weather Data by City assigned to
Application Server 105 and Action Provide Weather Data by City assigned to Weather Data
Provider.
Page 10 of 23
3.4.3 Connection
A connection is a link between two actions within an integration scenario. In our example we
need to create a Cross-Component Connection, it connects actions from different application
components with each other. These actions exchange messages with each other in an integration
scenario, a cross-component connection defines the interfaces and mappings used, in our case
the connection needs to be Synchronous.
Page 11 of 23
Following the transfer we then need to select the Component View to be used, in our case is the
BCO6679_Ext_WebService_IS build earlier in the project. Once you have executed this activity
the component view is displayed in an interactive graphic.
Page 12 of 23
The second step you assigned Services to the corresponding Application Components. In this
way, you map the participants in an integration scenario displayed in the component view to
actual senders and receivers of messages in your system landscape.
Page 13 of 23
Following assignment of services you then need to configure the connections and Generate the
configurations, by selecting Create New in Generated Objects.
At the end of the generation a log provides you with an overview of all changes made in the
Integration Directory as a result of the configuration of the integration scenario. It informs you
which configuration objects have been created or reused. The generation log enables you to
recognize which configuration objects require manual work.
The Generation process should automatically generate the Receiver Determination and the
Interface Determination, if its not then this will need to be done manually.
Page 14 of 23
Here is a diagram showing the relationship between all individual objects within the integration
directory.
Page 15 of 23
4.0 Challenges
The challenges are the lack of resources required for completing the project, to understand this
we need to first look at what is required to carry out the Web Service project. On a high level the
project tasks can be summarized in three distinct parts, they are developing the Web Application
frontend, configuring Integration Scenario and preparation of the Technical Platform.
In Figure 7.0 below these three distinct project parts are matched against its corresponding SAP
software components. The Web Application frontend which is a SAP WebDynpro program
required access to SAP ABAP Workbench or Netweaver Developer Studio (NWDS) development
tools, these resources are unavailable for the project.
Secondly the technical platform that is the Netweaver 2004s is configured not to allow
connection to internet web service provider (WebServiceX.NET). SAP Netweaver 2004s by default
is setup to only allowed internal consumption and provision of web services , this is by design to
secure the SAP system from internet intrusion. Special request was submitted to make security
configuration changes to the SAP XI system, but due to Victoria University security policy the
request was rejected.
Web Application
WebDynpro
Integration Scenario
Exchange Infrastructure
Technical Platform
NetWeaver 2004s
5.0 Conclusion
In conclusion, the project was completed with a focus on designing and configuring the SAP XI
integration scenario only. The integration scenario created in this project demonstrates the
technical use of SAP XI to consume web services over the internet and the use of SAP XI SOAP
adapter in a Web Service scenario.
It is with regret that the Web Service scenario described in the project scope is incomplete, due
to the lack of development tools and system security concerns. However the completion of the
SAP XI Integration Scenario (under the Namespace -http://www.webserviceX.NET) demonstrate
the ability of SAP XI as an integration broker for SOAP messages, it demonstrate the steps once
needs to take in configuring the SAP XI to consume internet Web Services. The project delivery
also succesfully demonstrate the use of web service WSDL file to create customise SAP XI
interface for transmitting SOAP messages.
As part of the project delivery this document outlines the steps taken to configure the SAP XI
integration scenario and the fundamental knowledge required for using SAP XI in web service
scenario. This web service project is likely to continue in future semester and it is the author goal
that this document will be used as reference for future development. With intention additional
Frederico Chan (3844793)
Page 16 of 23
information was added and suggested to assist future SAP XI development, for example the
suggested use of SAP message testing tool.
In the author opinion with considerations of the project scope, future SAP XI special project
should not be carried out under educational SAP Instance. Separate SAP Instance should be
installed for project works to avoid security concerns and minimise risks on damaging dedicated
educational system. With dedicated SAP XI Instance developemt tools can be installed and
system configuration can be changed freely without any impact on scheduled university tutorial
exercises.
6.0 Reference
End-to-End Process Integration How-to Guides for SAP Netweaver 7.0, SAP Community Network,
viewed on 5th November 2010,
<http://www.sdn.sap.com/irj/sdn/index?rid=/webcontent/uuid/608725f0-2a77-2910-c2b68ddddecc4b5e>
Funk, B. and Nicolescu, V. 2007, SAP Exchange Infrastructure for Developers, SAP Press, Boston
USA.
Introduction to SAP Exchange Infrastructure, IBM Educational Assistant, viewed on 5th November
2010,
<http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ibm.iea.wsa
piw/wsapiw/5.0/IBMandSAP_Intro2SAP_tech/P04_SAP_NW_Exchange_Infrastructure/player.ht
ml>
SAP XI (Exchange Infrastructure), ERPGenie.com, viewed on 5th November 2010,
<http://www.erpgenie.com/sap/netweaver/xi/xiauthorizations.htm>
SAP How-To Guides, SAP Community Network, viewed on 5th November 2010,
<http://www.sdn.sap.com/irj/sdn/howtoguides>
SAP Library SAP Exchange Infrastructure, SAP HELP, SAP Netweaver 2004 SPS23, viewed on 5th
November 2010,
<http://help.sap.com/saphelp_nw04/helpdata/en/0f/80243b4a66ae0ce10000000a11402f/conte
nt.htm>
Page 17 of 23
7.0 Appendix
Apendix A. - WebServiceX.NET WSDL definition file
<wsdl:definitions targetNamespace="http://www.webservicex.net">
<wsdl:documentation>
Get one week weather forecast for valid zip code or Place name in USA
</wsdl:documentation>
<wsdl:types>
<s:element name="GetWeatherByZipCode">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="ZipCode" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetWeatherByZipCodeResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GetWeatherByZipCodeResult" type="tns:WeatherForecasts"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="WeatherForecasts">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="Latitude" type="s:float"/>
<s:element minOccurs="1" maxOccurs="1" name="Longitude" type="s:float"/>
<s:element minOccurs="1" maxOccurs="1" name="AllocationFactor" type="s:float"/>
<s:element minOccurs="0" maxOccurs="1" name="FipsCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="PlaceName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="StateCode" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Status" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="Details" type="tns:ArrayOfWeatherData"/>
</s:sequence>
</s:complexType>
<s:complexType name="ArrayOfWeatherData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="WeatherData" type="tns:WeatherData"/>
</s:sequence>
</s:complexType>
<s:complexType name="WeatherData">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Day" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="WeatherImage" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MaxTemperatureF" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MinTemperatureF" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MaxTemperatureC" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="MinTemperatureC" type="s:string"/>
</s:sequence>
</s:complexType>
<s:element name="GetWeatherByPlaceName">
Page 18 of 23
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="PlaceName" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetWeatherByPlaceNameResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GetWeatherByPlaceNameResult" type="tns:WeatherForecasts"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="WeatherForecasts" type="tns:WeatherForecasts"/>
</s:schema>
</wsdl:types>
<wsdl:message name="GetWeatherByZipCodeSoapIn">
<wsdl:part name="parameters" element="tns:GetWeatherByZipCode"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeSoapOut">
<wsdl:part name="parameters" element="tns:GetWeatherByZipCodeResponse"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameSoapIn">
<wsdl:part name="parameters" element="tns:GetWeatherByPlaceName"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameSoapOut">
<wsdl:part name="parameters" element="tns:GetWeatherByPlaceNameResponse"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpGetIn">
<wsdl:part name="ZipCode" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpGetOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpGetIn">
<wsdl:part name="PlaceName" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpGetOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpPostIn">
<wsdl:part name="ZipCode" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByZipCodeHttpPostOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpPostIn">
<wsdl:part name="PlaceName" type="s:string"/>
</wsdl:message>
<wsdl:message name="GetWeatherByPlaceNameHttpPostOut">
<wsdl:part name="Body" element="tns:WeatherForecasts"/>
</wsdl:message>
<wsdl:portType name="WeatherForecastSoap">
Page 19 of 23
<wsdl:operation name="GetWeatherByZipCode">
<wsdl:documentation>
Get one week weather forecast for a valid Zip Code(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByZipCodeSoapIn"/>
<wsdl:output message="tns:GetWeatherByZipCodeSoapOut"/>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<wsdl:documentation>
Get one week weather forecast for a place name(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByPlaceNameSoapIn"/>
<wsdl:output message="tns:GetWeatherByPlaceNameSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="WeatherForecastHttpGet">
<wsdl:operation name="GetWeatherByZipCode">
<wsdl:documentation>
Get one week weather forecast for a valid Zip Code(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByZipCodeHttpGetIn"/>
<wsdl:output message="tns:GetWeatherByZipCodeHttpGetOut"/>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<wsdl:documentation>
Get one week weather forecast for a place name(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByPlaceNameHttpGetIn"/>
<wsdl:output message="tns:GetWeatherByPlaceNameHttpGetOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="WeatherForecastHttpPost">
<wsdl:operation name="GetWeatherByZipCode">
<wsdl:documentation>
Get one week weather forecast for a valid Zip Code(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByZipCodeHttpPostIn"/>
<wsdl:output message="tns:GetWeatherByZipCodeHttpPostOut"/>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<wsdl:documentation>
Get one week weather forecast for a place name(USA)
</wsdl:documentation>
<wsdl:input message="tns:GetWeatherByPlaceNameHttpPostIn"/>
<wsdl:output message="tns:GetWeatherByPlaceNameHttpPostOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:operation name="GetWeatherByZipCode">
<soap:operation soapAction="http://www.webservicex.net/GetWeatherByZipCode" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
Page 20 of 23
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<soap:operation soapAction="http://www.webservicex.net/GetWeatherByPlaceName" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:operation name="GetWeatherByZipCode">
<soap12:operation soapAction="http://www.webservicex.net/GetWeatherByZipCode" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<soap12:operation soapAction="http://www.webservicex.net/GetWeatherByPlaceName" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:operation name="GetWeatherByZipCode">
<http:operation location="/GetWeatherByZipCode"/>
<wsdl:input>
<http:urlEncoded/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<http:operation location="/GetWeatherByPlaceName"/>
<wsdl:input>
<http:urlEncoded/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
Page 21 of 23
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:operation name="GetWeatherByZipCode">
<http:operation location="/GetWeatherByZipCode"/>
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetWeatherByPlaceName">
<http:operation location="/GetWeatherByPlaceName"/>
<wsdl:input>
<mime:content type="application/x-www-form-urlencoded"/>
</wsdl:input>
<wsdl:output>
<mime:mimeXml part="Body"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WeatherForecast">
<wsdl:documentation>
Get one week weather forecast for valid zip code or Place name in USA
</wsdl:documentation>
Page 22 of 23