"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 Thanks

    I 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
    Mitesh

    Thanks 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,
    Vitor

    Hi,
    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
    Laura

    Hello 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 appreciated

    Hi,
    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

  • Merge Statement in ABAP

    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
    Billu

    Hi 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.

  • ERROR: The program is unable to generate the add-on queue due to missing add-ons or Support Packages.

    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 Jie

    Hi 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.
    Deba

    Hi 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.
    Thanks

    Hi 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
    Shadeesh

    Hi shadeesh,
    Please check the payroll control record's start date and end date in PA03
    regards,
    Ayyaps

  • Merge statement

    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.

  • Merge Statement in PL/SQL

    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.
    Thanks

    user11018028 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