on 12-17-2009 4:48 PM
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
> 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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
> 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
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.
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..
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.
It turns out that by you can have a catch all case by putting * in the receiver determination.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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.
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.
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
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?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
85 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.