on 01-08-2012 8:04 AM
HI Team,
We need to create a scenario with MDM to JDBC having two receivers one for insertion and another for updation.
Could anyone give me suggestion on how to proceed futher.
Thanks & Regards,
Ranganath.
Hello,
We need to create a scenario with MDM to JDBC having two receivers one for insertion and another for updation.
It depends on your requirements:
1.) Do you need the response from the update/insert? If yes, your scenario would be synchronous and you would be unable to use multi-mapping or multiple receivers without resorting to BPM. If no, then you can go through the suggestions by the posts above.
2.) Are the receivers the same or different systems?
a.) Same system, sync mode - this would proceed as a normal sync scenario
b.) Same system, async mode - use multi-mapping as suggested by Santhosh/Raja
c.) Different systems, sync mode - You would need to maintain two scenarios here since multi-mapping or message split cannot be used. Otherwise, go for BPM
c.) Different systems, async mode - use receiver determination for the split and then standard interface determination as was suggested by Baskar/Grzegorz
3.) What is your update/insert logic? e.g if the data is existing you will just update and if it is not then it will insert? If that is the case, you can use the UPDATE_INSERT statement
http://help.sap.com/saphelp_nwpi711/helpdata/en/44/747eda12dd3676e10000000a114a6b/frameset.htm
Or if the statement is complex, use SQL_QUERY
Hope this helps,
Mark
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Team,
Thanks a lot for your prompt replies..and am obliged to get your suggessions on the requirement
But Now I got a modification in the requirement
Its like we need to pull data from Oracle and post it to MDM and again to oralce to update it.
Design goes like one sender jdbc channel with two recievers one for MDM and one for same oracle table for updation and this is to avoid missing records.
So could you please suggest me how to proceed. is there any way to change the design or should i go ahead with this design..
Awaiting your replies..
Thanks & Regards,
Ranganath.
Hi,
JDBC sender channel we perform two actions once is seelct then update.
select statment pulls data from DB and Update statement updates flag status same time,so it avoids seelcting old data once again.
if you still want too perfrom update operation then use multi mapping concept without BPM.
let us know still you need clarity
Regards,
Raj
Hi Ranganath,
For your requirement,
>>> Its like we need to pull data from Oracle and post it to MDM and again to oralce to update it.
You can go for a straight forward approach. You may configure the Sender JDBC adapter to poll the Oracle db for data via the standard SELECT statement and then once the data is read, you may update the selected rows via a proper UPDATE statement. Both the SELECT & UPDATE can be configured in the same JDBC sender Adapter and the MDM receiver will be part of the normal flow.
Hope this helps.
Regards, Gaurav
Hi Kumar\Raja,
The issue here is while the SQL statements Select and Update are getting triggered there are some missing records happening in between these transactions. So wanted to have a new channel or any new technic for updating the records other than using the same update statement in sender channel.
So could you please suggest me how to proceed with multimapping here as for mdm we use matmas external def(as one of the receiver) and i need to use other structure to update the table in mapping.
Appreciate your help.
Thanks & Regards,
Ranganath.
HI Raj,
here we are not accessing the direct table from oracle there is another table in which the records of the original table are refined as per the req and then sent to this new table. And now XI is accessing this new table. So in this process while XI is executing the select query say if there are 10 records to be fetched. in the meanwhile before the update statement gets executed there are some other records getting into the table and these are not fetched by XI where as, these are updated.
Which means there are some records getting into the table in between the select and update query executions.
and they are getting updated without getting fetched, which are resulting as missing records.
so inorder to avoid this we are trying to disable the update statement in sender channel and trying to look for an alternative.
could you suggest me any alternative in this regard,
Thanks & Regards,
Ranganath.
Update statement is mandatory in Sender channel and time gap between select statement and update statement almost zero,so writing update statement in sender channel is right approach.
I worked on sender JDBC scenarios we never had any prob like this.
Even if you implement update procedure at receiver side then def it will not give accuracy .
JDBC sender channel does first Query statement followed by Update Statement. Since a single thread executes the transaction you will not have issues. Doing select and update at the sender side is elegant and perfect design. You might want to check transaction isolation level to set in the jdbc sap help document.
Hi Ranganath,
if you are dealing with two different Data base systems then implement multi mapping concept(search in sdn multi mapping without BPM) or Santhos suggestion is best one.
Regards,
Raj
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Ranganath,
As far as I understood, you need to deliver the data to two separate systems, is that right? If so, then create a Receiver Determination with two receivers. The message from your MDM system will be automatically duplicated by the XI system, and both messages (after the split) will be processed independently in parallel. All you need is to prepare separate Message Mappings and Receiver Communication Channels for both of your receiver systems. Thanks to that, the data will be delivered to both systems just the way you want them to do it.
Hope this helps,
Grzegorz
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
>Could anyone give me suggestion on how to proceed futher.
If you have two different database, then you have to create two different receiver system and respective comm channels. If you are dealing with updates and insert with the same database, then construct the single receiver structure message with two statements node one with update and another with insert. Please refer SAP Help document for the JDBC message structure.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi,
2 receivers not needed.
Create one MT with 2 structures, one for Insertion & one for Updation.
Am not sure, if you want to Insert/update parallelly or sequentially.
Either way, it can be handled in mapping by putting conditions.
if one at a time, put a condition that, if INSERT, go for struc1, else UPDATE go for struc2.
<StatementName1>
--<dbTableName action=u201DINSERTu201D>
-<table>--
assingn to table1
---<access>
-
<col1>val1</col1>
-
<col2>val2</col2>
---</access>
</StatementName1>
<StatementName2>
--<dbTableName action=u201DUPDATEu201D>
-<table>--
assign to table2
---<access>
-
<col1>val1</col1>
-
<col2>val2</col2>
---</access>
</StatementName1>
so, it will be
1 send CC, SA, RD,IA,Rec CC, RA.
-santosh.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.