cancel
Showing results for 
Search instead for 
Did you mean: 

Design Approach for 1:N Multimapping scenario with SAP ECC Receiver

Former Member
0 Kudos

Hi Experts,

I am trying to find the best approach to implement the following scenario. its desribed as follows:

Legacy Database ->XI -> SAP scenario.

1. Pick records from database table with status ='n'

2. The records picked can have one or more RefNos i.e. if 2000 records are picked 1500 can have RefNo :1111 and rest 500 RefNo: 2222

3. 1st condition is to split the records into multiple messages if reference nos are different, so for scenario in point 2 it will be 2 messages. Secondly if the no of records are more than 1000 then split further into 2 message. So 1500 Ref No would be split into messages with 1000 and 500 records. Hence we get 3 messages. I know something similar was achieved in this blog:

</people/claus.wallacher/blog/2006/06/29/message-splitting-using-the-graphical-mapping-tool

4. Once the data is forwarded to ECC and its successfully updated, we need to update the status of the database table on the sender side to 'y';

So the point where i am not very clear as of now is,

1. What alternative I choose for PI-> ECC call? Its a 1:N multimapping split scenario and as far as I know the call has to go via AE, so is RFC the only option or is there a way to have a call with Proxy/IDOC? Or will there be an option to limit such a scenario at the JDBC Adapter level so that split is not needed. I am not sure if that can be achieved and is a better solution.

2. If I go for either of the approaches mentioned above, what is the best way to achieve point 4, i.e. update the database table at the sender. As JDBC Adapter would be async and hence we either use a Aysnc-Sync bridge(for proxy/rfc receiver) or some other option like triggering a outbound interface from SAP side with the update data?

Hope that experts can provide the inputs on the best way forward.Let me know if anything is missing from scenario details perspective.

Best Regards,

Pratik

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Hi Pratik,

You can use JDBC - PI - Proxy in this specific scenario.

My solution is:

1. 2 JDBC Channels.

2. You select count all the messages in one channel. Now count is in your system (Hold it in a BPM step). You can divide them as per your business rule.

3. In the second JDBC receiver channel you pick up the records and update the database.

4. Now n number of different group of messages in your process Engine.

5. Send it through Proxy one by one.

Thnks,

Soumen

Former Member
0 Kudos

Hi Soumen,

Thanks for the suggestion. I also evaluated using BPM.I was also thinking if I can go with the following approach:

Use Aync-Sync Bridge with JDBC Adapter and do a multimapping in Integration Engine and then use RFC adapter as the receiver for sending the message to SAP. this would send a synchrnous response which updates the database table at the sender side based on the sucess/error at the SAP end.

As we use Aync Sync bridge the JDBC adapter would wait for the response from SAP and hence can serve the purpose. Do you see any issues in using this approach?

Best Regards,

Pratik

former_member200962
Active Contributor
0 Kudos
Use Aync-Sync Bridge with JDBC Adapter and do a multimapping in Integration Engine and then use RFC adapter as the 
receiver for sending the message to SAP. this would send a synchrnous response which updates the database table at the 
sender side based on the sucess/error at the SAP end.

Multi-mapping and SYNC call...will these two work together?

former_member208856
Active Contributor
0 Kudos

Hi Pratik,

You can use JDBC - XI - Inbound Proxy (Async Scenario).

Use Proxy as Inbound in R/3 system also. For Inbound Proxy, you have to write your code in the Method of Proxy Class.

You can post your data using that code.

(Outbound Proxy Scenario) :

When data is successful, call our Outbound Proxy also there (In the code of Inbound Proxy Mathod after Suceesfull or Error) & send Update Infomation in that Outbound Proxy.

Former Member
0 Kudos

Pratik,

2. If I go for either of the approaches mentioned above, what is the best way to achieve point 4, i.e. update the database table at the sender. As JDBC Adapter would be async and hence we either use a Aysnc-Sync bridge(for proxy/rfc receiver) or some other option like triggering a outbound interface from SAP side with the update data?

Use the solution # 2, make it like this:-

DB (async) -> PI -> Proxy (sync) -> PI -> DB (async)

Just out of curiosity, why you breaking the records into 1000's in PI? Why not you select only 1000 records when polling the DB? That will help in improving the overall performance.

Regards,

Neetesh

Former Member
0 Kudos

Hi Neetesh,

Thanks for your suggestion. Proxy won't be an option because we need to do a multimapping split which cannot be supported with proxy receiver. Let me know if there is something which I am missing here.

The reason for not being able to take it at JDBC level is the type of business requirement which we have as we need to also work on some business rules after the split.

Best Regards,

Pratik

Former Member
0 Kudos

Yes, you are correct ... proxy doesn't support multi-mapping but there is a way to make it working which I should have mentioned earlier. If you want to send multiple messages to the proxy, then split the message (perform 1:n mapping) inside the IP and then send the messages.

This should work.

Regards,

Neetesh

Former Member
0 Kudos

Hi Sandeep,

Thanks for your suggestion.The update statement would update it as soon as data is picked up by JDBC Adapter and not when the data is modified at SAP side. So this might not solve the problem of updating only when data is processed at Receiver side

Let me know what you think.

Best Regards,

Pratik

former_member208856
Active Contributor
0 Kudos

You can use JDBC - XI - Proxy for this scenario.

In JDBC Sender Communication Channel you have option for writing UPDATE Statement, you can achive 4th point using that statement & also you can pick data as per 'N' Condtion using first statement.

When you can pick data from database, you can use 1:Multiple Mapping.