Regarding Update querry at JDBC Sender adapter
Dear all
need you help for this requirement
My Select statement is working fine where flag column has some time null value
below is the Select statement and ( EMP_MAXQTY_AUTH_FLAG is Flag field here & EMPLOYEE_MST is table name)
SELECT EMP_ORG_CD,EMP_CD,EMP_NAME,EMP_STATUS,EMP_MAXQTY_AUTH_FLAG FROM EMPLOYEE_MST WHERE EMP_MAXQTY_AUTH_FLAG<>'Y'or EMP_MAXQTY_AUTH_FLAG is null
but update querry is as given below
UPDATE EMPLOYEE_MST SET EMP_MAXQTY_AUTH_FLAG='Y' WHERE ((EMP_MAXQTY_AUTH_FLAG <>'Y') OR (EMP_MAXQTY_AUTH_FLAG is NULL))
Please suggest the exact query
if Flag row ahs some value any thing it is updating , but when there is NULL value ,
problem is coming
Please help.....
Regards
Priya
Hi Priya,
I think it is the mistake in query:
SELECT EMP_ORG_CD,EMP_CD,EMP_NAME,EMP_STATUS,EMP_MAXQTY_AUTH_FLAG FROM EMPLOYEE_MST WHERE EMP_MAXQTY_AUTH_FLAG'Y'or EMP_MAXQTY_AUTH_FLAG is null
means select all record whose *EMP_MAXQTY_AUTH_FLAG is 'Y' or Null *
UPDATE EMPLOYEE_MST SET EMP_MAXQTY_AUTH_FLAG='Y' WHERE ((EMP_MAXQTY_AUTH_FLAG 'Y') OR (EMP_MAXQTY_AUTH_FLAG = ' '))
means update those records where *EMP_MAXQTY_AUTH_FLAG is 'Y' or Null * and the new value to be updated is 'Y'
Change your update query to
UPDATE EMPLOYEE_MST SET EMP_MAXQTY_AUTH_FLAG='D' WHERE ((EMP_MAXQTY_AUTH_FLAG 'Y') OR (EMP_MAXQTY_AUTH_FLAG = ' '))
Regards
Suraj
Similar Messages
-
Update- statement in JDBC sender Adapter
Hi ,
I have a requirement where I am trying to fetch data from ODS based on some flag and immediately I want to update the flag status . So I used selected and update in JDBC sender adapter .
But I have one question , in the small timeframe where XI has done a select and just before XI could issue the update statement if a new record is added to ODS . Then that new record will also get updated though it wasnot selected in select statement .
Can someone let me know how to overcome this problem ; as I want to make sure I update only those recrods which are selected in select statement ??
Thanks & Regards,
SuvarnaHi,
Check out the following thread. It gives the exact answer to this question.
JDBC Sender Update Query
One of the replies in the above thread:
I put in an OSS note asking this exact question with your specific example, and got a reply. I was referred to OSS note 0000831162, where it is explained very unambiguously that the SELECT and UPDATE queries are run in the same transaction.
Regards,
P.Venkat
Message was edited by:
Venkataramanan -
JDBC sender adapter: Update before mapping
Dear all,
following scenario:
in a database we have a field called "statpi". We pick all messages that have statpi = 0 and
update the data record to statpi = 1 via UPDATE function in JDBC sender adapter.
Every select statement is limited to 100 data records for each message in PI.
But if one data record is wrong and the mapping failed, of course the complete mapping failed.
My problem: The update function of the JDBC sender adapter has already updated the
data records, although they didn't have been send to target system.
What I need is following thing: The adapter should send the messages and after PI has mapped
the message and send it to target system, the UPDATE command should be executed.
In my opinion, this is only possible with BPM, but I am not familiar with Advanced mode in JDBC
sender adapter and "Transaction isolation level". Is there any workaround for this?
Thanks
Regards
ChrisStefan Grube wrote:>
> What happens, when new values have entered db meanwhile?
The job that change the DB will be fixed on a certain time. We need to configure
Availability Time Planning to be sure, that we start our select at another time.
>
> > In ideal case the data records are still in statpi=0 and get picked up after
> > the database team has fixed the problem and the adapter polls again.
>
> If the flag is not set, the JDBC adapter would poll the same data again and again.
The adapter should poll every hour. Of course we will have some errors before the
support is able to fix this problem, but because of one message each hour this should
not be the main problem.
> - You could do following: pass the values with an error flag, so you can handle this in receiver application,
I am using the function formatNumber for the field that could raised the error. But to chekc if I am able
to do a workaround here and let the target system fix the error sounds like an interessting possibility.
> - Do a split mapping and create a file where you drop any wrong lines
Also interessting. You mean that all "good" record should be mapped to struc1 and the bad one to struc2.
I am thinking of how to determine which record is wrong. Perhaps with an UDF that checks for this special
error.
> - Use XML validation in sender adpter, so the messages are not processed.
You are full of good ideas. I am not using validation yet and the mentioned field is define as string, but that
is changeable. A good possibility to check the new capability of 7.1.
> - use a stored procedure in DB whee you check data quality to send out.
not sure what this is, but I will discuss with DB team. -
Hi,
am I right in saying that the JDBC Sender Adapter can't request XI system level acknowledgements. Due to this it is necessary to establish an integrations process fed with the data from the sender adapter, sending it to the target system and receiving an acknowledgement?
Kind regards,
HeikoHi heiko,
a JDBC sender adapter cannot be configured Synchronously and so, what you are stating sounds perfect
If you want an update back to the database after execution , BPM is one way .
But, if you are looking to update some info immediately after sender adapter finishes its exectuion, then UPDATE statment can be used.
Regards,
Bhavesh -
How to update two tables in a single call using JDBC Sender adapter
Hello All,
The scenario is, database entries have to be selected from two tables and at the same time those tables have to be udpated with the flag.
We are using JDBC sender adapter and in Select Query, we are fetching the data by joinin the two tables.
Update Statemtent: We can only update one table using this statement.
Is it possible to update two tables using the Update Statement without using Stored Procedures.
Let me know.
Regards,
Sreenivas.Hi Sreenivas,
> Is it possible to update two tables using the Update Statement without using Stored Procedures.
Yes its possible through join statement
Check this links
Update in JDBC Sender adapter for more than one table
data from 2 tables for jdbc sender adapter
Regards
Ramesh -
JDBC sender adapter, ...Processing parameters, Update SQL statement
in JDBC sender adapter, ...Processing parameters, there is an Update SQL statement field, can u tell me ...why this is required,,,,,and in one of the example scenario...it was given as <TEST>..
Sudheep,
In the sender JDBC adapter you have the select query to select data from the database.
Let us summer 2 cases,
1. You have <test> in the UPDATE . In this case, during every polling interval the JDBC adapter will end up selecting the same data from the Database. This would not be needed in most f the cases. Why would you want to select the same data over an over again?
2. If you have an update Statement in the Update field you can make sure that the data selected in the selected statement is updated so that the same rows are not selected again.
Take a look at this blog,
/people/yining.mao/blog/2006/09/13/tips-and-tutorial-for-sender-jdbc-adapter
Regards
Bhavesh -
Hi everybody
I have the following error in my JDBC to JDBC scenario; I configured the JDBC sender adapter and receive the following message back. In the Configuration I set Document Name to MT_ScanningStatus:
<?xml version="1.0" encoding="utf-8" ?>
<MT_ScanningStatus>
<row>
<ScannerNb>1</ScannerNb>
<Status>0</Status>
</row>
<row>
<ScannerNb>2</ScannerNb>
<Status>2</Status>
</row>
<row>
<ScannerNb>3</ScannerNb>
<Status>0</Status>
</row>
<row>
<ScannerNb>4</ScannerNb>
<Status>2</Status>
</row>
</MT_ScanningStatus>
I defined the corresponding datatype as follow:
DT_ScanningStatus Complex Type
row Element 1...unbounded
ScannerNb Element 1
STatus Element 1
In the following Mapping I tried to Map this structure to the Structure used to send an Update SQL Statement to the JDBC Receiver to update the same table. A normal Test in the Mapping Tool runs fine but when I enter under source the above incoming Message from the JDBC Adapter I got the following error. I think the incoming message cannot be interpreted. Can someone support me? I read the documentation for the JDBC adapter and also a lot of weblogs and discussion threads. Maybe someone knows a weblog describing more detailed the sender adapter and how to handle the incoming Message!!
Thanks in advance Oliver
14:58:03 Start of test
Compilation of MM_JDBC_to_JDBC_test successful
Fatal Error: com.sap.engine.lib.xml.parser.ParserException: XML Declaration not allowed here.(:main:, row:1, col:8)
com.sap.aii.utilxi.misc.api.BaseRuntimeException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: XML Declaration not allowed here.(:main:, row:1, col:8)
at com.sap.aii.mappingtool.tf3.rt.xparser.MTSaxHandler.run(MTSaxHandler.java:130)
at com.sap.aii.mappingtool.tf3.rt.xparser.XParser.run(XParser.java:68)
Root Cause:
com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: XML Declaration not allowed here.(:main:, row:1, col:8)(:main:, row=1, col=8) -> com.sap.engine.lib.xml.parser.ParserException: XML Declaration not allowed here.(:main:, row:1, col:8)
at com.sap.engine.lib.xml.parser.XMLParser.scanPI(XMLParser.java:2009)
at com.sap.engine.lib.xml.parser.XMLParser.scanProlog(XMLParser.java:2657)
at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2713)
at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:162)
at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:132)
at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:142)
at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:245)
at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:276)
at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:338)
at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at com.sap.aii.mappingtool.tf3.rt.xparser.MTSaxHandler.run(MTSaxHandler.java:128)
at com.sap.aii.mappingtool.tf3.rt.xparser.XParser.run(XParser.java:68)
at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:144)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at com.sap.aii.mappingtool.tf3.rt.xparser.MTSaxHandler.run(MTSaxHandler.java:128)
at com.sap.aii.mappingtool.tf3.rt.xparser.XParser.run(XParser.java:68)
Caused by: com.sap.engine.lib.xml.parser.ParserException: XML Declaration not allowed here.(:main:, row:1, col:8)
at com.sap.engine.lib.xml.parser.XMLParser.scanPI(XMLParser.java:2009)
at com.sap.engine.lib.xml.parser.XMLParser.scanProlog(XMLParser.java:2657)
at com.sap.engine.lib.xml.parser.XMLParser.scanDocument(XMLParser.java:2713)
at com.sap.engine.lib.xml.parser.XMLParser.parse0(XMLParser.java:162)
at com.sap.engine.lib.xml.parser.AbstractXMLParser.parseAndCatchException(AbstractXMLParser.java:132)
at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:142)
at com.sap.engine.lib.xml.parser.AbstractXMLParser.parse(AbstractXMLParser.java:245)
at com.sap.engine.lib.xml.parser.Parser.parseWithoutSchemaValidationProcessing(Parser.java:276)
at com.sap.engine.lib.xml.parser.Parser.parse(Parser.java:338)
at com.sap.engine.lib.xml.parser.SAXParser.parse(SAXParser.java:125)
... 3 more
Fatal Error: com.sap.engine.lib.xml.parser.ParserException: XML Declaration not allowed here.(:main:, row:1, col:8)Hi Oliver,
>>>>source the above incoming Message from the JDBC Adapter I got the following error. I think the incoming message cannot be interpreted.
do this:
in the test tab try your mapping once more
(the correct one)
then save the source xml as file
next compare this saved file with the one
you get from the jdbc sender
>>>>>Declaration not allowed here.(:main:, row:1, col:8)
and compare the first lines in those two XML files
are they the same?
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> -
Execution time difference between SELECT & UPDATE statement in JDBC Sender.
Hi Experts,
In my scenario, I have used the JDBC Sender Adapter with the SELECT and UPDATE statement.
Now the problem is in between the execution of Select and update statement, few more entries are coming in the same DB Table.
So result of this is updation take place for those entries which are not even picked up by the select statement.
Can we avoid this execution time difference between the SELECT & UPDATE statemet on JDBC Sender side???
Thanks & Regards
JageshHi
Use serializable option in additional parameters, now all new entries would also be updated. -
JDBC Sender Adapter - Restrict number of rows fetched, Oracle
Hi,
Is it possible to restrict the number of rows fetched by the JDBC Sender adapter at each run? What would the appropriate Select and Update statements be to make sure a limited number of rows are selected and flagged as processed?
We are connecting to a Oracle RDBMS.
//Johanhi,
have a look at this info:
about oracle and limiting number of rows
http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html
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 Sender adapter - message split
All,
Scenario:
Oracle Stage table - PI - ECC or R3, (depending on a particular value the record goes to ECC or R3 to post a transaction).
After the record is picked, flag is updated and depending on posting the transaction on SAP, the flag is updated in the stage table.
With the JDBC sender adapter, multiple records are picked up depending on the select statement in the sender comm channel.
I have the following rek.
Now the message is in the AE, before the message enters IE, I would like to split the messages
This would help me in resubmitting the failed (failed to post the transaction) records.
Is there any way that I would be able to do it?
Any guidence...
regHi Naveen,
An alternative way , instead of splitting the multiple record being picked up in a single poll, you can control the number of records being picked. By using the following statement in the sender cc
SELECT * FROM .... UPTO ROWS < 20
so that only 20 records are picked at a time. and resubmit the set of 20 in case it fails.
You can go for this method if it suits your requirement.
Regards,
Shamly -
Challenging issue with JDBC sender adapter
Hello Guys
I have this requirement
From Oracle Database I have to read to tables one for the header and one for the detailes and map the result to one RFC.
I have only worked with one table at the time with the JDBC sender adapter but never with 2 tables
My challenges are
1 - How I can read the 2 tables at the same select statement , I suppose I have to use a join with 2 identical fields , so far so good ,but how I can handle multiple records
suppose the result is 10 new different records which each of the recored has to be mapped to the RFC , then we will have 10 RFC calls.
how can I do the mapping in this case.
2 - How can I update the 2 tables at the samme time and flag them as processed , as far as I know we can not use 2 update statement in the same JDBC sender
any help will do
Thanks in advance.Hi
Thanks for the replayes
The RFC is used to create and Invoice Idoc , It has to be one record (Header and Item ) to one RFC.
a JDBC to IDoc can also be used , but we have to update another table in SAP that is why the RFC,
My doubt is how the Data type for the sender JDBC should look like , as mentioned I have 2 tables to fetch data from
<Invoice>
<Header> 1 -- 1
<f1>
<f2>
<f3>
</Header>
<Item> 1--n
<f1>
<f2>
<f3>
</Item>
</Invoice>
The sender JDBC returns
<Invoice>
<row>
<f1>
<f2>
<f3>
</row>
</Invoice>
How can I replicate the data type to meet the JDBC sender structure.
and regarding the mapping do I have to change the occurrunce to 0 -- unbounded
regarding the update Ragu is right in his suggestion
Table1 can be used as primary table, Table2 can be used as Secondary table.. u will have key field to link both table.
So Just Updating only Primary Table(Table1) will helps on this.
Thanks. -
JDBC sender adapter provides incomplete data
Hi,
I have a JDBC sender adapter which reads data from a MySQL table, and passes it to a proxy which writes the data then in a SAP table.
- Query SQL statement = SELECT Field1, Field2, Field3, Field4 FROM jdbctest WHERE Processed = 'N'
- Update SQL statement = UPDATE jdbctest SET Processed='Y' WHERE Processed='N'
I did a stress test with a program that writes data simultaneously to the MySQL table (up to 10000 records), and the JDBC sender adapter which checks the table every 15 seconds.
At the end, my SAP table contained only 9965 records.
This means that probably there have been records added between the Query and the Update statement (So they haven't been read, but their status is changed).
Does anyone have a solution for this?
Best regards,
Nicolas De CorteHello Dharamveer,
I don't really understand your answer.
My point is that the JDBC adapter only processed 9965 records out of 10000, but it updated all 10000.
So now in my MySQL table there are 10000 records with status Processed, but only 9965 have been really processed. And I think this is because records have been added between the execution of query and the update statement. -
How to notify in case SQL query(JDBC sender adapter) does not fetch records
hi,
How can we notify(by alerts or something) in case SQL query(JDBC sender adapter) does not fetch records? In channels logs it only says processing started & finished(no message is created for same).
Thanks,
MayankHi,
1 ) What is exact audit log message ?
2) Try fetching the count in SQL statement if there are any valid records it will give the count.
May for testing you can use <TEST> in update statement.
3) Have you used taskTimeout parameter ?
4) Are multiple channels polling on same table ?
regards
Ganga -
Update sentence in JDBC SENDER
Hi mates,
I have a doubt about a sentence update in JDBC SENDER adater.
This update we apply, is from all the Database or from de Select we do??
Thanks a lotHi,
The databasename is specified in the connection string. The update statement will have scope of only this database.
Ideally the update statement should have the same where conditions as the select statement, so that exactly the same records are updated which are selected.
To be doubly sure of the sync between select and update statements check the DB issolation level parameter in JDBC sender adapter.
Hope this helps.
Regards,
Siddhesh S.Tawate -
Storedprocedure trigger using JDBC sender adapter.
Hi All,
How can i execute the storedprocedure using JDBC sender adapter. I need to trigger the storedprocedure once in every hour. so i would like to use the JDBC sender adapter. My question is what is the SQL i need use in the SQLstatement parameter..?? I don't want to send parameters and not expecting any return values. It should just trigger the procedure.
Thanks in adv.
Regards,Hi Murali,
it is possible to execute a stored porcedure using a sender JDBC adapter.
Just Specify an SQL EXECUTE statement to execute a stored procedure, which contains exactly one SELECT statement.
This will have to be done for your SELECT statement in JDBC adapter. ALso, make the UPDATE as either TEST, if you dont want any updations or give an UPDATE statement for the UPDATE query.
Set the polling interval of your JDBC adapter to 1 hour and it will work like u want.
http://help.sap.com/saphelp_nw04/helpdata/en/7e/5df96381ec72468a00815dd80f8b63/content.htm
Regards,
Bhavesh
Maybe you are looking for
-
When I download any App on my iPhone 4 its tells me to log into my itues store on my computer, I do this and still nothing happens. Also when I open Facebook on my phone it opens and then closes. Any help is much appreciated. Thanks
-
New WM storage lcoation problems with 311 mvt.
We are working on new WM storage location. And I have a problem. When do the confirmation (LT12) for a TO from new WM to a IM sto location (return to mfg line) the stor type 910 PRODUCTION is adding the stock. I compared this vs an existing WM and wh
-
Need information regarding Hierarchical ALV display
How to total sub items in an Heirarchical ALV List display?
-
How to change the name of the tab control window?
Dear all, Is there any way to change the name of the tab control page programatically? Thanks, Ritesh
-
Completing a Task using ProcessServiceSession::activityPost()
I have a Oracle BPM 10.3.1.0 Studio installation. I was able to create and run the tutorial process successfully. Now, I am trying to complete the the interactive tasks (screenflow) using PAPI. The PAPI Java Doc indicates that activityPost() with Tas