cancel
Showing results for 
Search instead for 
Did you mean: 

Dynamic receiver determination based on conditionwith message split

Former Member
0 Kudos

Hi Experts,

I am working on a scenario to send HR master data from Global to local system using SAP PI 7.1 .

There are multiple local system in the landscape .

The master idoc which comes in can have records with multiple objecttype and multiple company code and Personal area.

e.g

<Idoc>

<record1>

<Otype>'O'<Otype>

<CCode>Blank<CCode> -


> Can go to multiple systems A,B,C ..message split

<Parea>blank<Parea>

<record2>

<Otype>'P'<Otype>

<CCode>CC1<CCode> -


> system 'A' after split

<Parea>a1<Parea>

<CCode>CC2<CCode> -


> system 'B' after split

<Parea>a2<Parea>

<record3>

<Otype>'P'<Otype>

<CCode>CC1<CCode> -


> system 'A' after split

<Parea>a1<Parea>

<CCode>CC3<CCode> -


> system 'C' after split

<Parea>a3<Parea>

<record4>

<Otype>'S'<Otype>

<CCode>Blank<CCode> -


> Can go to multiple systems A,B,C,D,E ..message split

<Parea>blank<Parea>

<idoc>

The receiver determination that needs to be done is based on objecttype (O,P,S) ,company code(CC1,CC2,CC3...CCn) and Personal area(a1,a2,a3...an).

This information I plan to keep in a Z table on the PI system along with the target system business system information.

e.g if Object type is 'O','S' then it should go to Business system A,B,C but say not to D.

if the object type is 'P' then further check for company code and personal area to determine the target system A only.(unique)

I am planning to use Abap mapping to look at this table in PI as RFC lookup (Can RFC lookup done to the PI system aswell ? )uses lot of bandwidth if the same needs to be done in Graphical mapping. The flow idoc -> ABAP Mapping -> Receiver determination provided by standard SAP basis receiver determination.

The next step would be to split the idoc based on the condition to its specific receivers . For this I plan to use the interface mapping which would be specific to the recivers which have been identified in the first step.

I would appreciate your suggestions and thoughts on the above scenario,and whether this is the right way.Thanks

-Alok

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

After initial test with the above solutions ..results are positive.

Former Member
0 Kudos

Hi,

U can use conditional receiver to determine the receiver at runtime based on payload data.

Refer the below blog for help.

/people/shabarish.vijayakumar/blog/2006/06/07/customise-your-xpath-expressions-in-receiver-determination

/people/shabarish.vijayakumar/blog/2005/08/03/xpath-to-show-the-path-multiple-receivers

Chirag

Former Member
0 Kudos

Hi Chirag,

Adding the conditions through XPath can be tedious ,and moreover there can be new systems added tommorow to the landscape. I have modified the idoc structure a bit to give a clear picture.

<Idoc>

<record1>

<Otype>'O1'<Otype>

<CCode>Blank<CCode> -


> Can go to multiple systems A,B,C ..message split

<Parea>blank<Parea>

<record1>

<Otype>'O2'<Otype>

<CCode>Blank<CCode> -


> Can go to multiple systems B,C,D ..message split

<Parea>blank<Parea>

<record2>

<Otype>'P'<Otype>

<CCode>CC1<CCode> -


> system 'A' after split

<Parea>a1<Parea>

<CCode>CC2<CCode> -


> system 'B' after split

<Parea>a2<Parea>

<record3>

<Otype>'P'<Otype>

<CCode>CC1<CCode> -


> system 'A' after split

<Parea>a1<Parea>

<CCode>CC3<CCode> -


> system 'C' after split

<Parea>a3<Parea>

<record4>

<Otype>'S'<Otype>

<CCode>Blank<CCode> -


> Can go to multiple systems A,B,C,D,E ..message split

<Parea>blank<Parea>

<idoc>

These conditions I wanted to them to be added to the table ,and mapping to be more generic. So that based on these conditions I can go to the custom table and pick the receiver system.Thanks for your input.I look into those as well.

Thanks

-Alok

Former Member
0 Kudos

If u going to maintained table in R3 and going to use RFC lookup than there might be a performance issue as it will always switches between java and abap stack.

In X path -u going to use boolean condition only which i feel is simple to route to corret receiver.

If u add new system in landscape then only u need to change the configuration and add the new system?

Chirag.

Former Member
0 Kudos

Hi

Very true with respect to RFC lookup( Can this call be done to Ztable in PI itself or is this always done to other systems ..I do not have much idea on RFC lookup) consuming lot of bandwith. Though I plan to do it with ABAP Mapping where I need to parse the incomming idoc to get the values of the conditions and check from the table for the receiver subsystem.

My only concern is maintaining the conditions using Xpath will be a humongous task when the combination of these conditions to identify the receiver will be high..I am talking about 20-25 receiver systems getting the data from the global system. The data that will be maintained in the Global HR system will have information about all these 20-25 systems related to organisation,personal area ,jobs,positions and personnel numbers.

Appreciate your feedback.

Thanks

-Alok

Former Member
0 Kudos

My doubt is though ur going to use RFC lookup and check the condition and get the system details but how u r going to pass the information to repective receiver, How ur configuration would be?

For routiong the correct information to have to use conditional receiver dont u think?

Chirag.

maciej_jarecki
Contributor
0 Kudos

Hi,

Use BPM. i thing it will be simpler than using Enhen. receiver determination.

In case of help with BPM write me an email.

Regards

Maciej

Former Member
0 Kudos

Hi

My idea was that once you do the receiver determination,you can have individual message mapping to the receivers through interface determination.But , I am still not very much clear with the solution on this part or the approach.

Thanks

-Alok

Former Member
0 Kudos

I think it is not feasible to have individual mapping as u said u have many systems so it will be difficult to track the error in case of mappig fails.

Just think the design once again.

chirag.