cancel
Showing results for 
Search instead for 
Did you mean: 

Receiver Determination doubt

Former Member
0 Kudos

Hi folks,

I’ve a scenario file to IDoc and/or ABAP Proxy. Well, depends of the source file content, an example to clarify: if field01 is equal to ‘37’ goes to IDoc, else if field01 is equal to ‘38’ goes to ABAP proxy. I’m trying to do it without BPM, using the Receiver Determination editor condition, but I’m getting unable to do it, I’m always receiving both contents (37 and 38) for both IDoc and ABAP proxy, it seams that no routing conditions was applied.

Is it possible to do this kind of content split without BPM? With Receiver Determination?

Thanks in advance,

Ricardo.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Ricardo,

I guess u can do it using the conditions in the receiver determination step.

You can use context object/X-path for the conditions.

context object/X-path will point to "field01" and in the runtime if value of field01=37 ..it will go to the IDOC receiver and if field01=38 ...then R/3 will be the receiver.

yes u can do it without using BPM.

first u check with value 37 and the value 38 for "fiield01" and test it....it will work....

all the best

Regards

Biplab

Former Member
0 Kudos

Hi Biplab,

Before I start this interface, I thought the same. I don’t know why, but it doesn’t work! Field01 is a string with max length = 2. I have defined a context object type string as well, pointing to this XPath. I have tried field01 = 37, = ’37’, = “37” and it doesn’t work like I would like. I’m always getting the 37 and 38 records in both BSystems.

Do I’m missing something?

Regards,

Ricardo.

Former Member
0 Kudos

> I’m always getting

> the 37 and 38 records in both BSystems.

just a clarification you are trying to route the ENTIRE msg to a particular receiver and not the particular records row by row.

justin_santhanam
Active Contributor
0 Kudos

Ricardo,

Its surely possible without BPM. Just to give a try follow the below steps.

Give only one receiver with value Field01 = 37 and the respective receiver(IDOC).

Below choose Continue Message processing with following receiver give receiver as ABAP Proxy.

Anyhow the above design doesn't helps you out , bcoz if you have Field01 =39 then also it will go to ABAP proxy.

I want you to test just to see whether the condition is properly working with XPATH condition.

Former Member
0 Kudos

Hi Ricardo,

tell me 1 thing . For any file it will go to IDOC or PROXY correct???

U r keeping one file at a time i guess.And in any file at a time the value of "field01' will be 37 or 38.

So how come u r getting two values man??

Just check once again....

Regards

Biplab

Former Member
0 Kudos

Hi Biplab,

No, in the same file can come both records with 37 or 38 code. For the 37 records I should route them (only the records and not the whole message) to IDoc interface and for the 38 to ABAP proxy interface as well. I’ve to "split" the file content according with value of field01, If 37 or 38 only.

Thanks in advance,

Ricardo.

Former Member
0 Kudos

This level of splitting cannot be done using receiver determination, receiver determination will send the entire msg to the receiver if a condition is satisfied and not parts of it.

If you are using FCC in the sender file adapter then you can look at setting the FCC parameters in such a way that you get one msg per record in yor file(using recordset and the field occurence parameters). if you are able to do that then u can use conditional receiver determination.

Message was edited by:

Dreamcatcher

Former Member
0 Kudos

Hi Dreamcatcher,

That's what I thought; at this level Receiver Determination is unable to route part of a message. So, I have to do it with BPM or there some kind of workaround to solve an issue like this one?

Thanks in advance,

Ricardo.

Former Member
0 Kudos

Thanks for the idea about FCC, but one message per record would be too heavy for system performance. I always try to avoid BPM regarding performance issues, but I guess at this time, I don’t have other choice.

Does anyone have other ideas?

Thanks in advance,

Ricardo.

Former Member
0 Kudos

Ricardo:

I also think what Dreamcatcher said might be true... But i guess using "Enhanced Receiver Determination" we can achieve what you want.. Check the blog below

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

Former Member
0 Kudos

personally speaking, We have implemented this kind of scenario by using adapter module to split the incoming file content into multiple individual msgs, i.e each record will be sent as new msg and by doing so we were also able to use conditional receiver determination.

We had to use a adapter module to split each record of the file into a separate msgs because file format was not such that we could use RecordSet per msg and the Occurence parameters in the sender side file content conversion to create individual msgs.

if your input file structure is such that you can use the "recordset per msg" feature of the sender file adapter to create one msg per record then you can still use conditional receiver determination with minimum development effort.

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi all,

Thanks for the help! I already fixed the issue

Guru, the Enhanced Receiver Determination didn’t work because it works only at msg level like standard Receiver Determination do. But, thanks for the tip, I tested this feature and it’s really useful when you want do determine your receivers at the runtime with substrings, doing arithmetic operations and so on.

Dreamcatcher, I didn’t need adapter modules and BPM, my issue wasn’t so complex like your example. Well, as I have two different mappings I used some standard functions like equalsS to check if my field01 is equal to “37” and the createIf function to generate an IDoc node in case of true. For the other mapping program I applied the same logic, comparing field01 with value “38” and generate a node in case of true. At the end I got 2 msgs, one with all “37” records and another one with all “38”.

Once again, thank you all and points rewarded

Ricardo.

Former Member
0 Kudos

I think since you have the same receiver for the both cases you will not be able to do it using receiver determination.

but i think you can specify this condition in interface determination if u r receiver is common.

Former Member
0 Kudos

Hi guys,

I have two receivers (same machine) each one with your own adapter, one IDoc and one XI (ABAP Proxy). My routing rule is: if field01 is equal to ‘37’ goes to IDoc, else if field01 is equal to ‘38’ goes to ABAP proxy; and the problem is that I'm getting both records (37 and 38) in both destinations (IDoc and Proxy).

Dreamcatcher, the Interface Determination works when you have different mappings for the same business system. But this is not the case: I'm receiving a file and depending on the content I have to route it to IDoc or Proxy (two Business Systems).

Is it possible without BPM?

Regards,

Ricardo.

Message was edited by:

Ricardo Quintino

prateek
Active Contributor
0 Kudos

Yes. It is possible without BPM.

Use condition in the receiver determination step.But make sure that the second condition is a perfect "NOT" of the first condition. That means there shouldn't be any possibilities which is not handled. In that case u ll not get the desired result.

Regards,

Prateek

Former Member
0 Kudos

<< have two receivers (same machine) each one with your own adapter, one IDoc and one XI (ABAP Proxy). >>

If you have two different receivers than you should be able to route the entire msg to one of the 2 different receivers based on a particular field content of the incoming msg. I have tried it in many scenarios and it works.

Please check in SXMB_MONI whether you condition is getting executed. try giving a invalid condition for one of the receivers and check the output.

Another round about way of doing this is using enhanced receiver determination if you have that option in your XI version.

Cheer's

Former Member
0 Kudos

Hi Ricardo,

You want to choose the receiver based on the Source field Value....

You can set conditions on Source fields (In the configured receivers section in Receiver Determination)........... against the receiver..

Regards,