cancel
Showing results for 
Search instead for 
Did you mean: 

Having multiple sender components send to one receiver component ?

Former Member
0 Kudos

Hi,

the scenario is XI Proxy - Integration server Mapping - Web service call.

Here is my situation, I have many sender components which all have names that start with F (exp : F01, F02, F03) , and others that have names that start with I (I01, I02, I03) ,

Basically , I'd like to make a receiver determination that looks like sender component = F* and another receiver determination where sender component = I* this way all requests comming from F senders go to receiver A and all requests from receiver I go to receiver B.

Any idea how to do this... ?

Thanks

Edited by: Thierry Dagnino on Dec 17, 2009 11:48 AM

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

> Here is my situation, I have many sender components which all have names that start with F (exp : F01, F02, F03) , and others that have names that start with I (I01, I02, I03) ,

>

> Basically , I'd like to make a receiver determination that looks like sender component = F* and another receiver determination where sender component = I* this way all requests comming from F senders go to receiver A and all requests from receiver I go to receiver B.

>

Basically, you can solve it by checking the first character of your sender component in X-path expression. e.g.

/p1:MT_test/Records/senderComponent[ starts-with(.,"F") ]

and in another RD

/p1:MT_test/Records/senderComponent[ starts-with(.,"I") ]

Regards,

Sarvesh

Former Member
0 Kudos

Hi Sarvesh,

in this senderComponent element you are refering to in your x-path.. I do not see it. Where does it come from ?

Thanks.

Former Member
0 Kudos

> in this senderComponent element you are refering to in your x-path.. I do not see it. Where does it come from ?

Oho.. I am sorry for the misunderstnding.. those are just fake names. you just use your actual X-Path.

For example in your x-Path when you expend your source structure and when you click on the field which brings F101, F102 or I101, I1002 etc. then it will show you actual x-path.

One more thing you have to use EX operator in your Condition Editor after you put your conditions in X-path.

Regards,

Sarvesh

Former Member
0 Kudos

Hi,

this is actually my problem.. the business component is not par of any field of the message.

I'm hoping I can get it from PI since PI receives it in the call.

I would have thought this would be one of the standard fields that should be put in the context data available for the local rule of the receiver determination.

Thanks.

Former Member
0 Kudos

Then I think I have not understood your question properly. you are sending the data to PI via proxy so you must take it from payload.

>I have many sender components which all have names that start with F (exp : F01, F02, F03)

What do you mean by above statement? What is sender component?

Former Member
0 Kudos

Hi,

Its the sender communication component. This is set by the ERP system's XI runtime automatically. I do not add it in any field of the payload.

Thanks.

Former Member
0 Kudos

OK, Just one thought.. Why don't you create two mappings. I mean create 2 mappings and then do mapping based on some conditions.

In ID just create 1 receiver determination, add both the receivers. Mention 2 seperate Interface mappings in your 2 Interface Determination base on your receivers and finally create 2 receiver agrements..

Former Member
0 Kudos

You mean create 2 mappings in ESR , why ? How will this allow me to get the sender communication component.

Perhaps I'm missing something in your explanation.

The problem I have is that there could be 30 sender systems. This is why I want to make a generic rule like (F) or (I) because I don't want to create 30 receiver determinations, receiver agreements and interface determination since they all go to the same comm chanel.

Thanks.

Answers (4)

Answers (4)

Former Member
0 Kudos

It turns out that by you can have a catch all case by putting * in the receiver determination.

former_member200962
Active Contributor
0 Kudos
Basically , I'd like to make a receiver determination that looks like sender component = F* and another receiver 
determination where sender component = I* this way all requests comming from F senders go to receiver A and all 
requests from receiver I go to receiver B.

My questions:

1) Will Sender component name come in the source payload i.e. some node contain F01 or I01?

2) Why are you stressing on Receiver Determination? (no need to answer this Q if answer to first is YES)

When you want to implement a condition for F* or I* then you should be using the Contains Pattern option from the middle operand of the Condition Editor.....for more info refer this wiki (check screenshot no.6):

[http://wiki.sdn.sap.com/wiki/display/XI/XpathConditioninReceiverDetermination|http://wiki.sdn.sap.com/wiki/display/XI/XpathConditioninReceiverDetermination]

Regards,

Abhishek.

Former Member
0 Kudos

Hi,

no the sender component is not passed in the payload. This is why I am asking the question.

Thanks.

sunil_singh13
Active Contributor
0 Kudos

Hi Thierry Dagnino,

If I understand correctly you have single message comming from multiple sender system and these sender systems can be categorised as starting with "F" and Starting with "I" and then u have to send data coming from F to A and Data Coming from "I" to B.

You make a Single receiver determination with sender as "*" (so that it will accept I and F), while Specifying the Receivers in it you specify both the System ("A" and "B") and in Interface Determination you put the condition such that Data for A should go to A and Data for B should go to B.

Thanks,

Sunil Singh

Former Member
0 Kudos

Hi,

yes you understand the problem correctly ... however note that there is nothing in the payload that allows me to distinguish

the sender systems. This is why I am trying to get the sender component name .

This is basicaly the question : how to get the sender component name available to receiver determination rules....

Thanks again for your help.

former_member212816
Participant
0 Kudos

Hi,

First things first, I don't have the solution to your exact question.

However, I had a similar requirement. As suggested by other members in this thread, we made modifications to the web service, had a field by name "Sender (/Receiver)". The sending system would populate the value of the sender or receiver in the web service. Based on the value in this field using conditional interface determination and sent it to the particular receiving system.

Was wondering, if yours is a custom web service, is it possible to add an additional field specific to identify the name of the sender / receiver? And ask the sending system to populate this field with the name of the sending (/receiver) system.

Thanks,

Manohar Dubbaka.

Former Member
0 Kudos

Hi,

yes adding a field is possible. I know this will solve the problem but I'm looking for a configuration only solution.

From the various answers I am getting , I'm starting to think there is no built in solution for this...

Honestly, this would be a nice feature to have. Why should the payload indicate the sender system if it is sent to PI already in the call from the sender system when using the XI protocol....

other data such as the sender system is put in the context data if using IDOC protocol and it is available in the receiver determination local rules. Why not in the case of XI protocol. I guess , its a simple case of missing feature.

Anyone have other ideas ?

Thanks.

sunil_singh13
Active Contributor
0 Kudos

Hi Thierry Dagnino ,

You can develope an Adapter module for sender adapter wherein you can access the sender name and add this infold in the payload (in the adapter module) and finally the payload will contain the sender info as well, that will help you to put the condition in the receiver determination.

Thanks,

Sunil Singh

Former Member
0 Kudos

Well, you can create a Receiver Determination and set "Sender Service" field to "F". Then, you can create another Receiver Determination and set "Sender Service" field to "I". Have you already tried to do that?

Former Member
0 Kudos

F

  • is not permitted in the field ... message is

Name contains invalid characters: * Only a(A)-z(Z), 0-9, and "_" are permitted

Former Member
0 Kudos

Sorry! You are right, only * can be used!