"VLD-2780: Unable to generate Merge statement".
Folks,
I am trying to validate my mapping before deployment but I am getting the following error: "VLD-2780: Unable to generate Merge statement".
- I am mapping 5 tables from my source to one table in my target by using a joiner.The primary key in my target table is also my synthetic key. (I have created a sequence on the primary key)
-When the "Match by constraint" in the operator properties of the target table is set to "All constraints" I get the VLD-2780 error message during validation.
- However when the "Match by constraint" is set to "No constraints" I can generate the merge statement in my intermediate result but my validation is now giving me this message:"VLD-2750: Missing update matching criteria in TARGET_TABLE".
- My synthetic key property is set as follow:
Load Column when Inserting Row = Yes
Load Column when Updating Row = No
Match Column when Updating Row = No
Update:Operation =
Match Column when Deleting Row = Yes
I have tried other options wihout much success. I can't seem to pass the validation step.
Any help will be greatly appreciated.
Thanks Much!
There are two ways of matching incomming rows with rows present in a target table during updates. One is to use the key constraints. You can see this by inspecting the target object properties in the mapping and checking the 'Match by constraint' parameter. This is recommended in case you have defined key constraints on the target objects.
The other (if match by constraints is set to 'no constraints') is to set the Match Column when Updating to yes (and conversely, Load Column when Updating to 'No') for individual columns that have to be matched (as sugested above).
If you get the VLD-2750 message, it means that one of the target objects does not have any matching criteria set for updates. In an insert/update mapping you should use either the first or the second matching method for all your target objects.
Regards:
Igor
Similar Messages
-
VLD-1119: Unable to generate Multi-table Insert statement for some or all t
Hi All -
I have a map in OWB 10.2.0.4 which is ending with following error: -
VLD-1119: Unable to generate Multi-table Insert statement for some or all targets.*
Multi-table insert statement cannot be generated for some or all of the targets due to upstream graphs of those targets are not identical on "active operators" such as "join".*
The map is created with following logic in mind. Let me know if you need more info. Any directions are highly appreciated and many thanks for your inputs in advance: -
I have two source tables say T1 and T2. There are full outer joined in a joiner and output of this joined is passed to an expression to evaluate values of columns based on
business logic i.e. If T1 is available than take T1.C1 else take T2.C1 so on.
A flag is also evaluated in the expression because these intermediate results needs to be joined to third source table say T3 with different condition.
Based on value taken a flag is being set in the expression which is used in a splitter to get results in three intermediate tables based on flag value evaluated earlier.
These three intermediate tables are all truncate insert and these are unioned to fill a final target table.
Visually it is something like this: -
T1 -- T3 -- JOINER1
| -->Join1 (FULL OUTER) --> Expression -->SPLITTER -- JOINER2 UNION --> Target Table
| JOINER3
T2 --
Please suggest.I verified that their is a limitation with the splitter operator which will not let you generate a multi split having more than 999 columns in all.
I had to use two separate splitters to achieve what I was trying to do.
So the situation is now: -
Siource -> Split -> Split 1 -> Insert into table -> Union1---------Final tableA
Siource -> Split -> Split 2 -> Insert into table -> Union1 -
Why does OWB generate merge statement when target type = Update
Hi there
getting problem message cannot generate merge. I don't undretand why even trying to ctreate a merge when should be an update and then sql would be fine.
trying to update a table whose expiry date = '31-DEC-4000' (via raget filter for update
and also put value from src into this field.
This would be ok in sql
update table
set col = new_value
where col = 31-dec-4000'
Any thoughts - it seems strange why OWB generate a merge when set target type to Update since other target types of Update/Insert and Insert/Update available to generate merge.
Many ThanksI understand what you are trying to say...
One simple workaround for this is: In the mapping, add one more column in the target table eg: match_val. Set the bound name to match column eg: col.
Set the one match_val attribute properties to "match column when updating" & actual column eg: col attribute properties to "Load column when updating".
This will generate merge statement for your requirements. This will help u. -
Can't generate Merge statement in OWB
Hi All,
I'm facing a very strange problem in OWB. Version is 9.0.3. I have a target table which has its properties set to INSERT/UPDATE and I have set one of its fileds to be the one used for matching. However when generating the code, OWB is generating only an INSERT statement and not a MERGE as I'd expect. The table is very simple, it has 4 columns, 1 of which I will be using to match on. the properties of them are:
Load on Insert Load on Update Use for Matching
F1 Y Y N
F2 Y Y N
F3 Y Y N
F4 N N Y
The module in which this mapping was created is pointing to an Oracle8i/9i DB. All other mappings when created in a seperate module with this project CAN generate the Merge...strange!
I have used the Merge statement successfully on many other mappings but at this client site I'm having problems
Any help would me most appreciated.
Take care
MiteshThanks for your reply. My target table does not have any contraints on it and that is why in the properties in OWB I have selected the value "no contraints" for "match by constrainsts". I have then set one of the 4 fields to:
Insert:Use for loading = No
Update:Use for loading = No
Update:Use for matching = Yes
The other threee columns are set to:
Insert:Use for loading = Yes
Update:Use for loading = Yes
Update:Use for matching = No
The table Loading/Type is Insert/Update but I'm still not getting the merge to work. I really am not sure if this is a Java bug or not. I have deleted the mapping and created it from scratch but I get the same problem. Then next point of call I think would be to create a new module within my projects - but its just strange how other moules in this same project work with merge.
Thanks
Mitesh -
Merge statement BUG!?
Hi all,
When i have a mapping that makes an INSERT/UPDATE at the end over a primary key, and i change the primary key, after the reconcile table the mapping validation gives 'Unable to generate Merge statement'.
There's any way to avoid me to replace the table, and just do the reconcile inbound?
Thanks,
VitorHi,
Probably i didn't make myself clear!
Imagine, that i change my table Primary Key, then on the mapping i will make the Reconcile Inbound. At this moment it can't make the merge statement. So what i got to do is, remove the target table and insert it again. In the end i will have exactly what i had before. I just don't understand why the Reconcile Inbound is not enough, and had to replace the table.
To me this is a BUG because i will not change anything on the mapping structure, it just can't transpose the changes made on the primary key to the merge statement using the reconcile!!
Regards,
Vitor -
MERGE Statement - unable to get a stable set of rows in the source tables
OWB Client: 10.1.0.2.0
OWB Repository: 10.1.0.1.0
I am trying to create a MERGE in OWB.
I get the following error:
ORA-12801: error signaled in parallel query server P004 ORA-30926: unable to get a stable set of rows in the source tables
I have read the other posts regarding this and can't seem to get a fix.
The target table has a unique index on the field that I am matching on.
The "incoming" data doesn't have a unique index, but I have checked and confirmed that it is unique on the appropriate key.
The "incoming" data is created by a join and filter in the mapping and I'd rather avoid having to load this data into a new table and add a unique index on this.
Any help would be great.
Thanks
LauraHello Laura,
The MERGE statement does not require any constraints on its target table or source table. The only requirement is that two input rows cannot update the same target row, meaning that all existing target rows can be matched by at most one input row (otherwise the MERGE would be undeterministic since you don't know which of the input rows you would end up with in the target).
If a table takes ages to load (and is not really big) I suspect that your mapping is not running in set mode and that it performs a full table scan on source data for each target row it produces.
If you ARE running in set mode you should run explain plan to get a hint on what is wrong.
Regarding your original mapping, try to set the target operator property:
Match by constraint=no constraints
and then check the Loading properties on each target column.
Regards, Hans Henrik -
How to examine the generated SQL statement in Receiver JDBC Adapter
I have been searching this forum how to display te generated sql statement (by the jdbc receiver adapter).
The only suggestion is to use RWB, but I was unable to find any details about how to do so.
Any help is appreciatedHi,
To add, u can see the SQL Statements in Audit log of RWB.
Select Message Monitoring-> Adapter Engine. choose ur entry and click on Details option button, u can see the SQL Statements in Audit Log.
Regards,
Sudharshan
Message was edited by:
Sudharshan Aravamudan -
Dear Gurrus,
i am having a trouble in using oracle merge statement in abap, the moment i use where clause in the bottom it gives me an oracle error
EXEC SQL.
MERGE INTO SAP_GL_ACCOUNT@GETZDB a
USING SKA1 b
ON (A.gl_code= B.SAKNR)
WHEN MATCHED THEN
UPDATE SET a.posting_block = B.XSPEB,
a.locked = B.XSPEA,
A.BALANCE_SHEET = B.XBILK
WHEN NOT MATCHED THEN
insert (gl_code,
DESCRIPTION,
posting_block,
locked,
balance_sheet)
VALUES (b.SAKNR,'shadab',B.XSPEB,B.XSPEA,B.XBILK)
where b. mandt = 950 I am talking about this line
ENDEXEC.
the Moment i include WHERE clause in the botton before ENDEXEC it generates as error
" Database error text........: "ORA-00904: "A3"."MANDT": invalid identifier#ORA-02063: preceding line from GETZDB".
although its a basic feature of Oracle to inclue where clauses in insert or update in merge, but here it is generating an error.Hello Shadab,
As per my understanding of this oracle native sql code.
everything is fine except the use of direct value i.e 950 .
System is not able to process this value .
This normally happens even in normal abap sql statements also.
The better solution could be to declare a variable with the
same data type as "mandt" and then pass this "950" value into that
variable and then use this variable in the where clause instead of directly
passing the value.
i.e data:l_var type mandt vlaue '950'.
The other option could be to use the same hard coded
value but use this value in the where clause in quotations i.e.,
'950' instead of 950.
I hope this would solve your purpose, If not please reply me back.
thanks,
M.Naveen Kumar. -
Re-doing complex Merge statement in OWB
I have a complex merge written in sql that needs to be redone in owb.
The code is something like this :
MERGE INTO table_1
USING (
WITH u1 AS (SELECT STATEMENT 1....)),
u2 AS (SELECT STATEMENT 2....)),
u3 AS (SELECT STATEMENT 3....)),
u4 AS (SELECT STATEMENT 4....)),
u5 AS (SELECT STATEMENT 5....))
SELECT *
FROM (SELECT * FROM u1
UNION
SELECT * FROM u2
UNION
SELECT * FROM u3
UNION
SELECT * FROM u4
UNION
SELECT * FROM u5) a,b
WHERE a.column1 = b.column1(+) ) table_2
ON (table_1.id = table_2.id)
when matched then update set....
when not matched then insert...
How do I implement some thing like above in OWB? Do i need to use pluggable mappings?
any feedback would be of great help!
Thanks
BilluHi Billu,
no, you do not need pluggable mappings.
Design your selects for u1 - u5 as required in one mapping. Then use a set operator (union) with 5 ingroups. Connect the results of your selects to each ingroup.
Connect the output of the set operator to your target table table_1. Set loading type to insert/update (this will generate a merge statement). Use the column id for matching.
Regards,
Carsten. -
Hi,
Can anyone advice on below issue?
ERROR: The program is unable to generate the add-on queue due to missing add-ons or Support Packages.
Add the missing Support Packages or repeat the current step and change the add-on selection.
Missing Support Package(s):
Correction
Component
IW_FNDGC
I have manually download these components which is SAPK-10001INIWFNDGC and SAPK-10002INIWFNDGC and put it in the download directory and repeat the phase.
Besides, I also checked that these 2 components were inside EPS/in folder CSN0120061532 0083837 PAT and CSN0120061532 0079648 PAT
Thanks and regards,
Shu JieHi Shu Jie,
you can't delete already installed add-ons. Please refer to note #1569624:
It is not possible to uninstall GATEWAY 2.0
Before you install the GATEWAY 2.0, keep in mind that you cannot uninstall ABAP add-ons.
The add-on GW CORE will be merged in IW_FNDGC. This information can also be found in above note:
Please
note:
GW_CORE 200 is not released for SAP_BASIS 740.
The successor is IW_FNDGC 100.
There are two possible reason for your error:
The stackfile is not well configured.
Your SUM is not the very latest one. SUM SP10 contained a bug in its first patch levels which shows retrofitted components in IS_SELECT.
Cheers,
Andreas -
Indivual error recording in Merge Statement !!!!
Is it possible to record indivudual error in MERGE statement (Update / Insert).
I am unable to record those error. instead of MERGE if I update table in the cursor loop then I am able to record individual error but the process is time consuming.
Thanks in advance.
DebaHi Deba,
DML Error Logging:
SQL> create table tab1 (x number(1));
Table created.
SQL> exec dbms_errlog.create_error_log('tab1')
PL/SQL procedure successfully completed.
SQL>
SQL> merge into tab1 t
2 using (select 1 x from dual union all
3 select 112 x from dual) s
4 on (t.x = s.x)
5 when not matched
6 then insert (x) values (s.x)
7 log errors into err$_tab1 reject limit unlimited;
1 row merged.
SQL>
SQL> COL x for 9999
SQL> select * from tab1;
X
1
SQL> COL x for a4
SQL> select ora_err_number$, X from err$_tab1;
ORA_ERR_NUMBER$ X
1438 112
SQL>Regards
Peter -
Installation Problem on 11g, RHEL 5 - Unable to generate temporary script
Hello all,
This is for the first time i am encountering this kind of error on 11g. Half way through installation i get this error.
All parameters set correct, used the official installation technique (works fine previously), except for this time i am getting a weird error, which does not allow me to continue with the installation.
Please help.
Environment
Oracle 11g
RHEL 5
Error on GUI -
OUI-10053: Unable to generate temporary script: {0}. Unable to continue install
Error on command prompt -
OUI-10053:Unable to generate temporary script: /u01/app/oraInventory/orainstRoot.sh. Unable to continue install.
Help appreciated.
ThanksHi Monu Koshy
Can you please control the user rights and also the df ?
ls -al /u01/app/oraInventory/
df -h /u01/app/oraInventory/
Regards,
Hub -
Error while generating remuneration statement
Hi
I found an error, while generating remuneration statement. The error is "Start date 01.01.1800 is higher than end date 00.00.0000".
Kindly help
ShadeeshHi shadeesh,
Please check the payroll control record's start date and end date in PA03
regards,
Ayyaps -
i would like to know if it is possible to identify the row that is causing the problem when you use a merge statement in pl/sql. i know if you create a cursor and then loop through the data you can identify the column but what about if i have only a merge that will either insert or update. is it possible to identify which row of data cause the problem? thanks
You can use an Error Logging Table<br>
<br>
Nicolas. -
Hi
I am using a merge statement where i am updating and inserting records in table 2 from table 1.
I want to log the no. of rows updated and new rows inserted in the log table.
If i am not wrong, we can use sql%rowcount but i need help as how to use this statement.
Please suggest a solution.
Thanksuser11018028 wrote:
Will the sql%rowcount will give the no. of updated rows OR no. of newly inserted rows OR the sum of both in case of a merge statement.Total number of rows that changed (SUM).
Maybe you are looking for
-
Hi experts, We have a Proxy to SOAP scenario and we have the same issue mentioned in this post and in note 1522630, the version is SAP PI 7.31 (AEX). We configured 2 XSLT mappings and we use the MessageTransformBean (Transform.ContentType=text/xml;ch
-
Why wont my ipod hold charge, why wont my ipod hold charge
My ipod classic be on the charger all day but when I go to take it off to listen to it the battery bar doesnt move and then just cut off/
-
Nokia 5800 does not recognise Ipod headphones??
Just got a 5800 and found that the phone does not appear to recognise my Ipod 'phones'. Is this a known fault or proprietary issue between Nokia and Apple or have I just missed something!! Any ideas please? Steve
-
SOLVED: vfat filesystem suddenly becomes read only when running wine
I did a pacman -Syu (it's been a couple of weeks or so) and since then I have a very strange problem. I have a vfat partition with World of Warcraft installed on it. It is mounted as: /dev/sda10 /mnt/data vfat rw,noatime,user,umask=0000 0 0 When I r
-
Acrobat Std/Pro 11 silent installieren
How do I do it that I can instal Acrobat per XI with volume licence silent and also which is made to registering automatic? Wie bekomme ich es hin, dass ich Acrobat Pro XI mit Volumenlizenz silent installieren kann und auch die Registrieren automatis