Documente Academic
Documente Profesional
Documente Cultură
TBIT44
Mapping, Adapters and BPM
© SAPSpeaker
© SAP AG 2002, Title of Presentation, AG 2004
Name 1
2004/Q4
Material number: 50069570
1
Mapping Patterns
2
Objectives
3
Mapping Patterns
Summarization
Sequence–Number Generation
Duplicating Subtrees
Table / Value Lookups
Tree–Reversal
4
Mapping Patterns – Summarization (I)
Summarization is when we try to consolidate detailed information into total/subtotals and
counts.
The count and sum functions will act on the content of a context. Therefore, the context of the
group to be summarized must be selected appropriately.
Example:
5
Mapping Patterns – Summarization (II)
6
Mapping Patterns – Summarization (III)
Mapping Result:
7
Mapping Patterns – Sequence–Number Generation (I)
Example:
8
Mapping Patterns – Sequence–Number Generation (II)
9
Mapping Patterns – Sequence–Number Generation (III)
The java function creates the sequence number all at once based on the number of
elements in the source.
10
Mapping Patterns – Sequence–Number Generation (IV)
11
Mapping Patterns – Sequence–Number Generation (V)
12
Mapping Patterns – Sequence–Number Generation (VI)
13
Mapping Patterns – Sequence–Number Generation (VII)
14
Mapping Patterns – Sequence–Number Generation (VIII)
15
Mapping Patterns – Duplicating Subtrees (I)
Even if elements are shown to occur more than once in the XML instance according
to XML Schema Definition, they are only displayed once in the structure overview.
Example:
16
Mapping Patterns – Duplicating Subtrees (II)
17
Mapping Patterns – Duplicating Subtrees (III)
18
Mapping Patterns – Duplicating Subtrees (IV)
Mapping Results:
19
Mapping Patterns – Table/Value Lookup (I)
In Message Mapping, we have to use the context of the different elements required
for the lookup. A Java function will be needed to perform the comparisons. And,
the matched values will have to be written to ResultList.
Example:
Target: Contains only detailed billing information, but with each billing record, the
cost center, sub–account and card type from the account info record must also be
included. The account number in the detail is used to do the lookup of the account
information records.
20
Mapping Patterns – Table/Value Lookup (II)
Source: Target:
21
Mapping Patterns – Table/Value Lookup (III)
Java Function:
22
Mapping Patterns – Table/Value Lookup (IV)
Mappings for all 3 elements are identical, except for the element names.
23
Mapping Patterns – Table/Value Lookup (V)
Mapping Results:
24
Mapping Patterns – Tree–Reversal (I)
Below is a mapping scenario which reverses the parent and child nodes. A “reverse”
summarizations is also performed.
The
products
are to be
sorted and
totaled by
prices with
the
ORDERID
listed.
25
Mapping Patterns – Tree–Reversal (II)
The source document is organized by ORDERID, ITEM and price. The same
product can occur in more than 1 orders.
The target document is summarized by product with a total price and listed
within each product all the ORDERIDs. The same ORDERIDs can occur in more
than 1 products.
Based on that, the following needs to be done using the contexts/queues used
by Message Mapping:
1. Get a list of all the products. Since the same product can be in multiple orders,
we must eliminate the duplicates, and, then, sort them.
2. Sum the prices by product and assign those totals to the products in their sorted
order.
3. Examine all the ORDERIDs and determine which ORDERIDs contain each of the
products in the sorted list. Then, assign those ORDERIDs to the products.
26
Mapping Patterns – Tree–Reversal (III)
1. Extract the products, eliminate duplicate names, and sort them in alphabetical order.
27
Mapping Patterns – Tree–Reversal (IV)
2. Total the prices and assign the total to the appropriate products.
28
Mapping Patterns – Tree–Reversal (V)
3. Retrieve all the orderids and assign them to the appropriate products.
Note:
“Cache Entire Queue” is checked.
When the product is being
retrieved, the Context Change is
skipped.
The Context Change is added to
the ResultList.
29
Mapping Patterns – Tree–Reversal (VI)
30
Mapping Patterns – Tree–Reversal (VII)
31
Mapping Patterns – Tree–Reversal (VIII)
Display Queue for determining NAME:
32
Mapping Patterns – Tree–Reversal (IX)
33
Mapping Patterns – Tree–Reversal (X)
Mapping for the attribute TotalSalesFOrThisItem, which totals the prices by product name.
34
Mapping Patterns – Tree–Reversal (XI)
Display Queue for determining TotalSalesFOrThisItem:
35
Mapping Patterns – Tree–Reversal (XII)
Mapping for the element ORDERID, which will be listed by product name.
36
Mapping Patterns – Tree–Reversal (XIII)
Display Queue for determining ORDERID:
37
Mapping Patterns – Tree–Reversal (XIV)
38
Summary
39
Exercise 1: Message Mapping – Standard Functions
Overview
The purpose of this exercise is to design a Message Mapping using standard functions of the
mapping tool.
This exercise will test the understanding of using standard functions in Message Mapping.
Prerequisites
Description
The source is an XML document containing Contact information. The target is an XML document
containing Customer information.
Exercise steps
*Please note, as a general rule, all development and configuration objects are CASE-SENSITIVE.
There are many ways to achieve the desired result. The solution provided here is only 1 way, not
the only way.
4. The target element fullname should contain the concatenated content of title, firstname
and custname, separated by a blank.
5. The first 10 digits of element contactID should be filled into element customerNo
6. The six last digits of element contactID should be used to fill element birthday. Please
perform a date transfer so that birthday is of format yyyy/dd/MM.
8. Test the mapping by using the “Test” tab. You can use e.g. the following xml file for
testing:
<ns0:Contact xmlns:ns0="http://xi.com/mapping/exercise1">
<title>Mr.</title>
<custname>Smith</custname>
<firstname>Paul</firstname>
<contactID>0123456789-181170</contactID>
</ns0:Contact>
Exercise 2: Message Mapping – Mapping Template
Overview
The purpose of this exercise is to design a Message Mapping using existing mapping templates.
This exercise will test the understanding of using mapping template in Message Mapping.
Prerequisites
Description
The source is an XML document containing Contact information. The target is an XML
document containing Customer information.
Within Contact, predefined data types of Name and Address are used.
Within Customer, predefined data types of CustName and CustomerAddress are used.
In a first step, two Mapping Templates based on these Data Types will be defined. Then the
templates will be reused in a Message Mapping.
Exercise steps
*Please note, as a general rule, all development and configuration objects are CASE-SENSITIVE.
There are many ways to achieve the desired result. The solution provided here is only 1 way, not
the only way.
Mark element Name in the source structure and element CustomerName in the target
structure
Overview
The purpose of this exercise is to design a Message Mapping utilizing basic standard XI 3.0
functions.
This exercise will test the understanding of context/queue processing of Message Mapping.
Prerequisites
Description
The source is an XML document containing material information. This document contains a
material number and its description in multiple languages.
The result of the mapping/transformation will contain the material number and the description of
the material in English.
Exercise steps
*Please note, as a general rule, all development and configuration objects are CASE-SENSITIVE.
There are many ways to achieve the desired result. The solution provided here is only 1 way, not
the only way.
Create a Message Mapping
Overview
The purpose of this exercise is to design a Message Mapping utilizing some basic techniques of
using advanced user functions. Some basic knowledge of Java will be required.
This exercise will test the understanding of context/queue processing of Message Mapping.
Prerequisites
Description
The source is an XML document containing purchase order information. This document contains
multiple orders. Each order has 1 header and multiple items information.
The result of the mapping/transformation will contain a row for each item. Each row will contain
the header information from the source, and the item information.
This mapping might be used when we want to insert into a table the content of a purchase order
from an IDoc. Each row in the table must contain both the header and detail information.
For example, the source contains 2 orders. Each order has a header and 2 items. The result of
the mapping/transformation must contain 4 rows for each of the items in the source. In addition,
each of the rows will also contain the corresponding header information.
Exercise steps
*Please note, as a general rule, all development and configuration objects, especially Java codes,
in XI are CASE-SENSITIVE.
There are many ways to achieve the desired result. The solution provided here is only 1 way, not
the only way.
3. Create a Message Mapping object. Use any name you wish e.g.
MATERIALToProductDefinition.
I. To send a trace message to SXMB_MONI, we can use the Container object in either
Simple or Advanced user–function.
The testing tool will not be able to test the trace info being sent to the monitor. Only
during runtime, the trace info will be sent to the monitor. In addition, the monitor’s trace
level must be properly set to display it.
In the exercise, we used the Node Function, SplitByValue, to insert context changes
between the values. We can also perform this function within our own user–function.
Overview
The purpose of this exercise is to design a Message Mapping utilizing advanced user functions
along with the standard XI 3.0 functions. Some basic knowledge of Java will be required.
This exercise will test the understanding of context/queue processing of Message Mapping.
Prerequisites
Description
The source is an XML document containing purchase order information. This document contains
a single header with multiple detailed purchase orders. In each detailed purchase order, the
supplier’s name is provided. There can be more than 1 detailed purchase order per supplier, and
the number of suppliers is unknown. The detailed purchase orders are not grouped by supplier,
in another word, it is not sorted by supplier name.
The result of the mapping/transformation will contain an order for each supplier. Each supplier will
contain the header information from the source, and all the detailed purchase orders belonging to
the same supplier must be grouped within the order.
For example, the source contains 2 suppliers and 4 detailed purchase orders. The 2nd and 3rd
st th
detailed purchase orders belong to companyA, and the 1 and 4 detailed purchase orders
belong to companyB. The result of the mapping/transformation must contain 2 orders, each with
nd rd
a header. For companyA’s order, it must contain the 2 and 3 detailed purchase orders. For
st th
companyB’s order, it must contain the 1 and 4 detailed purchase orders.
Exercise steps
*Please note, as a general rule, all development and configuration objects, especially Java codes,
in XI are CASE-SENSITIVE.
There are many ways to achieve the desired result. The solution provided here is only 1 way, not
the only way.
4. Use “Search Repository Object” to import the source and target message.
assignItems – using Supplier as the input parameter, this function determines how many
Items belongs to each Supplier and separate them with a ContextChange. In another
word, for each Supplier, it create the number of Items element for it.
assignValue – using the number of unique Supplier as input, that same number of the
value in the 2nd parameter will be added to the output. So, if there are 2 Suppliers, then
nd
the value in the 2 parameter will be copied 2 times.
assignSupplier – this function is to assign the elements in Detail to the appropriate Items
of a Supplier’s Order. It is used to rearrange/reorder the elements in Detail
corresponding to how the Items are grouped together based on the Supplier.
9. Create the following mappings in the Data Flow Editor:
Please note that all italicized source element name has
context of “POCombined”.
10. Test the mapping by using the “Test” tab.
1
Learning Objectives
2
Cache overview
Update
usiness Integration
usiness Process Engine
Processes
Runtime Access
Configuration
Cache
Central Adapter
daptermetadata ollaboration Engine
Agreements
Cache
Adapter Meta
data
Adapter
Framework
Integration Integration
Repository Directory
3
CPA Cache in general
• services
• parties
• bindings (inbound/outbound; sender/receiver
agreements)
• channels
• adapter metadata
• module configuration
4
CPA Cache – display content
http://<host>:<J2EEport>/CPACache
5
CPA Cache – display content (2)
6
CPA Cache – get access
xi_af_cpa_monitor
in component
sap.com/com.sap.aii.af.service.cpa.monitor*CPACache
7
CPA Cache refresh
http://<host>:<J2EEport>/CPACache/refresh?mode=full
8
CPA Cache refresh – in detail
XIAFuser XIDIRuser
Update
running
Get Object
Update
General
OK / OK with errors status
Error Status
of single objects
9
CPA Cache - Registration
SLD
Change
in XI ID
3
2 4 5
AE CPA Cache
10
CPA-Cache Service Directory or PCK?
On your SAP Exchange Infrastructure central host, start the SAP J2EE
Engine administration tool. (Choose Cluster => server => Services => CPA
Cache). In the properties tab, change the value for the parameter cache Type
to value DIRECTORY.
11
CPA Cache: Display/Monitoring
http://<host>:<port>/CPACache/monitor.jsp
The Current CPA cache service initialization for the J2EE Adapter Engine
on the IS and for the decentral J2EE Adapter Engine is DIRECTORY, i.e. they
access a central directory on the integration server/directory; for the PCK the
Current CPA cache service initialization is PCK (also, the PCK-UI must be
installed)
For a central/decentral AE there is no initialization/synchronization required,
as soon the directory‘s address is known from the property of the CPACache–
J2EE-service or from the SLD-access a trigger is sent from the Integration
Builder/Directory about a configuration change to the adapter engine. The
Adapter engine then updates its cache (registration mode/Push)
E.g. check if an adapter is really activated or not
12
CPA Cache: Registration/Push vs. Pull
13
CPA Cache: Schema Upload
14
Parameter CPACache Service - SLDAccess
This parameter is true for J2EE based AE, i.e. false for PCK (usually no SLD
available). If the parameter is true: the SLD-address is taken from the central
exchange profile.
SLD access for: registration of adapters and retrieving address of XI-
components on SLD; for PCK: always „false“
15
Messaging system
1
Learning Objectives
2
Messaging system overview
Cache update
XML
IB Directory
PCK DB
© SAP AG 2003, Title of Presentation, Speaker Name / 3
3
Message status in MDT - Prerequisites
4
Example
you can use a simple file sender / receiver scenario to test the display of status
After stopping the receiver channel the message can not be delivered by the
adapter engine
The status “Delivering” is shown only for a short period while trying to deliver
the message
Status changes to “wait” when message can not be delivered
5
Status overview of messages in MDT
FAIL
Delivery exception
6
RFC to Webservice: Invoking a remote enabled function module in SAP WebAS
Overview
ZUSER_GET_DETAIL BAPI_USER_GET_DETAIL
Prerequisites
Description
In the R/3 system (Sender) a remote enabled function module is executed passing the user name
as a parameter. The call is sent to XI (Request message), which maps the data, and executes a
webservice (which is a remote enabled function module in a SAP Web Application Server,
Receiver). The details about the user are then retuned to the caller. XI again maps the data
(Response message) to match the format of the sender function.
All remote enabled function modules in Web Application Server (6.20 & above) are available as
webservices & the WSDL (WebserviceS Description Language) are available in the Web service
repository at:
http://<host>:<port>/sap/bc/bsp/sap/webservicebrowser/search.html
The webservice for BAPI_USER_GET_DETAIL will be invoked from R/3 system using an RFC.
The input parameter for this webService is a user id (USERNAME) in the target system and it
returns all the pertinent information about this userid. If an invalid Userid is entered, then a
message User xxxxx does not exist is returned in table RETURN.
Exercise steps
1. In the sender R/3 4.6C system, create a remote enabled function
ZUSER_GET_DETAIL_XX (where XX is your group number). Goto transaction
SE37 and enter BAPI_USER_GET_DETAIL. Use the copy function to copy this
function to ZUSER_GET_DETAIL_XX . Use function group ZATP. In change
mode, goto Source code tab and delete all executable lines of code. It has the
exact import/export/tables parameter values as BAPI_USER_GET_DETAIL
function.
*Please note, as a general rule, all development and configuration objects in XI are CASE-
SENSITIVE.
Step 1 – SLD:
Creating Technical system, business system and the Software component version are not in the
scope of this exercise.
Step 2 – Repository
2.1 From the Integration Builder home page, select “Integration Repository”. This will launch
the Java Web Start application. Log in with your user ID and password.
2.2 Please locate the Software component ATP and your namespace.
2.3 In the left-hand frame, find the software component “ATP” and expand it. Right click on
the Imported objects and click on Import of SAP Objects.
2.4 Log on to the Sender R/3 system and import the RFC ZUSER_GET_DETAIL_XX.
2.5 Under your namespace in the left frame, expand the node “Interface objects”.
2.6 Create under external definitions using the WSDL provided. Right click on External
definitions and click on New. Create a new External Definition called
BAPI_USER_GET_DETAIL. Import the WSDL file (saved in the previous step). Make
sure the Category is WSDL. Make sure the request and response messages are defined
as below.
2.7.1 In the left frame, right-click on the node “Message Interface” and select “New”.
2.7.3 Choose Inbound for the Category and synchronous for Mode in the definitions tab. The
input message type should reference the BAPI_USER_GET_DETAILInput from the
external definitions and output message type should reference
BAPI_USER_GET_DETAILOutput, again from the external definitions. Save the object.
Mapping:
2.8.4 Begin the mapping step, by creating a request mapping object
User_display_Requestmap_XX. Since this is request side of mapping we have to map
only the USERNAME field. Save the object after mapping is done.
2.8.5 Create another message map with the name “User_display_Responsemap_XX”. The
source structure is ZUSER_GET_DETAIL_XX.Response and the source will be the
output structure of from the External Definition. (BAPI_USER_GET_DETAILOutput)
2.8.6 Since some the names and structures are same, we can make use of a mapping feature
wherein, the fields with same names and similar structure will get mapped automatically.
To do this, highlight the top nodes as shown above and click on icon at the top of the
screen. All the field which have the same name will get automatically mapped. Save the
object.
2.9.3 Hit the refresh button below to populate the Source and Target messages. Provide
“User_display_Requestmap_XX” for the Request and “User_display_Responsemap_XX”
for the Request & Response mapping programs respectively.
Save the object. This concludes the steps required in Integration Builder Design.
2.9.4 Finally, go to your change list and activate it. This concludes the steps required in
Integration Builder Design.
Step 3 – Directory
3.1 From the Integration Builder home page, select “Integration Directory”.
3.2 Create a new scenario for the work in directory & and name is
ATP_RFC_Webservice_XX. Please make sure all the objects created below are added to
this scenario.
3.3 If the sender business system is not added to the scenario please do so
3.4 We have to create two communication channels. A communication channel is essentially
a physical connectivity to/from the application system. This is where the adapter
configuration takes place.
3.5 Create a new Communication Channel under Sender system called “Sender_RFC_XX”
for this exercise. Expand “Service without party” ATP_RFC_Webservice_XX and further
expand “Business System” and right click on Communication channel & click on New.
Communication Channel: Sender_RFC_XX and choose create.
3.6.1 For the RFC Server Parameters, provide the following values.
3.7 If the receiver business system is not added to the scenario please do so.
Target url:
http://iwdf5238.wdf.sap.corp:50080/sap/bc/soap/rfc/sap/BAPI_USER_GET_DETAIL/?sap
-client=800
Provide a valid user id & password.
3.9 Next step is to create a “Sender Agreement” object. This defines a binding between the
sender communication channel and the outbound interface.
3.9.1 On the left frame, right-click on the “sender Agreement” Æ New.
3.9.2 Fill in the following values on the pop-up screen.
3.10 Create a new receiver determination. Receiver determination defines a binding between
the communication channel you just created, and the inbound interface.
3.10.1 In the left frame, right-click on “Receiver Agreement” Æ New.
3.10.2 Specify the following parameters:
- Sender Service: Sender Business system
- Sender interface: ZUSER_GET_DETAIL_XX
- Receiver Service: Receiver Business system.
3.11 In the following steps, you will create an “Interface Determination” object. Now that we
have defined a receiver for the message, we need to assign an inbound interface, and an
interface mapping (if necessary).
3.11.1 In the area “Configuration Overview for Receiver Determination” at the bottom of your
screen, hit refresh.
3.11.2 In the column “Receiver (Partner/Service)” right-click and select “New Specific”, in order
to create a new interface determination object.
3.11.3 You are now in the screen “Edit Interface Determination”. In the section “Configured
inbound interfaces” select the following using F4 help. When you are done, please save
the Interface Determination object.
- Inbound interface: User_Display_In
- Interface mapping: User_display_interfaceMap_XX
3.11.4 Go back to the main screen for your receiver determination. In the area “Configuration
Overview for Receiver Determination” at the bottom of the screen, hit “Refresh”.
3.11.5 In the column “Receiver Determination (Communication Channel)” right click and select
“New Specific”. Here we have to associate a receiver agreement. A receiver agreement
defines a binding between the receiver communication channel and the inbound interface
3.11.6 In the screen “Edit Receiver Agreement”, for the field “Receiver Communication Channel”
use the input help (F4), and select the communication channel “Soap_Receiver_XX”. Fill
in the values as below.
3.12 Go back to the main receiver determination screen and refresh. Your configuration is now
complete. Go to change lists and activate your objects.
Step 4 – Testing
4.8 Inspection of payload: Log in to the integration server and execute transaction code
SXMB_MONI to monitor the processed XML messages.
4.9 Fill in the sender values appropriately so that you are looking at the messages you have
processed.
4.10 The request message looks as below:
4.11 The response message is as below: (Only a snippet of the message is shown below.)
Further testing:
What do you think will happen if an invalid user id is provided?
File to JDBC: Using Structure conversion and utilizing built-in EO processing in JDBC
adapter
Overview
The purpose of this exercise is to implement an asynchronous scenario where a file adapter
sends data in a comma delimited format; the file adapter performs structure conversion and
converts contents of the file into XML format and sends to the integration engine. The data is then
mapped to the jdbc XML SQL format and sent to the jdbc receiver.
As a result of this exercise, you will become familiar with configuring a file adapter to perform
structure conversion and mapping the data to XML SQL format. The exercise also takes
advantage of the built in Exactly Once (EO) processing capabilities of the JDBC adapter.
File ystem
File JDBC
The receiver JDBC adapter has two persistence modes that enable Exactly Once processing:
Local
Database
In the past, with the J2SE Adapter Engine, Local meant that EO handling was file based (i.e.
status information management was maintained within the local file system). This caused
security concerns and was generally considered unsafe. In Database mode, message
processing and status information management took place in the same database allowing the
processing steps to have the same commit cycle and eliminating any doubt in EO handling.
With XI 3.0, since the J2EE Adapter Engine is deployed on top of the J2EE engine (which also
has database persistence) the EO handling in Local mode is now also database based and in
one database transaction with the message processing including the message persistence. This
makes the Local mode EO handling just as reliable as Database mode EO handling.
Note: Currently, the Database mode has not been implemented. It will be enabled for SP9.
Prerequisites
Description
A table VendorMaster in the SQL server is created as below. In this table we will store the
vendor data.
Exercise steps
*Please note, as a general rule, all development and configuration objects in XI are CASE-
SENSITIVE.
Step 1 – SLD:
Creating a technical system, business system and the software component version are not in
scope for this exercise.
Step 2 – Repository
2.1 From the Integration Builder home page, select “Integration Repository”. This will launch
the Java Web Start application. Log in with your user ID and password.
2.2 Under your namespace in the left frame, expand the node Data types. Please inspect the
data types Vendor & Vendor_SQL. Please pay special attention to Vendor_SQL. Data
type Vendor is used to describe the data sent by the file & Vendor_SQL is used to
describe the data in XML sql format. We will be using this format to write to the database
using JDBC adapter.
2.3 Two message types with the same name as the data types are created.
2.4 Create 2 new message interfaces; Vendor_out_XX is outbound asynchronous using the
message type Vendor & Vendor_SQL_in_XX is inbound asynchronous using the
message type Vendor_SQL.
2.5.1 In the left frame right click on the node, message mappings under mapping objects and
create a new message mapping.
2.5.2 Create a message mapping VendorFile_VendorJdbc_XX. This maps the data from the
XML format converted from the file to the XML sql format the JDBC adapter accepts.
Drag the source fields to the target fields as shown. To map the attribute “action” , drop a
constant and change the default value of the constant to “update_insert” and map the
constant to action.
2.6.2 As source interface, select Vendor_out_XX from your SWC. For the target interface,
select Vendor_SQL_in_XX message interface that was created earlier from your own
namespace.
Hit the refresh button to populate the Source and Target messages. Associate the
message mapping VendorFile_VendorJdbc_XX.
2.6.3 Finally, go to your change list and activate it. This concludes the steps required in
Integration Builder Design.
Step 3 – Directory
3.1 From the Integration Builder home page, select “Integration Directory”.
3.2 Create a new scenario for the work in the directory and name it ATP_File_JDBC_XX.
Please make sure all the objects created below are added to your scenario. If it is not,
you can do this from the “Objects” tab by navigating to the object, bringing up its context
many and selecting “Add to Scenario…”. Select your scenario.
3.3.2 In the Edit Communication Channel screen, provide the following parameters:
VendorNumber,LastName,SearchTerm,Currency,Street,City,Zip,Country
Take a moment to compare this with the data type in the repository. See how the
document name and namespace and other values here are used in the datatype.
Note the large Poll Interval. For testing purposes, we want to set an unusually high
interval to avoid inadvertent messages being sent continuously. While testing this
scenario, sending of the file will be very deliberate by manually copying the test file into
the source directory and reactivating the communication channel as described below in
the testing section.
3.3.3 Create a new Communication Channel for business system ATP_Jdbc_Receiver called
Jdbc_Receiver_EO_XX using the following parameters:
Connection*:
jdbc:microsoft:sqlserver://iwdf5210.wdf.sap.corp:1433;DatabaseName=Northwind
3.4 Next step is to create a “Sender Agreement” object. This defines a binding between the
sender communication channel and the outbound interface.
3.5 Now create a “Receiver Agreement” object. This defines a binding between the receiver
communication channel and the inbound interface. This will allow you to assign a receiver
communication channel to the receiver service/interface you have chosen.
3.5.2 Fill in the following values on the pop-up screen and click “Create”.
3.5.3 Enter “Jdbc_Receiver_EO_XX” for Receiver Communication Channel and save.
3.6 Create a new Receiver Determination. Receiver Determination defines a binding between
the communication channel you just created, and the inbound interface.
3.6.1 In the left frame, right-click on “Receiver Determination” New.
3.6.2 Specify the following parameters in the pop-up and click “Create”.
3.6.3 For Configured Receivers, select Service ATP_Jdbc_Receiver and Save. Remain on the
Receiver Determination screen.
3.7 In the following steps, you will create an “Interface Determination” object. Now that we
have defined a receiver for the message, we need to assign an inbound interface, and an
interface mapping (if necessary).
3.7.1 In the area “Configuration Overview for Receiver Determination” at the bottom of your
screen, hit refresh.
3.7.2 In the column “Receiver (Partner|Service)” right-click and select “New Specific”, in order
to create a new Interface Determination object.
3.7.3 You are now in the screen “Edit Interface Determination”. In the section “Configured
Inbound Interfaces” select the following using F4 help. When you are done, please save
the Interface Determination object.
3.8 Go back to the previous Receiver Determination screen and click on the refresh button
within the Configuration Overview for Receiver Determination section at the bottom.
4.1 When the file VendorXX.xml is placed in the Source Directory of the sender file adapter
(as specified in the Communication Channel ‘File_Sender_XX’), the file adapter picks up
the file and processes it.
Hint: In order to reset the polling cycle of the inbound file adapter, you must go back to
the Integration Directory and reactivate your communication channel ‘File_Sender_XX’
under your business system ‘ATP_File_Sender’. As soon as the file sender
communication channel is activated and is replicated in the adapter engine cache, the
polling cycle will start (this could take a few seconds).
4.2 Monitor your directory. The file should disappear after a few seconds. This means that it
was processed and then deleted by the adapter engine.
4.3 Log on to the XI Integration Server, choose monitoring Integration Engine monitoring
(or execute transaction SXMB_MONI).
4.4 Choose “Monitor for Processed XML Messages”. You can filter using different criteria, for
example by date and also by sender service (find your own business service name in the
drop-down list). In the monitor, look for your message being sent to the JDBC adapter.
Inspect the message for any errors.
4.5 In the Runtime workbench, under ‘Message monitoring’, select messages from
component ‘af.<SID>.<host>’ (this represents the central adapter engine.) Using the filter
configuration, find your message ID in the list. Select your message, and click ‘Details’.
From the details screen you can select ‘Audit Protocol’ for more information regarding the
status of your message and the JDBC post.
4.6 To verify that the data is posted to the SQL server please execute the following url:
(Replace Last_Name with the name you entered in the file)
http://<hostname>:<port>/Northwind?sql=SELECT+*+FROM+VendorMaster+WHERE+L
ast_Name='Smith'+FOR+XML+RAW&root=ROOT
Sample Result:
<?xml version="1.0" encoding="utf-8" ?>
<ROOT>
<row Vendor_Number="301000" Last_Name="Smith
Search_Term="John" Currency="USD" Street_Address="3421
Hillview" City="Palo Alto" Zip="94304" Country="US" />
</ROOT>
XI 3.0 Sales Order example of a BPM scenario
System Access
...
Purpose
Sales orders arriving from different systems arrive in XI and a credit check is performed. This credit
check is not shown in the demo. If the credit check fails the sales orders are collected in pairs and
sent to a central CRM system where the priority can be decided upon using a simple form (via a
workflow which is triggered in this CRM system). If the order is low priority the workflow replies to XI
and the sales order is cancelled. High priority orders will be sent for approval and the result of this
workflow is returned to XI. If approved, the order is sent by XI to R/3 for production and delivery.
This is a technical demo showing the integration between cross-component business processes
and local human workflow processes. The cross-component process is triggered by sales orders
coming from different systems, which are combined into one temporary order that triggers a
workflow process to approve or reject the sales order where credit check failed. Normally workflow
deals with references to the business objects but in this case because some of the orders come
from legacy systems the data has to be displayed in a form.
Data Overview
XI Tom Elke
(Sales Director) (Key Accounts)
Trigger Workflow
Prioritize
Approve
For checking if there are any running workflows under these user names do the following steps
1) Logon to the CRM system using the user RILKEE and
2) Choose the favorite SAP Business Workplace from the favorites list
4) In the above screen shot you see that there is still one workflow.
5) In this case select this workflow and hit the execute button and set the corresponding action
for the workflow and save the same
6) Make sure that there are no items within the workflow for the rest of the demo to work fine.
7) The same set of steps should also be repeated for user BENDERT (password WELCOME)
and see if there are any open workflows.
1. Log on to CRM (FEZ) with user RILKEE (Ellen Rilke), client 800 and password WELCOME.
(or user DEMO password WELCOME).
CRM
Call the Business Workplace
2. Click on the Inbox branch of the navigation tree and you will see your work items in the top right
hand frame (‘Set priority…).
3. Double-click on the first work-item or click on the execute button above it so that it is executed
and you are shown the form. This form displays information from the two sales orders and
allows Ellen to select a priority.
4. Set the priority high (less than 5) if you want an additional approval step, otherwise set the
priority low (6-9). However, if the priority is low the sales order will be cancelled by XI and NOT
sent to R/3 for production and delivery. If you are familiar with workflow you could create an
attachment via the Workflow Toolbox at this point.
Save the changes ( ) and return with this button ( ). The work item will have disappeared
from your inbox.
6. You can see from the log that a second step has been created for the priority to be verified.
Note: This log is also directly available in the workflow toolbox tabstrip in the form.
1. Logon to the CRM system (FEZ) client 800 with the manager BENDERT (Tom Bender) password
WELCOME.
2. Navigate to his Business Workplace using this button and Click on the Inbox branch of the
navigation tree and you will see your work items in the top right hand frame (‘Set priority…).
3. Double-click on the work-item or click on the execute button above it so that it is executed and
you are shown the form. This form displays information from the two sales orders and allows
Tom to change the priority and approve or reject the suggestion. Rejecting it will cause it to
default to a low priority before it is returned to XI and the orders will not be forwarded to R/3.
Before approving, you can optional perform the Monitoring in Workflow scenario described next.
You can see the recipient of the message as the business process (OrderProcessing)
6. XI now triggers the CRM workflow via a proxy. You will need interrupt this phase and
complete phases 2 and 3 before continuing to look at the log in this screen.
In the above screenshot, the red rectangle depicts the approval that arrives in XI via the proxy from
the workflow while the blue rectangle depicts the two orders being sent to the R/3 backend via the
business process.
Created 27.09.2004 Page 13 of 22 IDES
x_Demo_XI30_Integration.doc
8. If the order is rejected in the workflow, the rejection message arrives in XI and is then sent
back to CRM by the business process.
In the above screenshot, the red rectangle represents the rejection message that arrives in XI from
the workflow while the blue rectangle represents the rejected orders being sent back to CRM.
9. When the order is opened in CRM, the status Rejected can be viewed in the order.
Usually you can navigate directly from the business object or form to the process log as shown in
this optional step.
1. When displaying the form, click on the Workflow Toolbox
3. You can see the steps that have taken place so far and who did them when. To see a
detailed view click on the step you are interested in.
This shows how the users involved in a process can navigate directly to the process log and
drill down to the detail they require.
The Portal currently configured is the portal at http://idesportals6.wdf.sap.corp:1080/ (or use the
test portal http://idesportalt6.wdf.sap.corp:1080/ ).
1. Log on to the portal with user BENDERT password welcome.
2. Navigate to the Universal Worklist and select the work item as shown below.
1. You can create and ad hoc workflow from the Universal Worklist by selecting the Ad Hoc
Workflow button as shown below.
2. Just follow the wizard to create a simple two step workflow. Use the “Work task” task type to
create the simplest workflow.
Overview
In this exercise we continue to focus on the Business Process Management capabilities of XI 3.0.
The goal is to implement a simple, stateful process. As a result of this exercise you will be able to
model a “collect” pattern using BPM and apply it to IDoc communication. You will become familiar
with the concept of correlation, and multi-mapping (N:1 mapping).
Prerequisites
Description
The requirement is to collect incoming vendor master records. The incoming messages arrive via
the file adapter (or, for testing purposes, the plain HTTP adapter). After a certain number of
messages are collected, they are bundled and mapped to a package of IDocs. This package of
IDocs is then posted into the R/3 system via the IDoc adapter.
The standard BPM collect patterns are already predefined any new XI 3.0 installation. The focus
here is on the customer requirement for XI to post IDocs into R/3 as packages and yet being able
to handle each of them individually.
For the purpose of this exercise we will implement option (a) above, for simplicity reasons.
Options (b) and (c) can be implemented as optional exercises.
In this exercise you will see that, when implementing BPM, the bulk of the work does not
necessarily take place within the business process modeler itself. Preparing all the surrounding
objects in the Repository and Directory may require just as much time and effort.
Exercise steps
Step 1 – Repository
1.1.2 Create the outbound interface Vendor_out_collect used for vendor information in
this exercise. Reuse the Output Message “Vendor” from the “urn:sap-
com:atp:TBIT44:base”
1.1.3 Business Processes only work with abstract interfaces. Create an abstract,
asynchronous interface called CREMAS (based on single IDoc CREMAS03,
which is located under “imported objects”). This will be the input to the process.
1.1.4 Examine the structure of the imported object “CREMAS.CREMAS03”. It can only
be used as a single IDoc and not as a package. Therefore it cannot be used as-is
for the target of the 1:N mapping and the output of the business process. We
need to use a manual workaround to create a structure able to handle packages:
1.1.4.1 Export the XSD definition of the IDoc onto your desktop
1.1.4.2 Edit the XSD definition and make the following change:
1.1.7.2 Goto the “Messages” tab and change the occurrence of the source
message to “0..unbounded”. This defines the mapping as N:1 mapping.
1.1.7.3 Map the node “CREMAS03” from the source document to the structure
“IDOC”. This indicates that the root of each source message should be
mapped to an IDOC node in the target
1.1.7.4 In the target message, disable the node “EDI_DC40”.
1.1.7.5 Assign the constant “1” to the target attribute “BEGIN”.
1.1.7.6 The rest of the mapping can be completed automatically:
Highlight the nodes “E1LFA1M” in the source and target document
Click on the button (“map selected fields and substructures if
names are identical”).
Verify that all fields were mapped correctly.
For the source interface remember to change the Occurrence to “0..unbounded”, in order
to match the message mapping.
1.1.9 Create a context object called zipcode (type String).
1.1.10 In your abstract interface CREMAS associate the context object “zipcode” to field
PSTLZ in segment E1LFA1M. We will use this as correlation id in BPM to
correlate the messages.
Step 2 – BPM
2.3.2 Create a correlation object named “zipcode” and click on the details icon. This
will display the correlation editor screen. Here more details about the correlation
can be entered.
2.4 Switch to the Graphical Definition mode and compose the business process flow by drag-
and-dropping each step into the desired location and filling out the parameters as
specified below:
- Loop step – this step will ensure that we will collect exactly 3 IDocs.
(“Loop 3 times”)
o Step name: “Loop3”
o Condition: “counter ≠ 3” (Use the condition editor to fill the condition
property.)
- Receive step – this step will receive incoming IDocs and correlate based on zipcode
(“receive single IDoc and correlate”)
o Step name: “Receive CREMAS”
o Message: “CREMAS_single”
o Start process: yes
o Use Correlations: “zipcode”
o Activate Correlations: “zipcode”.
o zipcode zip: CREMAS_single.zipcode (select your context object in the
condition editor, for container CREMAS_single.)
- Container Operation step – this step will increase the loop counter
(“counter = counter +1”).
o Step Name: “increment counter”
o Target: “counter” (simple variable)
o Operation: “Assign”
o Expression: “counter” (simple variable)
o Operator: “+”
o Expression: “1” (constant – type xsd:integer)
- Container Operation step – this step will append the newly received IDoc to the list
of IDocs already collected. A multiline container is used for this purpose.
(“Append CREMAS_single to CREMAS_multi”).
o Step Name: “Append IDoc to list”
o Target: “CREMAS_multi” (Interface variable)
o Operation: “Append”
o Expression: “CREMAS_single”.
- Transformation step – this step occurs outside the loop. It will call the N:1 mapping
which will create the IDoc package.
o Step Name: map IDocs to package
o Interface mapping: CREMAS_multi_package
o Source message: CREMAS_multi
o Target message: CREMAS_package
- Send step – this step will send the package of IDoc to the R/3 system
o Step Name: Send CREMAS package
o Mode: Asynchronous
o Message: CREMAS_package
o Acknowledgement: none
o Receiver from: send context
3.2 We will create 2 receiver determinations: DMS_CRM BPM and BPM IDoc receiver.
Make sure, that you are only using object from your namespace
urn:sap-com:atp:TBIT44:GroupXX:bpm_collect (XX is your Group Number)
3.3 If necessary, create a receiver agreement for the IDoc receiver. It should point to the
existing communication channel IDoc_receiver.
Note that the IDoc adapter will lookup the logical system name of the sender from the
SLD. In this case the sender of the message is the BPM process
‘CREMAS_collect_packageXX’. This would lead to an error at runtime since there is no
corresponding entry in the SLD. The solution is to overwrite the sender service name
using the header mapping functionality.
Step 4 – Test
For convenience reasons, we will test with the plain HTTP client in order to send three separate
XML messages successively
4.1 From the plain HTTP client, send the first XML message as follows:
- Sender Service: DMS_CRM
- Sender Interface: Vendor_out_collect
- Interface Namespace: urn:sap-com:atp:TBIT44:GroupXX:bpm_collect (XX is your
Group number)
- QoS: EO
- As payload, please cut and paste the contents of the file Vendor[XX].xml provided by
the instructor.
4.2 Examine your message in transaction SXMB_MONI. Notice that the message was sent
to the process engine, and that the status of the workflow is ‘in process’.
4.3 Send a second and a third message (using the same zipcode).
4.4 Notice that the process is now in state ‘COMPLETED’ and that a new message
containing the IDoc package was sent to the R/3 system.
4.5 Check in the R/3 system in transaction WE05 that 3 IDocs were posted.
Maks sure, that you use Vendor Numbers, that are not already used in the
Backendsystem: For Example use 00099XX001, 00099XX002,.. with XX = Group
Number.
You can check in Transaction XK03, that your Vendors have been created.
.
Appendix: naming conventions and terminology
Exercise 5
1
Use Case
Other Order
System Fulfillment
CRM/
Catalog
Catalog
Car dealers could use a non-SAP CRM system to order spare parts. The
slide shows an overview of a system landscape for the procurement of spare
parts for different brands.
The interfaces to the supplier systems are usually defined by the dealer
management systems of the manufacturers. No-name products could be
controlled directly by the dealer.
2
Order
Fulfillment
Catalog/
CRM
ERP
ERP
Dealer
XI/BPM
3
Overview
CRM System AirlineGroup1 Integration Process Travel Agency
AirlineGroup2 Summer
2. Preparations
4
Integration Process
1 2 3
4 5
5
Web Dynpro User Interface
The business case for the complete process is a simplified selling of spare
parts. The spare parts are selected in a non-SAP Catalog/CRM system,
which is simulated in the exercises by a Web Dynpro user interface.
6
Exercise 1: Receive Spare Part Items
Collect pattern:
Items correlated by CustomerNo
End condition:
after sending 3 items
Since the non-SAP Catalog/CRM System sends the spare part items in
individual messages, the process starts with a collect pattern. The order
items are merged into a single message which is then used in exercise 2
where the preparations in the SD system are made.
7
Exercise 2: Preparations
Returns a list of
materials that have
to be created
Transformation
step
Synchronous
send step
catches application
and
system exceptions
Application
exception
8
Exercise 3: Create Materials
Material1
System1
System2
Material2
System1
System2
© SAP AG 2004, SAP NetWeaver Henrik Stotz 9
In this exercise, the materials determined in the last exercise are created.
This is done by combining a block in ParallelForEach mode with a block in
ForEach mode, which loops over the list of receivers determined beforehand
(broadcast pattern).
9
Exercise 4: Create Purchase and Sales Order
In this exercise, the sales and purchase orders are created in parallel.
If one fails, both orders are canceled. As an extension of this exercise,
the creation of the purchase order part is enhanced by a manual
compensation in case the creation of the purchase order fails. The
exercise uses application and transport acknowledgments of send
messages. Moreover, send contexts are used for routing purposes.
If the Response Status field for the Purchase Order is ERROR, the
process waits for one minute.
If the error was corrected and a OK-Message has been raised
manually the Response Status field is set to OK. This
indicates that the purchase order has been corrected manually. This
correction can be done with report ZSK_STARTMESSAGE_OUT in
client 813 (!).
If you don‘t run the report, no message is received and a timeout
occures after one minute and the process is continued. In this case,
the Response Status field for the Purchas Order remains on ERROR
and both orders are cancelled in the next block.
You can force the ERROR situation for the purchase order if
CustomerNo contains a “Y“.
To create an error in the SalesOrder, CustomerNo must contain a “Z“.
If you don‘t compensate the purchase order “manually“ the process
continues after one minute.
10
Exercise 4: Create Purchase and Sales Order
“manual compensation”
Report executed in
time. Message sent to
the process indicating
the that purchase order
is ok. The process
PurchaseOrder
status is updated.
11
Exercise 4: Create Purchase and Sales Order
“Automatic compensation”
If either the purchase order OR the sales order run into an error, the
“automatic compensation” branch cancels BOTH Orders, raises an alert, and
then cancels the whole process
12
Exercise 5: Send Purchase Order
In this exercise, the purchase order is sent to the supplier. An order response
is received and acknowledged.
13
Runtime Example: SXMB_MONI
14
Runtime Example: Workflow Log
15
Runtime Example: Graphical Workflow Log
16
All Exercises
Prerequisites
- Good understanding of XI features
- Good understanding of BPM features
Overview
The business case for the complete process is a simplified selling of spare parts. The spare parts
are selected in a non-SAP Catalog/CRM-System, which is in our exercises simulated by a Web
Dynpro user interface. Since the non-SAP Catalog/CRM System sends the spare part items in
individual messages, the process starts with a collect pattern (exercise Receive Order Items). In
the Receive Order Items exercise the order items are merged into a single message which is then
used in the Preparations exercise where the preparations in the SD system are done. The
Preparations exercise consists of a synchronous call to the SD system to check whether missing
materials have to be created. If so, the materials are created in the Create Materials exercise by
looping through a list of missing materials and sending each material to the receivers, which are
found using a receiver determination step (MM and SD system). In the Create Orders exercise, a
sales order and a purchase order are created. The last exercise - Send Purchase Order to
Supplier - covers the communication with the supplier who receives and confirms the purchase
order. Exception handling is also part of the exercises.
In order to focus on the modeling of the process we hide complexity. Therefore, we have simple
message types and there are no mappings between process interfaces and the interfaces used
by the business systems. In fact, we simulate the business objects (e.g. create Material, create
Order) using ABAP proxies in the business systems, which are physically the clients 811
(Supplier), 812 (SD), 813 (MM) in the Integration Server box. Moreover, the Integration Directory
configuration is preconfigured and so does not have to be done by the participants.
The following graphics show the business scenario, which is separated in five exercises:
CRMCatalog Æ DMSCRM
SD System Æ Airline_Group_One
MM System Æ Airline_Group_Two
Supplier Æ Travel_Agency_Summer
1. Receive Order Items
2. Preparations
3. Create Materials
4. Create Orders
Preparation
Create Materials
Create Orders
solution template
your process
The server and port names are the same as above. They are provided by the instructor.
2. Enter the name of your business process in the Process Definition field.
This is very important; otherwise you will send the data to a different process.
NOTE:
You might run into problems with endless running processes caused by the wrong
process design. In this case, the workflow log shows an older protocol time stamp. To
avoid interference with these process instances use a different Customer Number.
3. Click SendItem .
OrderItem has been submitted is displayed.
4. Log on to the Integration Server (ABAP stack, client 800) and check in
transaction SXMB_MONI whether you can see your SparePartItem message.
The Receiver Service column must display the name of your process .
You may use the /SPAREPARTS layout for the list layout:
Double-click
Make sure that in the XPath expression the Multiline check box (lower right corner) is
deselected. This is necessary for all XPath expressions you create in correlations or if
you use/activate a correlation in a send or a receive step.
6. Define a container element item in the process container:
Make sure that in your XPath expression the Multiline check box is deselected (lower
right corner).
10. Define a container operation to append a single item from container element item to the
list of items in container element itemlist:
11. Save and activate your process. Next, send three items to your process by using the
Web Dynpro user interface. (submit three times):
12. Check the workflow log of your process. It should look as follows:
As you send three items with the same customer number they are collected by the
process. After the third item, the condition becomes TRUE; therefore the loop is finished
and the process is complete.
Exercise 2: Preparations
In this exercise the “itemlist” is transformed to a “list”, which is send synchronously to the
business system Airline_Group_One. The response message contains the materials which must
be created in the next exercise. This exercise also demonstrates exception handling for
application and system errors. In case of an application exception, an alert is thrown, which can
then be reviewed in the alert inbox.
1. To collapse the ReceiveOrderItemBlock block you created in the first exercise, choose
Collapse from the context menu:
2. Define a new block Preparation with two exceptions SystemError and ApplicationError:
Set the mode of the send step to Synchronous. The send step uses the synchronous
Interface prep_sync_abstract. The request message is list and the response message is
preplist. For the Exception System Error enter SystemError, for the exception Application
Fault enter ApplicationError.
7. Add two exception branches for the exception handlers SystemError and ApplicationError
by calling the context menu.
8. Add a control step PrepControlAppException into the exception handler for the exception
ApplicationError:
Select the Throw Alert action and the PROCESS ALERT alert category. Enter an
appropriate alert message (e.g. Preparation Checks group XY failed).
9. In the exception handler branch for the SystemError exception, insert a control step
PrepControlSysError to cancel the process.
11. Send three line items to your process using the Web Dynpro user interface and check
your process instance by calling transaction SXMB_MONI_BPE. The workflow log should
look as follows:
12. Send three line items to your process. Make sure that you send spare part number
“9999”, which causes an application error, at least once:
The process catches the application error and triggers the alert defined in the process:
You can check whether the application error has been thrown by the receiver ABAP
proxy by calling transaction SXMB_MONI:
If your user is registered for the Alert Category PROCESS ALERT and your user in client
800 has an email address assigned to it, you can review the alert in the alert inbox:
http://<server>:<port>/sap/bc/bsp/sap/ALERTINBOX/index.htm
13. The instructor will cut the connection between the Integration Server and the business
system Airline_Group_One by manipulating the corresponding SM59 RFC destination:
If you now run your process, the system error exception is triggered and the control step
in the corresponding exception branch cancels the process. Check this in the Workflow
log:
You can check whether a system error was thrown by calling transaction SXMBI_MONI:
Make sure, that the RFC-Destination is working again before you proceed.
14. Run the process with the spare part numbers 2000, 3000, and 4000. Since the materials
1000, 2000, 3000 are always marked as missing in the system, the preparation check will
return a message with the spare part numbers 2000 and 3000.
To check this, call transaction SXMB_MONI and select any messages where the sender
service is your process:
In this request message you should see all spare part items transferred to the preparation
check:
If you select the message in transaction SXMB_MONI – the receiver service is your
process and the receiver interface is prep_sync_abstract - you can check the preparation
response.
In the response you can see which materials will be created in the next exercise:
Exercise 3: Create Materials
In this exercise, the materials determined in the last exercise are created. This is done by
combining a block in ParallelForEach mode with a block in ForEach mode which loops over the
list of receivers determined beforehand (broadcast pattern).
13. For the SystemBroadcastPerMaterial block, set the ForEach mode. For the Multiline
Element property select Receivers, for the Current Line property select Receiver, and for
the correlation select CorrMaterials.
14. In this block insert the send step SendMaterial:
Two materials (2000 and 3000) have been created and broadcasted to two systems
each.
16. Insert a send step Cancel_PO into branch1. Enter CancelPO for the Send Context
property.
17. Insert a send step Cancel_SO into branch1. Enter CancelSO as the send context:
The same is true for the SalesOrder if you use a customer name containing a “Z”:
Check if your process works. If you use customer names without “Y” and “Z”, your
Workflow log should look as follows:
If you use customer names with “Y” and/or “Z”, your Workflow log should look as follows:
2. Insert a block ManualCompensation into branch1 and define the exception TimeOut:
5. Add an exception branch to this block, which handles the TimeOut exception:
6. In the Manual Compensation branch, insert a control step POErrorControl, which triggers
an alert with the alert message PurchaseOrder could not be created, Run Report
SPAREPARTS_MANUALCOMPENSATION in client 813 within the next 60 seconds to
compensate manually.
7. Insert a receive step ReceivePOAgain after the last control step:
Process waiting
for
manual compensation
Process manually
compensated
Process without
manual compensation
Exercise 5: Send Purchase Order to Supplier
In this exercise, the purchase order is sent to the supplier. An order response is received and
acknowledged.
2. Insert a send step SendPO2Supplier. Enter Supplier for the Send Context property: