cancel
Showing results for 
Search instead for 
Did you mean: 

Receiver interfaces condition

Former Member
0 Kudos

Hello All,

In PI 7.31, I am trying to insert 1 receiver interfaces condition to check if the source field is not empty, then do not execute the interface

I have given the condition as ns0:Material_MT/row/flag # (not equal) and right operand is blank and checked multiline checkbox

In my case, the source structure is 0..unbounded where I use a select statement to fetch mutiple records (row)

So the structure is like this below

<MT_Material>

<row> 0..unbounded

<matid>

<flag>

</row>

</MT_Material>


The condition is not working so I am assuming its wrong. And also since the source structure is 0..unbounded, how do I specify the condition ?

is the multline will take care of 0..many?


thx

mike

Accepted Solutions (1)

Accepted Solutions (1)

Harish
Active Contributor
0 Kudos

Hi Mike,

from your problem description i understand that you want to filter the messages which do not have flag field. message can not filter in receiver determination level.

I would suggest to filter the message in message mapping (multimapping).

regards,

Harish

Former Member
0 Kudos

I think I haven't made my question clear

I have 2  receiver interfaces in the ICO for one outbound interface and I am maintaining maintain order at runtime checkbox for these 2

For the second interface, I have to execute only if it satisfies the condition given below

ns0:Material_MT/row/flag and ns0:Material_MT/Material ID not equal to space, then call the 2nd interface


how do I write the condition??

if the source structure ns0:Material_MT is 0.unbounded, how do I mention that in the condition editor? is it multiline check box?


pls help


thx

mike



Muniyappan
Active Contributor
0 Kudos

we don't have multiline check in condition...

i think harish got you.

you have to create multimapping. in the mapping you are going to use one sender message and two target message.

for first target message do one to one mapping. so it always execute the first interface.

for second interface when doing the the target node mapping check above condition and use create if function. whenever condition is satisfied it will execute the second interface.

look up this doc and see how condition is used to create the second target message.

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/90dcc6f4-0829-2d10-b0b2-c892473f1...

former_member190624
Active Contributor
0 Kudos

Hi Mike ,

ns0:Material_MT/row/flag and ns0:Material_MT/Material ID not equal to space, then call the 2nd interface


Above condition means , when MaterialID exists and value is " "(<MaterialID> </MaterialID>), we have to call 2nd interface ? Right ?


If yes , AFAIK standard Receiver determination will not work , please use extended receiver determination.


Thanks

Hari.



markangelo_dihiansan
Active Contributor
0 Kudos

Hi Michael,

Try using EX (expression) instead of = (equals), != (not equals) and CP (approximate symbol) and in the editor input

ns0:Material_MT[(row/flag != "") and (matid !="")]      

Also check multiline.

Hope this helps,

Mark

Answers (0)