cancel
Showing results for 
Search instead for 
Did you mean: 

best scenario Proxy->PI->JDBC for lots of tables in the same interface

erodmor
Explorer
0 Kudos

i have a question how to make the mapping on my scenario Proxy->PI->JDBC, asynchronous.

i have to transfer the information of 30 tables (catalogs tables) to the DB of SQL server, what is the best way to do the interface, to make this transfer in one interface?

my interface will be execute with a job

Do i need on my Operation Mapping to make one interface with lots of Message Mapping of each table with their respectively Service Interface?.. or am i wrong with it?

or if you have a link where i could fine this best way to make the interface, I appreciate the help.

Regards,

Erick Rodriguez

Accepted Solutions (1)

Accepted Solutions (1)

former_member229310
Active Participant
0 Kudos

Better keep separate tables unless the business say they are dependent and business urge you to implement in 1 message.

1) The message will be bulky if you implement 1 single data source hence, ask ABAP team to send the data in batch of 50 or 100 to make it more reliable in case of 1 single structure. This might have cons that if any one of the mapping fails , all the tables are failed.  So take care of this.

2) Better approach to maintain 30 interfaces separately if you do not have dependency of the tables.

Hope it is helpful.

Cheers !!

Ciao.

Answers (3)

Answers (3)

former_member183910
Participant
0 Kudos

HI Eric,

I also came acress the same requirement and used one operation mapping and one Message Mapping/XSLT mapping.

You need to generate final output(which goes to jdbc adapter) like below

<?xml version="1.0"?>

<root>

  <TABLE1_INSERT>

  <TABLE1 action="INSERT">

  <table>RealtableName</table>

  <access>

  <column1>test</column1>

  <column2>test2</column2>

  </access>

  </TABLE1>

  </TABLE1_INSERT>

  <TABLE2_INSERT>

  <TABLE2 action="INSERT">

  <table>RealtableName</table>

  <access>

  <column1>test</column1>

  <column2>test2</column2>

  </access>

  </TABLE2>

  </TABLE2_INSERT>

</root>

Thanks

Sandeep Maurya

Former Member
0 Kudos

Hi,

You may use a single Operation Mapping and Single Mapping (with multiple STATEMENT) for Insert or update (action).

1) While you want the insert/update to happen in all the tables simultaneously. You can set a condition if the insert/update fails in any one table, the all the tables should roll back.

Go to receiver JDBC channel --> Advanced Mode --> activate "Batch Mode".

2) Along with this keep the check box enabled for Transaction Isolation level = "serializable". This would make you data consistent.

Configuring the Receiver JDBC Adapter - SAP XI: Runtime - SAP Library

Thanks,

Sudhansu

Former Member
0 Kudos

Hi Erick,

You can proceed with one Operation mapping scenario where you have to create 30 different node structures and insert data to tables. Or

You can discuss with your database system team if they can create a stored procedure to handle the logic of insertion to 30 tables and you can create single structure and execute the stored procedure. Error handling would be easy in this scenario.

Regards,

Pranav

Former Member
0 Kudos

Dear Erick,

I think it wont be possible to insert values in 30 tables with single scenario . you have to create 30 scenarios ( one scenario for one table) , since every table will have different structure and  jdbc receiver schema will be vary according to table schema.

Regards,