You can define expressions to access a specific field of a message (payload element) with the expression editor.
Specify Context Object
1. Select the required interface variable.
2. Define how the field is to be accessed:
Select the corresponding context object.
The expression editor shows the context objects that are defined for the relevant service interface, and the technical context objects (namespace http://sap.com/xi/XI/System).
It also shows the context objects for all existing adapter-specific message attributes in the message header.
The namespace for adapter-specific attributes is structured as follows:
Pay particular attention to this convention when developing your own adapters (which you develop in a separate namespace).
All adapter metadata shipped by SAP is located in the namespace http://sap.com/xi/XI/System . The namespace for the context objects of these adapter-specific attributes is therefore structured as follows: http://sap.com/xi/XI/System/
Specify XPath Expression
- Select the required interface variable.
- Define how the field is to be accessed:
To use XPath, expand the structure of the message and double-click the required field.
If the field contains a structure, select Multiline
Note: An XPath expression is multiline if it returns a list. If the relevant checkbox has been selected, the evaluation of the expression will take into account that it is a list (and not a single value).
=a is interpreted
differently, depending on whether is a single
or multiline expression:
You want to formulate the following condition: The booking number (BookingNumber) is great than 0100 .
Since the greater than > operator is not available in the condition editor, you can use the following solution: You define the relevant logical expression in the expression editor by means of an XPath predicate, and assign it to a node element. Using the condition editor you then just query the existence of this node element (by using the existence operator ( EX ).
This means you first create the following expression in the expression editor:
/FlightBookingOrderConfirmation [BookingID/BookingNumber > 0100]
Using the condition editor, you then formulate the following condition:
(/FlightBookingOrderConfirmation [BookingID/BookingNumber > 0100] EX)
The meaning of this condition is as follows:
A node element FlightBookingOrderConfirmation exists, to which the following applies: The content of the subelement BookingID/BookingNumber is greater than 0100 .
Note: For an expression of the form /A/B/C = G the getText() method that determines the content of this node is applied to the node
Not equal to
Contains Pattern (CP)
You use this operator to query a string with a pattern. You can use the following characters for this:
*mploymenttaxdeclarat+on ≈ annualemploymenttaxdeclaration.
You use this operator to check the existence of the expression (in the left operand). This enables you to find out whether a substructure represented by the expression exists.
You can use this operator if you want to check whether a particular element exists in the payload, for example. To do so, enter the element you want to check in the left-hand operand and leave the right-hand operand empty. You can also use the = operand for this check
Procedure if No Receiver Found at Runtime
Behavior at Runtime
Message processing is terminated with an error.
You can correct the configuration and restart the message processing.
Select this setting when the underlying scenario is modeled in such a way that a receiver must always be found at runtime. If a receiver is not found at runtime, it is the result of a possible configuration error.
Message processing is ended as defined by your configuration settings. Since no receiver is determined, the subsequent pipeline steps (determining the inbound interface, mapping, outbound processing) are not processed. An error message is not sent to the sender. When you select this setting, you cannot execute the message again.
Select this setting when messages for which no receiver can be found can typically occur in the underlying scenario.
Continue Message Processing with the Following Receiver:
The message is sent to a fixed predefined receiver. You can specify the receiver in the Party and Communication Component fields (using input help).
These settings apply to asynchronous messages only. If a receiver cannot be found in synchronous communication, an error always occurs.
Defining Receiver and Routing Conditions
not exists condition
Step to create rules : https://blogs.sap.com/2011/03/23/how-to-use-receiver-rule-in-pi-71/
Insert Receiver Rule
If a specific receiver rule exists for the configuration you want, you can use this and add it to the integrated configuration.
To do this within the Configured Receivers frame, choose the arrow beside the Insert Line Below Selection ([PICT]) icon and choose Insert Receiver Rule. Call input help for the Rule column and select the receiver rule.
Specifying Inbound Interfaces and Mappings
- Specify mappings for the defined receiver inbound interfaces and specified cases.
When assigning multiple inbound interfaces, specify the Quality-of-Service:
If multiple inbound interfaces are assigned by the integrated configuration, the messages are forwarded according to the quality of service Exactly Once in Order (EOIO) at runtime. This means that the order in which the inbound interfaces are entered in the integrated configuration determines the order in which the messages are received.
You can change this default by deselecting the Maintain Order at Runtime checkbox. In this case, the quality of service Exactly Once (EO) is used to forward the message to the inbound interfaces.
We recommend this setting for adapters that do not support quality of service EOIO processing. This setting is also recommended if you want to avoid a single message that develops errors during delivery from stopping all subsequent messages from being delivered.
Specifying Inbound Interfaces and Mappings :
Quick reference: ICO quide
- Choose the Receiver Interfaces tab.
- Highlight the receiver (party/communication component) for which you want to specify an inbound interface (under Receiver ).
- Under Receiver Interfaces and Mappings specify a receiver interface for each outbound interface operation ( Name and Namespace fields).
Only interfaces that are defined for the receiver are offered in the input help.
- You can also specify an operation mapping for each inbound interface.
- When using parameterized mapping programs:
Configure the parameters of the parameterized mapping program.
If you reference an operation mapping with a parameterized mapping program in an integrated configuration, the parameters of the mapping program are displayed in the integrated configuration (under Parameters ). You can transfer values to the mapping program using the input fields in the Value column. The input help is determined by which category the parameter is from. If the parameters are from the Simple Type category, the expression editor for constants is called. If the parameters are from the Adapter category, the input help for communication channels is called.
If you have saved constants for certain parameters of the message mapping signature in an operation mapping, these parameters are not displayed in the integrated configuration that references the operation mapping. This is because in this case the value of the parameter results from the constants.
You can also specify a multi-mapping and configure a message split.
Enhanced/Extended Receiver Determinations
You can define that the receiver of a message is determined dynamically at runtime by a mapping program. Instead of creating the receivers in the receiver determination manually, you assign a mapping to the receiver determination and this returns a list of receivers at runtime.
A typical use case for this this if when you want to move the determination of the receiver to an external program (for example, a function module in an SAP system(ECC system))