RSS

Archiv für den Monat August 2012

SAP PI: Mit dem Condition-Editor Teilstrings abfragen

SAP PI: Mit dem Condition-Editor Teilstrings abfragen

Im Rahmen eines Projektes habe ich ein bisher mir unbekanntes Feature des Condition-Editors von PI entdeckt, nämlich das Überprüfen von Substrings. Das läßt sich beispielsweise in einer Receiver- oder Interface-Determination einsetzen. Man will in einem Feld überprüfen, ob z.B. die ersten 3 Zeichen einer bestimmten Zeichenkette entsprechen und wenn das der Fall ist, wird der Empfänger A, ansonsten aber der Empfänger B ausgewählt.

Beispiel:

Nachricht (Outbound/Eingang PI):

Receiver Determination:

Zu diesem Zweck erstellt man mit dem Condition-Editor eine Bedingung, die das entsprechende Feld in eckige Klammern einschließt (ohne vorangegangenen Slash „/“), ruft die Substring Funktion auf und wählt Startindex und Endindex. Achtung: Der Endindex wird nicht mehr mit dargestellt! Durch einen Gleichheitsoperator werden die booleschen Werte „true“ oder „false“ zurückgegeben:

/p1:idmGetProcessStatus/request[substring(system,1,3)=‘SME‚]

Der Operator „Ex“ überprüft, ob das Feld existiert oder nicht. Es existiert, wenn der boolesche Wert „true“ ist und es existiert nicht, wenn der boolesche Wert „false“ ist.

Im Beispiel (Receiver Determination) wird auf die Zeichenketten „SME“ und „E97“ überprüft. Ist im Feld „system“ der Wert „SMEabc“ oder „SME1234“ etc. eingetragen, beginnt also der Feldinhalt mit der Zeichenkette „SME“, dann wird in das System der oberen Zeile geroutet, beginnt der Feldinhalt mit „E97“ wird in das System der unteren Zeile geroutet. Triff keine der beiden Bedingungen zu, schlägt die Nachricht fehl („No receiver found“).

Links:

SDN: Xpath Condition in Receiver Determination

help.sap.com: Condition Editor

help.sap.com: StandardfunktionenIn a project I discoverd a feature of SAP PI, which I did not realize in the past. It is a feature of the condition editor in combination with the usage of the Java substring function.If you want to use the features of this function in combination with the condition-editor, you can use it. For example, you want to check whether the first 3 characters of a particular string in a XPath-field match. If that’s the case, the receiver A is selected and otherwise the receiver B is selected. This is one approach to implement content based routing.

Example:

Message (Outbound sender/Inbound PI):

Receiver Determination:

In order to let this work, you have to define a conditon like this:

/p1:idmGetProcessStatus/request[substring(system,1,3)=‘SME‚]

The „Ex“ operator is use to check if a field or a condition exists. With our condition the field only exists, if the first three character match, otherwise not!

Links:

SDN: Xpath Condition in Receiver Determination

help.sap.com: Condition Editor

help.sap.com: Standardfunktionen

 
Hinterlasse einen Kommentar

Verfasst von - August 2, 2012 in SAP

 

Schlagwörter: , , ,