Professional Documents
Culture Documents
2005 SAP AG
Applies To:
SAP NW04 SAP XI 3.0 (SP14)
Summary
In this document I have explained step-by-step how to develop Web Service to RFC, HTML to Web Service and File to Database using BPM scenarios. By: Mukeshlal Parida Company: Infosys Technologies Limited Date: 15 Nov 2005
2005 SAP AG
HTML To Web Service Scenario ............................................................................................16 2.1 2.2 Interface Landscape..........................................................................................................16 Step by Step Approach for HTML to Web Service scenario .............................................16 System Landscape Directory ................................................................................16 Integration Repository ...........................................................................................17 Integration Directory ..............................................................................................19 Sender Service ........................................................................................................22 Receiver Service .....................................................................................................22 Unit Testing .............................................................................................................22
2005 SAP AG
Author Bio.......................................................................................................................................38
2005 SAP AG
Introduction
In this document I will explain the detailed step-by-step approach of how to develop Web Service to RFC, HTML to Web Service and File to Database using BPM scenarios. Also how to test the scenarios has been explained at the end of each scenario. SAP is the core system and it interacts with a host of external systems via the Middleware layer - SAP Exchange Infrastructure (SAP XI). SAP XI is much more than a simple Integration tool. It can execute business processes across business applications. It is used for integrating SAP and non-SAP applications, for A2A and B2B integration, for asynchronous and synchronous communication and cross component business process management. SAP XI is open and flexible and is based on open standards like XML (XSD), WSDL, BPEL and SOAP messaging for describing objects and communicating with other systems.
The different pipeline steps are; Receiver Identification: Determine which systems should participate in an exchange with the incoming message. Interface Determination: For each receiver system determine which interfaces should receive a message. Message Branch:
2005 SAP AG
2005 SAP AG
Application system is sending data to TIBCO. After processing the data, TIBCO sends the data to SAP R/3 system using XI. The communication between TIBCO and XI is though Web Service call. So XI exposes an interface as a Web service which becomes a service provider. 2005 SAP AG The SAP Developer Network: http://sdn.sap.com 7
To configure the Web Service to RFC (SAP R/3) scenario follow the following steps 1.2.1 System Landscape Directory
In the SLD create the following components in order. Step 1 Under Software Catalog create software component and Product Step 2 Under Technical Landscape create technical systems Step 3 Under Business Landscape create two business systems; TIBCODEV_100 IDESDEV_600 1.2.2 Integration Repository
In the Integration Repository (Designer) create the following objects. Step1 From the menu bar, Tools -> Transfer from SLD-> Import software component versions Select the software component INFOSYS_TIBCO and import it. Step2 After importing it select it from the navigation bar and right click on it to create a namespace http://infosys.com/demo/webservice_scenario for TIBCODEV_100 business system and http://infosys.com/demo/IDESDEV_600 for IDESDEV_600 and save it. Step3 Under the above namespace -> Interface Objects-> Data Types right click and create FinancialRequest_dt and FinancialResponse_dt. It has the below structure; 2005 SAP AG The SAP Developer Network: http://sdn.sap.com 8
Status
Step4
Element
String
0:1
Under Message Types right click and create FinancialRequest_mt and select the data type as FinancialRequest_dt and FinancialResponse_mt and select the data type as FinancialResponse_dt. Save it. Step5 Under Message Interfaces right click and create Financial_SYNC_OB. In this select category as Outbound and Mode as Synchronous. In this select Output message as FinancialRequest_mt and Input message as FinancialResponse_mt. Step6 While downloading the software component from SLD select the option Import of RFC and IDoc Interfaces from SAP Systems Permitted.. Under this software component and under Imported Objects RFCs and IDocs can be imported. Right click on it which will lunch a wizard in which provide the details to connect to the R/3 system and import the RFC ZBAPI_TIBCO_Finance. It has the below structure; ZBAPI_TIBCO_Finance Structure S_EPHDR SAPTDID DSTDAT COMCOD I_EPITM TYPE QUANTITY 2005 SAP AG Category Element Element Element Element Element Element Element Type String String Date String String String String Occurrence 1:1 1:1 1:1 1:1 1:N 0:1 0:1 9
ZBAPI_TIBCO_Finance.Response Structure I_RETURN Item TYPE ID NUMBER MESSAGE Category Element Element Element Element Element Element Type Occurrence 0:1 0:N 0:1 0:1 0:1 0:1
LOG_NO LOG_MSG_NO
Step7
Element Element
String String
0:1 0:1
Under Mapping Objects-> Message Mappings right click and create MM_FinancialRequest_mt_To_ZBAPI_TIBCO_Finance. Select the messages tab and select FinancialRequest_mt under Source Messages and ZBAPI_TIBCO_Finance Under Target Messages. Under the Design tab do the following mapping. MM_FinancialRequest_mt_To_ZBAPI_TIBCO_Finance Source Message Type Element FinancialRequest_mt Header OrderID DateofCreation Company BodyItem Type Quantity Price DeliveryDate Create another message mapping MM_ZBAPI_TIBCO_FinanceResponse_To_FinancialResponse_mt. Select ZBAPI_TIBCO_Finance.Response as the source message and FinancialResponse_mt as the target message. MM_ZBAPI_TIBCO_FinanceResponse_To_FinancialResponse_mt Source Message Type Element FinancialRequest_mt Return item 2005 SAP AG Target Message Type Element ZBAPI_TIBCO_Finance I_RETURN Item The SAP Developer Network: http://sdn.sap.com 10 Functions to be used Target Message Type Element ZBAPI_TIBCO_Finance S_EPHDR SAPTDID DSTDAT COMCOD I_EPITM TYPE QUANTITY PRICE MODDAT Functions to be used
In the Integration Directory from the menu bar select Object-> New and create a scenario called INFY_WebService_TO_BAPI and save it. Step1 Select Service Without Party-> Business System. Right click and select business systems TIBCODEV_100 and IDESDEV_600. Step2 Under business system TIBCODEV_100 create a communication channel called SOAP_SND_TIBCO_Financial_001 and under IDESDEV_600 create RFC_RCV_SAP_001. Step3 Configure SOAP_SND_TIBCO_Financial_001 as below;
2005 SAP AG
11
2005 SAP AG
12
Also specify Logon User, Logon Password, Logon Language as EN, Logon Client and Maximum Connections according to your environment.
Step5 Create sender agreement with following parameters; Sender Service: TIBCODEV_100 Interface: Financial_SYNC_OB Namespace: http://infosys.com/demo/webservice_scenario Receiver Service: IDESDEV_600 Sender Communication Channel: SOAP_SND_TIBCO_Financial_001 2005 SAP AG The SAP Developer Network: http://sdn.sap.com 13
2005 SAP AG
14
Import the WSDL file created in the above step in the TIBCO which will act as web service client. This WSDL will have both request and response structure. 1.2.5 Receiver system
Here the SAP R/3 system is the receiver system. We have to create the RFC ZBAPI_TIBCO_Finance in SAP system which will be downloaded within the Integration Repository. 1.2.6 Unit Testing
For testing we need to have TIBCO system acting as Sender and SAP R/3 as receiver. Otherwise we can use any standard web service testing tools. This will show you the input parameters. Fill the input prams and give authentication details (username and password to connect to SAP XI server). Click send. Then you will get the response back from the SAP R/3 system.
2005 SAP AG
15
2.1
Interface Landscape
This scenario can be modified in a number of ways using complex BPM to meet the real life requirements like alerting support issues by SMS. But for learning prospective we will configure it to see how data can be sent from HTML to web service and get the response back and send SMS from the web service. Here HTML client sends data through XI to make a Web Service call. So XI acts as a web service client on behalf of HTML client and makes the web service call. This web service will send a SMS based on some condition/business logic to the concerned people. Web service will also send a response back to HTML client about the status of the call.
2.2
To configure the HTML to Web Service scenario follow the following steps 2.2.1 System Landscape Directory
No need to configure any business systems in the SLD as we will use Business service for both HTML and Web Service. Create a generic software component in SLD called Infosys_HTML_WebService.
2005 SAP AG
16
In the Integration Repository (Designer) create the following objects. Step1 From the menu bar, Tools -> Transfer from SLD-> Import software component versions Select the software component Infosys_HTML_WebService and import it. Step2 After importing it select it from the navigation bar and right click on it to create a namespace http://infosys.com/demo/HTML for HTML_BS business service and http://infosys.com/demo/SMSWebService for SMSWebService_BS and save it. Step3 Under namespace http://infosys.com/demo/HTML Interface Objects-> Data Types right click and create SupportRequest_dt and SupportResponse_dt. It has the below structure; SupportRequest_dt
Structure MessageStatus
Category Complex Type FromEmailAddress Element ReceiptantMobileNumber Element Provider Element State Element Status Element
2005 SAP AG
17
SendSMS.asmx
Step7 Create Message Interface called SendSMSToIndia_SYNC_IB. In this select category as Inbound and Mode as Synchronous. In this select Input message as SendSMSToIndiaSoapIn and Output message as SendSMSToIndiaSoapOut. Step8 Under namespace http://infosys.com/demo/HTML, Mapping Objects-> Message Mappings right click and create MM_SupportRequest_mt_To_SendSMSToIndiaSoapIn. Select the messages tab and select SupportRequest_mt under Source Messages and SendSMSToIndiaSoapIn Under Target Messages. Under the Design tab do the following mapping. MM_SupportRequest_mt_To_SendSMSToIndiaSoapIn Source Message Type Element SupportRequest_mt Header ReceiptantMobileNumber FromEmailAddress BodyItem Message Target Message Type Element SendSMSToIndia MobileNumber FromEmailAddress Message Use concat with delimiter as on: For concating Message and 18 Functions to be used
2005 SAP AG
In the Integration Directory from the menu bar select Object-> New and create a scenario called INFY_HTML_TO_WebService and save it. Step1 Select Service Without Party-> Business Service. Right click create business services HTML_Service and SMS_Service. Step2 Configure the business services HTML_Service and SMS_Service with Receiver as SendSMSToIndia_SYNC_IB and Sender as SupportMessage_SYNC_OB and save it. Under SMS_Service configure SOAP_RCV_SendSMS_001 communication channel. No need to configure sender communication channel for HTTP adapter. P.S: This is because HTTP and IDOC adapters are not part of SAP J2EE engine. They reside directly on SAP ABAP engine and part of ICF service. So no need to configure sender
2005 SAP AG
19
below;
2005 SAP AG
20
2005 SAP AG
21
Use the HTML client provided by SAP. Give correct Sender Service, Sender Interface and Sender Namespace. And XI username and password to connect to XI server. In the payload put this structure; ----------------------------------------------------------------------------------------------------<? Xml version="1.0" encoding="UTF-8"?> <ns:SupportRequest_mt xmlns:ns="http://infosys.com/demo/HTML"> <Header> <ReceiptantMobileNumber>9845469318</ReceiptantMobileNumber> <FromEmailAddress>mukeshlal_parida@infosys.com</FromEmailAddress> </Header> <BodyItem> <Message>Hi, Please solve the issue. The server is down.Restart it./Message> <DeliveryDate>25/10/2005</DeliveryDate> </BodyItem> </ns:SupportRequest_mt> 2.2.5 Receiver Service
Here the http://www.webservicex.net/SendSMS.asmx?op=SendSMSToIndia is the receiver business service. This will send SMS and will send the status response back to the sender service. 2.2.6 Unit Testing
For testing use the attached HTML client. The web service is already available in the Internet. In the HTML client give proper information and click send. SMS will be sent to the mobile no. provided and a response message will be displayed in the HTML client. The message flow can be monitored using transaction SXMB_MONI. If there is any error that can be resolved using the monitoring tool.
2005 SAP AG
22
In this scenario we will receive business data in flat files which needs to be uploaded into database using stored procedure. After uploading the stored proc will return back the status of the execution like the number of records update or inserted in the table. This status data will be written in a file. Message Flow: Flat File containing business data will be received in a particular directory. XI polls that particular directory every 15 min. Flat file structure is converted into database stored procedure structure. Data is sent from XI to database using JDBC adapter where the Proc is executed. After uploading or inserting data into table stored proc returns the status to XI. This status is converted back to flat file structure and written in a particular directory called Status. This is basically a Async-Sync communication. So we have to use BPM here to capture the data coming back from stored proc to XI and writing it to a file.
2005 SAP AG
23
To configure the File to Database scenario using BPM for the above requirement follow the following steps 3.2.1 System Landscape Directory
In the SLD create the following components in order. Step 1 Under Software Catalog create software component FILE_WORKSHOP and DB_WORKSHOP and corresponding Products. Step 2 Under Technical Landscape create technical systems FILE_DEV_TS and DB_DEV_TS based on the above software component and products. Step 3 Under Business Landscape create two business systems; FILE_DEV DB_DEV 3.2.2 Integration Repository
In the Integration Repository (Designer) create the following objects. Step1 From the menu bar, Tools -> Transfer from SLD-> Import software component versions Select the software component FILE_WORKSHOP and DB_WORKSHOP and import it. Step2 Under SC FILE_WORKSHOP create namespace http://infosys.com/demo/DB_scenario and under SC DB_WORKSHOP create http://infosys.com/demo/FILE_scenario . Step3 Under http://infosys.com/demo/FILE_scenario namespace -> Interface Objects-> Data Types right click and create CustomerDetails_dt, DBStatus_dt Under http://infosys.com/demo/DB_scenario namespace create DBCustomer_dt, DBCustomer_dt_response. CustomerDetails_dt Structure CustomerDetails CustomerID Name Address 2005 SAP AG Category Complex Type Element Element Element Type String String String Occurrence 1:N 1:1 1:1 1:1 24
2005 SAP AG
25
2005 SAP AG
26
CustomerDetails
Constant=EXECUTE Constant = Give Stored Procedure Name Constant=TRUE Constant=CHAR Constant=TRUE Constant=CHAR Constant=TRUE Constant=CHAR Constant=TRUE Constant=CHAR Constant=TRUE Constant=CHAR Constant=TRUE Constant=CHAR Constant=TRUE Constant=CHAR Constant=InsertCount Constant=TRUE Constant=NUMERIC Constant=UpdateCount Constant=TRUE Constant=NUMERIC
CustomerID
Name
HouseNo
Street
City
PhoneNo
QueryDetails
MM_DBCustomer_mt_response_To_DBStatus_mt Source Message Type Element Statement_response NoRowsInserted 2005 SAP AG Target Message Type Element Functions to be used
NumberOfRowsInserted
Count 27
Select the correct context in order to get the correct count Step7 Under Interface Mappings create IM_CustomerDetails_Async_ABS_TO_DBCustomerProc_req_ABS and select Source Interface as CustomerDetails_Async_ABS and target interface as DBCustomerProc_req_ABS and request mapping as MM_CustomerDetails_mt_To_DBCustomer_mt. IM_DBCustomerProc_res_ABS_TO_DBStatus_Async_ABS and select Source Interface as DBCustomerProc_res_ABS and target interface as DBStatus_Async_ABS and request mapping as MM_DBCustomer_mt_response_To_DBStatus_mt. Step8 Under namespace http://infosys.com/demo/FILE_scenario create Integration Process FILE_TO_STOREDPROC_BPM. The BPM looks like
2005 SAP AG
28
Select the Receive step to configure it. In its properties area select Mode as Asynchronous, Tick the start process and Message as CustomerDetails. In the Transform1 step for Interface mapping select IM_CustomerDetails_Async_ABS_TO_DBCustomerProc_req_ABS and Source Message as CustomerDetails and Target Message as ProcReq. In the Send1 step select mode as Synchronous. In synchronous select DBCustomer_Sync_IB. Request message as DBCustomerProc_req_ABS, Response Message as DBCustomerProc_res_ABS. In the Transform2 step for Interface mapping select IM_DBCustomerProc_res_ABS_TO_DBStatus_Async_ABS and Source Message as ProcRes and Target Message as Status. In the Send2 step select mode as Asynchronous and message as Status. 3.2.3 Integration Directory
In the Integration Directory from the menu bar select Object-> New and create a scenario called INFY_FILE_TO_JDBC and save it. Step1 Select Service Without Party-> Business System. Right click and select business systems FILE_DEV and DB_DEV. Step2 Under Integration Process right click. This will launch a wizard in which select the BPM FILE_TO_STOREDPROC_BPM. Give the name FILE_TO_STOREDPROC_BPM and click finish. Step3 Under business system FILE_DEV create a communication called FILE_SND_CRM_001 and FILE_RCV_STATUS_CRM_001 and under DB_DEV create JDBC_RCV_CRM_001. Step4 Configure FILE_SND_CRM_001 as below;
2005 SAP AG
29
2005 SAP AG
30
2005 SAP AG
31
Step6 Create sender agreement with following parameters; Sender Service: FILE_DEV Interface: CustomerDetails_Async_OB
2005 SAP AG
32
2005 SAP AG
34
>Create Receiver Determination and use the below objects; Sender Service: FILE_TO_STOREDPROC_BPM Interface: DBCustomer_Sync_ABS Namespace: http://infosys.com/demo/FILE_scenario Receiver Party: * Service: * Select service as DB_DEV in Configured Receivers. Save it.
>Create Receiver Determination and use the below objects; Sender Service: FILE_TO_STOREDPROC_BPM Interface: DBStatus_Async_ABS Namespace: http://infosys.com/demo/FILE_scenario Receiver Party: * Service: * Select service as FILE_DEV in Configured Receivers. Save it.
3.2.4
Unit Testing
For testing we need to have access to a shared directory where we will receive input files. Also in the shared file system the processed files will be archived and the status file will be created.
We have to create a table having columns CustomerID, Name, HouseNo, Street, City,
2005 SAP AG
35
AS If (Select CustomerID from CustomerDetails where CustomerID=@CustomerID) IS NULL BEGIN INSERT INTO [Northwind].[dbo].[CustomerDetails] ([CustomerID], [Name], [HouseNo], [Street], [City], [PhoneNo] [QueryDetails])
2005 SAP AG
36
Structure root Statement dbTable action table access CustomerID Name HouseNo Street City PhoneNo QueryDetails Key CustomerID
Category Element Element Element Attribute Element Element Element Element Element Element Element Element Element Element Element
Type
Occurrence 1:1 1:1 required 1:1 1:N 1:1 1:1 1:1 1:1 1:1 1:1 1:1 1:N 1:1
String String String String String String String String String String
During mapping in action use constant=UPDATE_INSERT, in table give the table name. The response from the database will look like DBCustomer_dt_response
Author Bio
Mukeshlal Parida is a certified SAP XI and webMethods Development Consultant at Infosys Technologies Limited, India. He is a part of the SAP XI frameworks definition guild in Infosys and has greatly contributed to design, development, training, client consultation and other technical frameworks design. His areas of expertise include EAI Solution Development in SAP XI, TIBCO, Mercator, SeeBeyond, webMethods and J2EE.
2005 SAP AG
38