JDBC receiver - Update problem
Hi,
Scenario: JDBC - RFC - JDBC scenario.
1. JDBC to RFC part-
A select statement from the JDBC sender, is mapped to the RFC in the ECC system)
2. RFC response is then mapped to an Update query using a receiver JDBC adapter.
(Please note: Only the RFC is synchronous. JDBC adpter is configured to be aynchronous here.)
3. The scenario is working fine, with regard to XI (All chequered flags.)
Problem: The DB does not get updated.
The response we get from the DB has <update_count> of 0
4. The same query, (taken from XI's audit log) and executed in the DB executes fine.
5. We are using the same user id, to update the table through XI(in the communication channel) and while executing the query manually.
Hence a user permission problem, could be ruled out.
6. DB used is Oracle 8i.
Any hints on what the problem might be?
Thanks,
Smitha.
Hi,
>>>>3. The scenario is working fine, with regard to XI (All chequered flags.)
Problem: The DB does not get updated.
The response we get from the DB has <update_count> of 0
I guess the easiest way to identify this issue would be to check the DB log in this operation
(not adapter log on XI)
then you will know exactly what is getting executed by the adapter and why it fails
Regards,
michal
Similar Messages
-
Problem in JDBC receiver Updation
Hi friends,
I am updating the DB using the JDBC receiver adapter.
Tell me for the following case updation can be done or not.
key Field Field1 Field2
A X Y
B X
C X Y
Consider above is the datas cmng to receiver JDBC to update the database. But here the record B has the field2 as empty in this case i should not update the record b with the field2 only field1 updation should takes place. Bcoz if i update the field2 with empty value the existing value may get deleted, hence only the field1 should be updated. Please tell me how to handle this.
Do i need to hae 2 diff update stmt for this. Revert back for any quries.
Thanks
Prem
Edited by: Prem Kumar on Sep 24, 2008 4:27 PMHi,
In JDBC receiver adapter, there is a setting in Processing tab which talks abt empty string values and how it needs to be handled.
Interpretation of Empty String values:
There are two options keeping it as Null value and Empty string.
One of these option will solve ur requireement.
Am not sure which option, do check with both.
Regards,
Krish -
Hi..
I am doing File to JDBC scenario, for that i am using MicrosoftSqlServer.
Driver----com.microsoft.jdbc.sqlserver.SQLServerDriver
Connection------jdbc:microsoft:sqlserver://172.18.133.91:1433;DatabaseName=LMS
While executing, in the JDBC receiver channel it is showing the below error.
Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: Error when attempting to get processing resources: com.sap.aii.af.service.util.concurrent.ResourcePoolException: Unable to create new pooled resource: DriverManagerException: Cannot establish connection to URL 'jdbc:microsoft:sqlserver://172.18.133.91:1433;DatabaseName=LMS': ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
Could please tell where will be the problem.
Thanks in advance,
LeelaHi ,
Driver shoud be :
com.microsoft.sqlserver.jdbc.SQLSeverDriver
Connection:
jdbd:microsoft:sqlserver://<ip address>:port;databaseName=TNS
try with above config..make sure that they are case sensitive.
Regards,
Sreenivas. -
Special character "&" in JDBC receiver - length problem
Hi,
Scenario: IDOC -- - XI --- JDBC (insert) (Message Protocol: XML Sql format)
I have used JAVA mapping to replace "&" with "& amp;" in payload and sending the XML to JDBC receiver.
However, interface fails due to additional characters "amp;" which is causing the field length (exceeded) issue.
Please help.
Mallik
Edited by: mallik kancharla on Feb 3, 2010 7:46 PM
Edited by: mallik kancharla on Feb 3, 2010 7:47 PMI think the JAVA mapping should be designed to pass & as it is and not convert it into &.....you should refer the mapping shown here: http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/9420 [original link is broken] [original link is broken] [original link is broken]
Regards,
Abhishek. -
JDBC Receiver: updates only header table how to update detail
Hi
here the scenario idoc having one header and one details segments, header data goes to one sql table detail date to another sql table.
i created the sql structure in two ways one
table name
insert table
header table
action
access
detail table
action
access
2nd
table name
insert table
header table
action
access
detail table
action
access
in both ways one header table is updating detail table not. please help how to data will go in both tables
thanks
Message was edited by: sri raoHi,
could you pls try something like this..i was reading the documentation and thought of asking you to try this..
<root>
<HDR_StatementName>
<hdrtablename action=INSERT>
<table>hdrtablename</table>
<access>
<hfield1>val1</col1>
<hfield2>val2</col2>
</access>
</hdrtablename>
</HDR_StatementName>
<ITM_StatementName>
<itmtablename action=INSERT>
<table>itmtablename</table>
<access>
<ifield1>val1</col1>
<ifield2>val2</col2>
</access>
</itmtablename>
</ITM_StatementName>
</root>
Thanks & Regards,
Renjith -
Error while updating database using jdbc receiver adapter
Hi All,
I am trying to update a single record using jdbc receiver adapter.
This is my the message that is getting created..
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:Data xmlns:ns0="urn:Test">
- <STATEMENT>
- <TABLENAME ACTION="UPDATE_INSERT">
<TABLE>ORDERS</TABLE>
- <ACCESS>
<OrderID>99999</OrderID>
<CustomerID>VICTE</CustomerID>
<EmployeeID>3</EmployeeID>
<ShipAddress>VICTE</ShipAddress>
</ACCESS>
- <KEY>
<OrderID compareOperation="EQ">99999</OrderID>
<ShipAddress compareOperation="EQ">VICTE</ShipAddress>
</KEY>
</TABLENAME>
</STATEMENT>
</ns0:Data>
But in Adapter Monitoring i am getting the following error..
<i>Error while parsing or executing XML-SQL document: Error processing request in sax parser: Error when executing statement for table/stored proc. 'ORDERS' (structure 'STATEMENT'): java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'VICTE'.</i>
Regards,
RahulRahul,
> In this case i believe the interface has to be synch.
> So what will the response message type be like..
Not necessary. UPDATE can be asynch as well.
Can you turn the trace on like pointed by Michal and then you can see the Query in the Audit Log of the adapter montioring. Try to execute the same query from your DB Client like TOAD and see what is the Syntax error you are getiing.!
The problem looks like some field has some dataype / column name mismatch.
Regards
Bhavesh -
Problem between SOAP Sender and JDBC Receiver
Hi,
I have a asynchronous scenary between SOAP Sender and JDBC Receiver.
The idea is sending an ID for updating one register.
Table structure is:
TABLE AS_PERSONA
(P_RUT VARCHAR2(10) NOT NULL,
P_NOMBRE VARCHAR2(50),
P_APELLIDO VARCHAR2(50))
The ID is the P_RUT field.
The structure of message that I send by SOAP, is the following:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<m:MT_CONS_SOAP xmlns:m="urn:prueba:voliva">
<CONSULTA>
<P_RUT>15445</P_RUT>
</CONSULTA>
</m:MT_CONS_SOAP>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
The JDBC receiver structure is:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_CONS_PERSONA xmlns:ns0="urn:prueba:voliva">
<Statement>
<AS_PERSONA action="UPDATE">
<table>AS_PERSONA</table>
<access>
<P_NOMBRE>DELETE_BY_XI</P_NOMBRE>
<P_APELLIDO>DELETE_BY_XI</P_APELLIDO>
</access>
<key>
<P_RUT>15445</P_RUT>
</key>
</AS_PERSONA>
</Statement>
</ns0:MT_CONS_PERSONA>
When I do a call to SOAP by XMLspy, it returns a message without data, that means succesfull reply.
I see message monitor and see the succesfull flag. But in the database it doesn't update the register.
This scenario was proved using the File Sender and same JDBC Receiver, then result was succesfull.
I proved SOAP Sender with a File Receiver, storing information from SOAP sender in an archive, and works well.
Then I imagine that exist some problem between SOAP and JDBC. what could be happening ?
Thanks.Hi,
Looks like the problem is with the JDBC receiver...try updating the value in the table by using a File-JDBC scenario..does it work..check the adapter monitor in RWB..
Regards,
Sushumna -
Can we use both INSERT and UPDATE at the same time in JDBC Receiver
Hi All,
I would like to know is it possible to use both INSERT and UPDATE at the same time in one interface because I have a requirement in which I have to perform both the task.
user send the file which contains both new and old record and I need to save those in MS SQL database.
If the record exist then use UPDATE otherwise use INSERT.
I looked on sdn but didn't find any blog which perform both the things at the same time.
Interface Requirement
FILE -
> PI -
> JDBC(INSERT & UPDATE)
I am thinking to use JDBC Lookup but not sure if it good to use for bulk record.
Can somebody please suggest me something or send me the link of any blog or anything to solve this problem.
Thanks,Hi ,
If I have understood properly the scenario properly,you are not performing insert and update together. As you posted
"If the record exist then use UPDATE otherwise use INSERT."
Thus you are performing either an insert or an update which depends on outcome of a search if the records already exist in database or not. Obviously to search the tables you need " select * from ... where ...." query. If your query returns some results you proceed with update since this means there are some old records already in database. If your query returns no rows you proceed with "insert into tablename....." since there are no old records present in database.
Now perhaps the best method to do the searching, taking a decision to insert or update, and finally insert or update operation is to be done by a stored procedure in MS SQL database. A stored procedure is a subroutine available to applications accessing a relational database system. Here the application is PI server. If you need further help on how to write and call stored procedure in MS SQL you can look into these links
http://www.daniweb.com/web-development/databases/ms-sql/threads/146829
http://www.sqlteam.com/article/stored-procedures-parameters-inserts-and-updates
[ This part you can ignore, Since its not sure that you will face this situation
Still you might face some problems while your scenario runs. Lets consider this scenario, after the stored procedure searches the database it found no rows. Thus you proceed with an insert operation. If your database table is being accessed by multiple applications (or users) other than yours then it is very well possible that after the search operation completed with a null result, an insert/update operation has been performed by some other application with the same primary key. Now when you are trying to insert another row with same primary key you get an error message like "duplicate entry not possible for same primary key value". Thus you need to be careful in this respect. MS SQL has a feature called "exclusive locks ". Look into these links for more details on the subject
http://msdn.microsoft.com/en-us/library/aa213039(v=sql.80).aspx
http://www.mssqlcity.com/Articles/Adm/SQL70Locks.htm
http://www.faqs.org/docs/ppbook/r27479.htm
http://msdn.microsoft.com/en-US/library/ms187373.aspx
http://msdn.microsoft.com/en-US/library/ms173763.aspx
http://msdn.microsoft.com/en-us/library/e7z8d5hf(v=vs.80).aspx
http://mssqlserver.wordpress.com/2006/11/08/locks-in-sql/
http://www.mollerus.net/tom/blog/2008/03/using_mssqls_nolock_for_faster_queries.html
There must be other methods to avoid this problem. But the point is you need to be sure that all access to database for insert/update operations are isolated.
regards
Anupam -
Updating in JDBC receiver adapter
Hi Friends,
I came across in the some sdn blogs, Like JDBC to JDBC scenarios i found that in the receiver JDBC adapter there is no place to write update statement or insert statement.Then how the records get updated in the DB.
My actual need is to update the oracle db from sap, which currently using the following statement
Loop at it_trn_ctl into WA_TRN_CTL.
UPDATE TableA SET SAP_UPDATE = 'Y'
WHERE PARENT_ID = :WA_TRN_CTL-PARENT_COIL .
end loop.
should replaced by XI, using the proxy to jdbc receiver. Where i can write the update statement and the where condition.
Kindly revert back for queries.
Thanks in advance
Karthikeyanhi
for updation no need to write any query,use update structure at reciever side
http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/frameset.htm
this contains action:udate and then
key1: field that u want to update.
key2:pass old value of field for matching(where conditon matching field)
Edited by: Dharamveer Gaur on Sep 19, 2008 8:40 AM -
JDBC Receiver adapter ( INSERT/UPDATE with SELECT)
Is it possible to have following kind of SQL Statement comming out JDBC Receiver Adatpter. If yes what would be the corresponding XML Document format for this.
UPDATE suppliers
SET supplier_name = ( SELECT customers.name
FROM customers
WHERE customers.customer_id = suppliers.supplier_id)
This condition also needs to be applied for Insert condition. Any pointer would be useful.
Thanks,
SamirHi
Refer this links,
http://help.sap.com/saphelp_nw04/helpdata/en/22/b4d13b633f7748b4d34f3191529946/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/b0/676b3c255b1475e10000000a114084/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/4d/8c103e05df2e4b95cbcc68fed61705/frameset.htm
Regards,
Suryanaryana -
JDBC Batch Updates & PreparedStatement problems (Oracle 8i)
Hi,
we're running into problems when trying to use JDBC Batch Updates with PreparedStatement in Oracle8i.
First of all, Oracle throws a SQLException if one of the statements in the batch fails (e.g. because of a unique constraint violation). As far as I understand, a BatchUpdateException should be thrown?
The next problem is much worse:
Consider this table:
SQL> desc oktest
ID NOT NULL NUMBER(10)
VALUE NOT NULL VARCHAR2(20)
primary key is ID
When inserting in through batch updates with a PreparedStatement, I can pass 'blah' as a value for ID without getting an exception (Oracle silently converts 'blah' to zero). Only when the offending statement is the last statement in the batch, Oracle throws an exception (again, SQLException instead of BatchUpdateException).
Any comments/suggestions are appreciated.
E-mail me if you want to see the code...
Thanks,
Oliver
Oracle version info:
(Enterprise Edition Release 8.1.6.0.0, JServer Release 8.1.6.0.0, Oracle JDBC driver 8.1.6.0.0 and 8.1.7.0.0 (we're using the 'thin' driver)
CLASSPATH=/opt/oracle/product/8.1.7/jdbc/lib/classes12.zip:...
nullPlease refer
http://www.oracle.com/technology/products/oracle9i/daily/jun07.html -
Hi All:
How can we do INSERT and UPDATE in tables from XI.
Like I have on JDBC receiver MT.(with one action field)
Now if later I need to do INSERT or UPDATE how can I achive UPDATE at that time.
Can some one explain me with concrete concepts or examples
Will give max points for good answer:-)
Regards,
Farooq.hi,
have a look at this page:
http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
you can us action - UPDATE_INSERT
if you want to do update or insert (in case update is not possible)
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a> -
JDBC Receiver - Multiple rows Update
I have an interface the incoming message contain multiple columns and it has to be updated using a JDBC Receiver Adapter with its key values.
Can we send multiple rows in a single JDBC Update Statement.
Please advise.Sebin,
No ,it's not possible to have multiple rows in single update statement. Rather you can duplicate the segment at Statement level and do the update.
Please refer http://help.sap.com/saphelp_nw70/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
raj. -
Problem adapter JDBC/Receiver
Hello,
I am running a stored procedure with CC JDBC/Receiver, and it returned me the following error:
Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'sp_consulta_carteira_clientes' (structure 'Statement'): java.sql.SQLException: The 'CREATE TABLE' command is not allowed within a multi-statement transaction in the 'tempdb' database.
Can anyone help me, CC JDBC / Receiver, does not support transactional multi processing ?
Thank you all.
MarlonHi Marlon.
Try to change The Transaction Level in the Communication Channel JDBC, maybe it works.
Ask to Legacy Team can change the stored procedure without CREATE TABLE command.
Regards.
Bruno -
Hi All,
JDBC(Sender)-XI-RFC (Request)
RFC (Response)-XI-JDBC(Receiver).
Need some solution for sending email for successfully completion of scenario after updating SQL DB Table.
Let me explain the scenario:
We are pooling the SQL DB table to pull the records and map the records to RFC request parameters, after successful Posting the entries in R3 HR, RFC response contain the same with E (Error) S (Success) records status, we are updating the same in SQL DB table, I implemented the complete scenario without BPM with the help of module processor in Sending JDBC Adapter, scenario is working fine but now we have to send the successful mail to our support team with status contain Number of success, Error and total records as email.
I need the solution how to implement the same requirement in current scenario.
Is their way to do something with the RFC receiver adapter module addition to send the successful mail or generating Alert with all the description?
I am at PI 7.0 SP12 with HP unix box.
Thanks in Advance for creative idea
With Regards
SunilHi Bhavesh,
Thanks for your help and your blog is really helpful. I implemented the UDF for generating Email Alert but this alert is generating before Updating the SQL Database, is their any way to generate alert after updating the SQL.
Actually in my scenario we are sending the data from SQL to R3 by RFC and again updating the SQL status whatever the RFC return, after successfully updating SQL we need to send success email to support people but if we are sending the email before updating the DB then their will be problem.
JDBC receiver after updating the SQL DB returns the response with No. of row updated but how to capture this response, if we can capture this response then we can send email through email adapter even their is one more problem, In my scenario I am counting the number of rows with status S and E and sending the same in alert email but if are sending email after updating the SQL DB where can hold the row count value and use it while sending the email.
Implemented the scenario without using BPM..i am using sender JDBC module processor for Syn-Asyn bridge.
Even I do not find the link to reward point. Please let me know how to do it.
With Regards
Sunil
Maybe you are looking for
-
Why won't iTunes for PC allow me to sync with my iPod touch?
I have songs on iTunes on my old PC and on my newer Macbook Pro. I synced the songs form the Mac onto my new iPod Touch, but iTunes will not let me sync the songs from the PC, saying only one computer at a time can have an iTunes account. It will o
-
How can I make a link a different color than the other links according to the current page?
Hello. I have created a navigation bar. And I would like to style the links to have the current page link a different color than the other links. For example, if all of the links have a black background, I would like to have the current page link
-
MacBook Pro & Snow Leopard Update: No-Entry Symbol
Hi Everyone, I've run into some trouble as of last week involving my MacBook Pro. I feel as though this trouble may be a ressult of the 10.6.2 update, and was hoping you all could give me some advice on resolving it. Shortly after updating to 10.6.2,
-
How can I alternate page orientation in my document?
In writing a formal academic document that includes tables and or charts, it is best to have the the pages with charts in landscape. However, the rest of my work needs to be vertical orientation. How do I achieve this in Pages? In a Word document it
-
Unable to Save Interactive Form
Hi Experts, I am unable to save any UI elements (viz. Table, Text Fields, etc) on an Interactive Form UI element created using NWDS. Whenever I create new UI elements on the Interactive form and try clicking on Save Metadata Button of the NWDS the Bu