cancel
Showing results for 
Search instead for 
Did you mean: 

Lookup scenario

Former Member
0 Kudos

Hi,

Requirement:-

1. System A sends information through PI to SAP CRM and Siebel system. Before PI sends data to both the systems first PI has to do look up on 40 million customer and if the result is Y then send the record to CRM and if response is X then send record to Siebel.

I am here looking out the possible way of integration at the same time total processing time is the key factor.

I have thought of below options:-

1. Maintained the look up table in JDBC data base - PI performs the DB lookup and based on result send data to respective system - Doing look up in DB will have a performance as well as processing time problem???/

2. Replicate the table from SAP using value mapping replication process and do the look up - Not sure about the cache limit to maintained the huge data.

3. Maintained table in PI system and do RFC lookup - again memory issue on PI system.

4. Send all the data to both the systems and do the validation on both the system accept the data which is required by system and filter data which is not required- This will increase the load as well as need to write the logic on both the systems.

5. Send all record to one system if its ok then accept by siebel otherwise send back the record to PI and then PI send record to CRM.

Key factor here is performance as well as processing time can anybody suggest me any thoughts if u have any and which will be the other options.

chirag

Accepted Solutions (1)

Accepted Solutions (1)

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi Chirag,

What is your sender system , i beleive that you are not going to send 40 million records at a time to PI .

if its possible try to filter the data at sender system only this will solve your all problems(performance..),if not possible then develop one mapping between source to source1 only, here you are going to add one more additional element to source1 strcuture, this going to hold the Lookup response.

then develop 2 individual mappings between Source 1 to Target1

Source 1 to Target 2.

or multip mapping also one solution.

but perfromace is depening on how many records your going to receive at a time.

Regards,

Raj

Former Member
0 Kudos

There are multiple systems and all systems going to send data.....i have just provided rough figure of customers which is to be look up they might increase later stage....

I can not do any modification at sender systems because there are many systems and we dont want to do changes at all the systems.

I am worried about lookup processing time.....

chirag

Answers (3)

Answers (3)

Former Member
0 Kudos

will update u what options I am going with....

RaghuVamseedhar
Active Contributor
0 Kudos

Hi Chirag Gohil,

I recommend option 4.

> 4. Send all the data to both the systems and do the validation on both the system accept the data which is required by system and filter data which is not required- This will increase the load as well as need to write the logic on both the systems.

Please ask the target systems to filter the data. Any way to insert the data into tables (in target systems) sent by PI, they will use "Insert" OR "Update" SQL statements.

Because, Customer details for a business will be very dynamic (they will increase in size rapidly).

If you opt for lookup, it will take lot of time.

If you keep a copy image of customer details table, synchronizing both tables is difficult.

Regards,

Raghu_Vamsee

Former Member
0 Kudos

Hi Chirag,

In message mapping, if you have more than one occurence and if you do JDBC lookup each time for all the values of field. instead you can write UDF and over there you can get all the values for which you want JDBC lookup and write custom JDBC code to return the values from database and store that value in global container. In this case, you will only have one JDBC call to database instead of multiple call for each field in the messages.

Thanks

Chetan.

udo_martens
Active Contributor
0 Kudos

Hi Chirag,

>Maintained the look up table in JDBC data base

first you should test the db request: Even having 40 mio customers a request with key field(s) can have a good performance. If you for example execute a SE16 request in MARA with MATNR, it will take just seconds.

You can create a extended Receiver Determination and create the look up in the corresponding mapping.

>Replicate the table from SAP using value mapping replication process

No, this is taking too much memory. What about delta changes? You cant update the whole table...

>Maintained table in PI system and do RFC lookup

No, same reason...

>Send all the data to both the systems

Very ugly solution, you will allways have one error message (50%).

>Send all record to one system if its ok then accept

Little bit less ugly, you will have 25% error messages

Regards,

Udo

Former Member
0 Kudos

It is an external database not the SAP database???

You can create a extended Receiver Determination and create the look up in the corresponding mapping. ??? Can you throw more light on this option.

We had a same DB lookup scenario where it was taking 30 sec to process one message end to end and then we have come up with Value mapping with ICO set up....values maintained are very less hence we have opted this solution.

chirag

Edited by: Chirag Gohil on Feb 7, 2011 6:35 PM

udo_martens
Active Contributor
0 Kudos

Hi Chirag,

>It is an external database not the SAP database???

Sorry for misunderstanding. I just wanted to give you an example for a good performance. Independend form SAP or non SAP database: You you test the request (the lookup) with just SQL.

Pseudo code:

Select receiver from table where customerNo = '123'

If this is possible within a few seconds go for a lookup.

>You can create a extended Receiver Determination and create the look up in the corresponding mapping. ??? Can you throw more light on this option.

Check "extended" in the Rec Det and create a mapping with target IF ReceiverDetermination of SWC SAP BASIS, namespace http://sap.com/xi/XI/System. Just fill field "Service" with the receiving Business System dependend from the look up. Of course you need to make it transport layer independend, so create a UDF to ask for PI layer:

String systemID = java.lang.System.getProperty("SAPSYSTEMNAME");
return systemID;

As mentioned before caching the data is no solution coz delta changes will kill you.

Regards,

Udo

baskar_gopalakrishnan2
Active Contributor
0 Kudos

> It is an external database not the SAP database???

Still not a problem.Of all your options..doing jdbc lookup is better. Dont go for value mapping unless the lookup records are less. You can fine tune the SQL query to some extent to improve the performance.

>>You can create a extended Receiver Determination and create the look up in the corresponding mapping. ??? Can you throw more light on this option.

Look at this links

http://help.sap.com/saphelp_nwpi711/helpdata/en/48/ce53aea0d7154ee10000000a421937/content.htm