cancel
Showing results for 
Search instead for 
Did you mean: 

Dynamically change Receiver Business system in message mapping

Former Member
0 Kudos

Dear all,

I would like to change the receiver business system in the message mapping that is used in the interface determination. I do understand there is an enhanced receiver determination where I can use a mapping but that is not what I am looking for.

I think this should be possible if we can change the appropriate value in the SOAP(message) header.

Possible candidates I can think of by looking at the SOAP header in SXMB_MONI are

1. SOAP:Header- SAP:Main- SAP:Receiver- SAP:Service

2. SOAP:Header- SAP:OutboundBinding - SAP:OutboundBindingEntry - SAP:ToServiceName

Q1. Which one of the above is relevant while identifying the receiver agreement ?

Q2. What is the best way to access them from the mapping(preferably from a UDF) ?

Thanks in advance.

Cheers

danus

PS: I have tried to set "http://sap.com/xi/XI/System","ReceiverService" in Dynamic config & ReceiverService, BusinessSystemReceiver and ReceiverSystem in the Container’s Transformation Parameters, but didn't get the expected result.

0 Kudos

Hi ,

I think this is exactly what I am lookig for. is thera any slution now?

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Chidambaram,

You use an enhanced receiver determination to have a mapping program determine the receivers of the message dynamically at runtime. 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 usage case is if you do not yet know the names of the receivers at configuration time. In this case, you can define a mapping program, for example, which reads a list of receivers from a table or from the payload of the message at runtime.

Go through the following link:

[Receiver Determination enhancement|http://www.saptechnical.com/Tutorials/XI/RecvDetermination/Enhancement.htm]

Hope your problem gets resolved.

Regards,

Kiran Bobbala

Edited by: kiran Bobbala on May 7, 2008 5:47 PM

Former Member
0 Kudos

As I mentioned in the original post, I do agree that it is possible to do an enhanced receiver determination, but I am looking for a way to change the receiver after it is determined(in the message mapping used in the interface determination, which is a step after the receiver determination)

Former Member
0 Kudos

Hi,

Take look at Receiver Agreement: there is section called "Header Mapping" where you can specify receiver service.

I personally believe the data you input here will oeverwrite value passed before calling adapter.

Since I never used the feature, you can try and share what you got in the thread.

Regards.

Liang

nisarkhan_n
Active Contributor
0 Kudos

What liang says is exactly the solution for you....that works fine....once you receiver is deteminatned either by enhance receiver or normal reciver step and in the receiver adapter you can change all the header values of the payload....using the HEADER MAPPING

Former Member
0 Kudos

Thanks all for the replies. The receiver needs to be decided based on a condition (in the mapping) in order to use different communication channel to send data to different destinations, so I do not think header mapping is an option.

Former Member
0 Kudos

In such a case, you have to check the blog:

Illustration of Enhanced Receiver Determination - SP16

/people/venkataramanan.parameswaran/blog/2006/03/17/illustration-of-enhanced-receiver-determination--sp16

Regards.

Liang

Former Member
0 Kudos

Thanks all for the replies. The receiver needs to be decided based on a condition (in the mapping) in order to use different communication channel to send data to different destinations, so I do not think header mapping is an option.

As I mentioned in the original thread, I am looking for an alternative than using the enhance receiver determination.

Again, one could use an enhanced interface determination and then use multiple receiver interfaces(and use the condition to create output accordingly) and can have mulltiple receiver agreement , but this is not an option in our case.

That is the reason for exploring how to change the SOAP header in the message mapping.

Edited by: Chidambaram Danus on May 7, 2008 9:56 PM

nisarkhan_n
Active Contributor
0 Kudos

Ok....you need to determine which receiver at runtime....if you do that you have built the corresponding interface mapping and receiver agreement.....now you wither check the reciver either by enhance or use conditional receiver...you have to use enhabce if your condition is built on from some fields of input....if you have the condition direclty from payload use condition receivers....

you can wither put the fileter at the receiver determination or interface determination excluding this you dnt have anyother option...if you find any let us know also....i think these are the only palcess to out filters..

can you explain your scenario more clearly if i have understood it wrong.

Former Member
0 Kudos

Chidambaram:

I understand that "header mapping" is not what you are looking for, since it is fixed value.

"Enhanced Receiver Determination" is not you what you want neither, since I really do not get your point, but you must have your own reason.

"DynamicConfiguration" can change runtime parameter, and you said you did not get expect result.

That is all the possible places to change receiver at runtime.

As for as I know, think there is not a way to change header at our will with mapping program. We can only change the header information that we can get from dynamicConfiguration.

Maybe Michal and Stefan can give you answer.

Regards.

Liang

0 Kudos

Hi Danus,

I dont understand why do you want to do in the message mapping.

In the Enhanced receiver determination, we can get the receiver checking the condition. SAP has provided for this purpose.

Is there any reason you want to find out the receiver only in the message mapping?

Regards,

Krishnaraju.