Compare 2 Range tables

Hi,
Is there any simple way to compare two range tables, something like RANGE1 IN RANGE2 ? I need to check if one range table is inside another or not.
Thanks, Nuno

I don't know if this is correct but a read in a post a time ago that you can compare two internal tables when had the same number of lines and and the same elements you can use
IF RANGE1 = RANGE2.
ENDIF.
if that is not the case then you have to loop to know if the element is inside the range

Similar Messages

  • Compare two tables on different server without using Linked Servers

    I have an SSIS package that needs to compare a table to another table on another server.  Then only delete data from the first table if it exists in the second table.  
    I know this is possible with Linked Servers but we are doing away with them in my company.  Is there a way inside of SSIS to do this?
    Oh and I can't use a Data Flow since I don't know the table names or columns at run time (the whole package is dynamic) so I can't map the columns ahead of time.  
    So no MERGE JOIN unless it can be used outside of a Data Flow.  

    You 'll have to use the Data Flow Transformation, thing is, given the constraints, your only option seems to be in generating the package programmatically (using code).
    The type of a program would be a Windows Console. The program would expect a few parameters as the source and target tables along with any necessary connection parameters.
    Then use the merge join (being the easiest to code in) in an Execute SQL Task component.
    Examples of coding packages:
    Samples for creating SSIS packages programmatically
    PS: I can tell you, given your circumstances, at the very minimum the impact on the bottom line of your company is brittle apps accompanied with expensive maintenance which translates into reduced ROI from your tooling.
    Arthur My Blog
    The package is table driven and is a dynamic archival process.  The end user just fills in the framework table and the package archives data from within a certain time range.  The table can exist on any server, any database.  
    That part is done.  The part that still needs to be accomplished is to delete data out of the base table since it is archived.  I need a safe way of doing this and so thought to compare the archive table against the base table.  Because they
    can exist anywhere and can have any name I am not sure how to do this without Linked Servers.  That being said we will not have Linked Servers for this.  
    Is there another safe way to delete data out of the base table?

  • Script for Compare same table 'TAB1' structures in different schemas

    Hello, i am having three schema and in all schema i have same table for example TAB1 and i want to Compare TAB1 table structures in all three schema but i don't know the script. the different should content at least  DATA_TYPE,DATA_LENGTH,DECODE(DATA_PRECISION,NULL,NULL,DATA_PRECISION||','||DATA_SCALE) columns in query. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi Thanks..

    If you want a generic script use below function to get the difference.. Run the below script and let me know in case of any issues
    CREATE OR REPLACE TYPE nt_username IS TABLE OF VARCHAR2(50);
    CREATE OR REPLACE TYPE obj_struc IS OBJECT (user_name1     VARCHAR2(30),
                                               user_name2      VARCHAR2(30),
                                               column_name1    VARCHAR2(30),
                                               column_name2    VARCHAR2(30),
                                               data_type1      VARCHAR2(106),
                                               data_type2      VARCHAR2(106),
                                               data_length1    NUMBER(10),
                                               data_length2    NUMBER(10),
                                               data_precision1 VARCHAR2(50),
                                               data_precision2 VARCHAR2(50),
                                               column_id1      NUMBER(10),
                                               column_id2      NUMBER(10)
    CREATE OR REPLACE TYPE nt_struc IS TABLE OF obj_struc;
    CREATE OR REPLACE FUNCTION tabstruc_script (p_tabnm   VARCHAR2,
                                                p_usernm  nt_username
    RETURN nt_struc
    AS
    v_nt_struc nt_struc := nt_struc();
    v_ntusrnm nt_username := p_usernm;
    TYPE rec_stru IS RECORD (column_name    all_tab_columns.column_name%TYPE,
                             data_type      all_tab_columns.data_type%TYPE,
                             data_length    all_tab_columns.data_length%TYPE,
                             data_precision all_tab_columns.data_precision%TYPE,
                             data_scale     all_tab_columns.data_scale%TYPE,
                             column_id      all_tab_columns.column_id%TYPE
    TYPE nt_stru IS TABLE OF rec_stru;
    v_ntstru nt_stru  := nt_stru();
    v_columnname all_tab_columns.column_name%TYPE;
    v_reccnt NUMBER;
    v_cnt NUMBER;
    v_precision1 VARCHAR2(50);
    v_precision2 VARCHAR2(50);                    
    BEGIN
    FOR i IN 1..v_ntusrnm.COUNT
      LOOP
         SELECT COUNT(*) INTO v_reccnt
         FROM all_tables
         WHERE owner = v_ntusrnm(i)
         AND table_name = p_tabnm;
          IF v_reccnt >= 1 THEN
             SELECT column_name,  
                    data_type,    
                    data_length, 
                    data_precision,
                    data_scale,
                    column_id
             BULK COLLECT INTO v_ntstru
             FROM all_tab_columns
             WHERE owner = v_ntusrnm(i)
             AND table_name = p_tabnm;
              FOR j IN i+1..v_ntusrnm.COUNT
                LOOP
                     FOR k IN 1..v_ntstru.COUNT
                       LOOP
                          SELECT COUNT(*) INTO v_cnt
                          FROM all_tab_columns
                          WHERE owner = v_ntusrnm(j)
                          AND table_name = p_tabnm
                          AND column_name = v_ntstru(k).column_name;
                           IF v_cnt >= 1 THEN
                             FOR l IN (SELECT column_name,  
                                              data_type,    
                                              data_length, 
                                              data_precision,
                                              data_scale,
                                              column_id
                                       FROM all_tab_columns
                                       WHERE owner = v_ntusrnm(j)
                                       AND table_name = p_tabnm
                                       AND column_name = v_ntstru(k).column_name)
                                LOOP
                                  IF ((v_ntstru(k).column_id <> l.column_id)
                                      OR (v_ntstru(k).data_type <> l.data_type)
                                      OR (NVL(v_ntstru(k).data_length,0) <> NVL(l.data_length,0))
                                      OR (NVL(v_ntstru(k).data_precision,0) <> NVL(l.data_precision,0))
                                      OR (NVL(v_ntstru(k).data_scale,0) <> NVL(l.data_scale,0))) THEN
                                     v_nt_struc.EXTEND;
                                     SELECT DECODE(v_ntstru(k).data_precision,NULL,NULL,v_ntstru(k).data_precision||','||v_ntstru(k).data_scale),
                                            DECODE(l.data_precision,NULL,NULL,l.data_precision||','||l.data_scale)
                                     INTO v_precision1,
                                          v_precision2
                                     FROM DUAL;
                                     v_nt_struc(v_nt_struc.COUNT) := obj_struc(v_ntusrnm(i),
                                                                               v_ntusrnm(j),
                                                                               v_ntstru(k).column_name,
                                                                               l.column_name,
                                                                               v_ntstru(k).data_type,
                                                                               l.data_type,
                                                                               v_ntstru(k).data_length,
                                                                               l.data_length,
                                                                               v_precision1,
                                                                               v_precision2,
                                                                               v_ntstru(k).column_id,
                                                                               l.column_id);
                                  END IF;
                                END LOOP;
                           END IF;
                       END LOOP;
                      FOR m IN(SELECT column_name,  
                                      data_type,    
                                      data_length, 
                                      data_precision,
                                      data_scale,
                                      column_id
                               FROM all_tab_columns
                               WHERE owner = v_ntusrnm(i)
                               AND table_name = p_tabnm
                               AND column_name NOT IN(SELECT column_name
                                                      FROM all_tab_columns
                                                      WHERE owner = v_ntusrnm(j)
                                                      AND table_name = p_tabnm))
                          LOOP                                         
                            v_nt_struc.EXTEND;
                            SELECT DECODE(m.data_precision,NULL,NULL,m.data_precision||','||m.data_scale)
                            INTO v_precision1
                            FROM DUAL;
                            v_nt_struc(v_nt_struc.COUNT) := obj_struc(v_ntusrnm(i),
                                                                      v_ntusrnm(j),
                                                                      m.column_name,
                                                                      NULL,
                                                                      m.data_type,
                                                                      NULL,
                                                                      m.data_length,
                                                                      NULL,
                                                                      v_precision1,
                                                                      NULL,
                                                                      m.column_id,
                                                                      NULL);
                          END LOOP;
                         FOR n IN(SELECT column_name,  
                                          data_type,    
                                          data_length, 
                                          data_precision,
                                          data_scale,
                                          column_id
                                   FROM all_tab_columns
                                   WHERE owner = v_ntusrnm(j)
                                   AND table_name = p_tabnm
                                   AND column_name NOT IN(SELECT column_name
                                                          FROM all_tab_columns
                                                          WHERE owner = v_ntusrnm(i)
                                                          AND table_name = p_tabnm))
                           LOOP
                            v_nt_struc.EXTEND;
                            SELECT DECODE(n.data_precision,NULL,NULL,n.data_precision||','||n.data_scale)
                            INTO v_precision2
                            FROM DUAL;
                            v_nt_struc(v_nt_struc.COUNT) := obj_struc(v_ntusrnm(j),
                                                                      v_ntusrnm(i),
                                                                      n.column_name,
                                                                      NULL,
                                                                      n.data_type,
                                                                      NULL,
                                                                      n.data_length,
                                                                      NULL,
                                                                      v_precision2,
                                                                      NULL,
                                                                      n.column_id,
                                                                      NULL);
                           END LOOP;
                        END LOOP;
            END IF;
      END LOOP;
    RETURN v_nt_struc;
    EXCEPTION
    WHEN OTHERS THEN
      RAISE;
    END tabstruc_script;
    SELECT * FROM TABLE(tabstruc_script(:tabnm,nt_username(:user1,:user2,:user3)));
    You need to pass tablename and username to calling this function. Username is a nested table here so you can pass like nt_username(:user1,:user2,:user3)

  • How to Captured Value into Select-Options Range Table Without "Enter"

    Hi,
    I defined a set of Select-Options in the Web Dynpro. I found that the value for the Select-Options will not be captured whenever I manually type in the value instead of choosing it from F4 Help Drop Down.
    However, this problem can be resolved if I manually type in the value for Select-Options in the Selection Field and I press "Enter". Without pressing "Enter" value will not be captured.
    Any solution for this issue? Please help.

    Hi Kris,
    My problem is only when the user key in the value themselves rather than choosing it from Select-Options drop down value. Most of the time user will know what value to key in and will skip the step to choose from the Drop Down List. Thus, if this happen, the value keyed in by the user will not be able to capture into the range table.
    I am using this logic to capture the value for selection item:
      wd_this->m_helper->get_selection_screen_items(
        IMPORTING et_selection_screen_items = lt_sel_item ).
    * Values From Selection Screen
      LOOP AT lt_sel_item ASSIGNING <fs_sel_item>.
        CASE <fs_sel_item>-m_id.
          WHEN `PERNR`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_pernr>.
          WHEN `BUKRS`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_bukrs>.
          WHEN `STAT2`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_stat2>.
          WHEN `WERKS`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_werks>.
          WHEN `BTRTL`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_btrtl>.
          WHEN `PERSG`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_persg>.
          WHEN `PERSK`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_persk>.
          WHEN `ABKRS`.
            ASSIGN <fs_sel_item>-mt_range_table->* TO <fs_abkrs>.
          WHEN `BEGDA`.
            ASSIGN <fs_sel_item>-m_value->* TO <fs_begda>.
        ENDCASE.
      ENDLOOP.
    E.g. User key in the BUKRS without using the Drop Down Value provided by the Select-Options. For this case, <fs_bukrs> table will be initial as no value is captured.
    Edited by: Girish Nabar on Apr 21, 2011 8:55 AM

  • BUG? BRIDGE statement to compare two tables

    Hello,
    I tried to compare two tables in different dbs and remembered a post about Cross Connectin Queries
    http://barrymcgillin.blogspot.com/2010/11/cross-connection-queries.html
    BRIDGE temparb AS "EB05 01"
    (SELECT * FROM arb)
    (SELECT * FROM temparb
    MINUS
    SELECT * FROM arb
    UNION ALL
    (SELECT * FROM arb
    MINUS
    SELECT * FROM temparb
    );I would expect to get the differences between the table arb in my current schema and the table arb alias temparb in the other db. Yet it seems, that in this case only the table in my current schema is read.
    I materialize the BRIDGE table with
    BRIDGE temparb AS "EB05 01"
    (SELECT * FROM arb)and select the value I know to be only in the remote schema
    SELECT id FROM temparb WHERE id = 2562;
    SELECT id FROM arb WHERE id = 2562;Both times I get no result. I even tried to use aliases on the table, same result. Tested in 3.0 and 3.1 EA3.
    Has anyone tried this before?
    Regards
    Marcus

    Hi Marcus,
    Have you tried it without the double quotes around the connection name?
    I have a connection called
    system_local
    which I run the following command in
    drop table testbridge_remote;
    drop table testdbrige;
    create table testbridge(col1 int);
    insert into testbridge values (1);
    insert into testbridge values (2);
    insert into testbridge values (3);
    commit;
    I have a connection called
    Connection Name With Space
    which I run the following in
    drop table testdbrige;
    create table testbridge(col1 int);
    insert into testbridge values (4);
    insert into testbridge values (5);
    insert into testbridge values (3);
    commit;
    Then in the system_local connection/worksheet I can run the following statement
    BRIDGE testbridge_remote as Connection Name With Space(select * from testbridge)
    +(SELECT * FROM testbridge_remote+
    MINUS
    SELECT * FROM testbridge
    +)+
    UNION ALL
    +(SELECT * FROM testbridge+
    MINUS
    SELECT * FROM testbridge_remote
    +);+
    It works ok.
    Returning rows in the remote table not in the local table , and rows in the local table not in the remote table .
    Regards,
    Dermot
    SQL Developer Team.

  • Compare two tables and log the difference

    Hi,
    I want to compare two tables and log the difference in new table with the fields as (old value,new value, column name). The column name should be the changes value column

    Can you show an example?
    SELECT Foo.*, Bar.*
       FROM Foo
            FULL OUTER JOIN
            Bar
            ON Foo.c1 = Bar.c1
               AND Foo.c2 = Bar.c2
               AND Foo.cn = Bar.cn
     WHERE Foo.key IS NULL 
        OR Bar.key IS NULL; 
    Best Regards,Uri Dimant SQL Server MVP,
    http://sqlblog.com/blogs/uri_dimant/
    MS SQL optimization: MS SQL Development and Optimization
    MS SQL Consulting:
    Large scale of database and data cleansing
    Remote DBA Services:
    Improves MS SQL Database Performance
    SQL Server Integration Services:
    Business Intelligence

  • Creation of dynamic range tables

    Hi there,
    I have a question. I created a function module that generates a range table in a very dynamic way. The only thing needed is the table- and the field-name.
    But now I don't know how to use these ranges because I declared the exporting parameter as "TABLE" (also dynamic). And now I don't know which type I have to give with when calling my function module.
    The coding of my function module is like this:
    Moderator message - Please respect the 2,500 character maximum when posting. Post only the relevant portions of code
    So how can I use this function module in an easy way? What I need is such a dynamic
    DATA: lt_range TYPE ANY TABLE (which doesn' exist).
    I need the range table in the following for different IF-clauses I want to check.
    Thank you very much vor every hint.
    Kind regards
    Markus
    Edited by: Markus Glubka on Jun 6, 2010 1:49 PM
    Edited by: Rob Burbank on Jun 6, 2010 7:52 PM

    Hi Markus,
    If you are talking about RANGE table the structure is fixed. You have the SIGN, OPTION, LOW, HIGH fields. [http://help.sap.com/abapdocu_70/en/ABAPTYPES_RANGES.htm]
    Even if your table is dynamic you can get these values from by ASSIGN COMPONENT statement. Accessing components of dynamic table has been discussed many a times in the forum, you can check.
    BR,
    Suhas

  • Max. records in Range table used in Select .. IN  ?

    Hi
    Does somebody knows wich is the max. amount of records in a RANGES table used in Select Comand:
        select xxxx FROM  table
        where  field  IN  range_table.
    That, because i found severeal times programs aborting for this cause, so i changed this condition to an ALL ENTRIES.
    Regards
    Frank

    It really depends on the table and DB settings.
    Check with your DBA folks.
    On our system it's ~ 400-500 for most of the tables.
    NOTE: as it depends on DB settings - it may be different on your development system and on your production system.
    For all entries does ntohave this limitation as it's being split into several selects, you can see it in the trace.

  • Runtime error using range table in select query

    I have to select tcodes from table tstc, based on the entries in ust12,
    the entries in ust12-von and ust12-bis, these contains wild charcters also,  and i have to selct all the tcodes  from von to bis.
    so ia m preparing a range table for the entries in ust12, and querying table tstc, then i am getting a runtime error with following description.
    'If the problem occurred because an excessively large table was used
    in an IN itab construct, you can use FOR ALL ENTRIES instead.'
    but how can i use FOR ALL ENTRIES here, because if von = A* and bis = AB*,then i ahve to read all the entries from AAAA till ABZZ (may be something like this),
    is there any way to write this query, with out runtime error.
    there are total 15000 entries in ust12, i am preparing range table for 3000 entries each and querying tstc.
    Thanks in advance
    Best Regards
    Amarender Reddy B

    Hi,
    first write a select on ust12 based on ust12-von and ust12-bis.
    eg: select von bis from ust12 into table gt_ust12
                               where von LIKE 'A%'
                                   and bis LIKE 'AB%'.
    now write another select for tstc for all entries in gt_ust12...
    Hope it helps
    Regards,
    Pavan

  • Select options range table to be passed to Assistance class

    Hi Guru's,
    I have an assistance class where I have to write all my select queries. I have a selection screen with multiple Select options (as input fields). Now I want to pass the select options range table to assistance class.
    Please let me know if you have any sample code for this which may also include building range tables for select options.
    Thanks,
    Pradeep

    Hi Pardeep,
    U can use following code: for field ERDAT
    data: rt_ERDAT      type ref to data,
            R_ERDAT       TYPE RANGE OF VIQMEL-ERDAT,
            R_ERDAT_line  LIKE LINE OF R_ERDAT,
    field-symbols: <fs_ERDAT> type table.
    Retrieve the data from the select option
      rt_ERDAT = wd_this->m_handler->get_range_table_of_sel_field( i_id = 'ERDAT' ).
    Assign it to a field symbol
      assign rt_ERDAT->* to <fs_ERDAT>.
    copy field symbols to local variable
      R_ERDAT = <fs_ERDAT>.
    CALL METHOD WD_ASSIST->"METHOD_NAME"
          R_ERDAT        = R_ERDAT
    where in class method:
    R_ERDAT     Importing     Type     ZU5QNM_ERDAT_T
    ZU5QNM_ERDAT_T : is a table type of ZU5QNM_ERDAT_R
    and ZU5QNM_ERDAT_R has following structure :
    SIGN     ACE_SIGN     CHAR     1     0     Debit/Credit Sign (+/-)
    OPTION     ACE_OPTION     CHAR     2     0     Option for Ranges Tables
    LOW     ERDAT     DATS     8     0     Date on Which Record Was Created
    HIGH     ERDAT     DATS     8     0     Date on Which Record Was Created
    I hope this wiol solve ur problem.
    Regards,
    Vishal.

  • Message mapping problem: BAPI with range table parameters

    A kind hello to all,
    I try to call the BAPI_ALM_ORDERHEAD_GET_LIST in a 4.70 system via RFC connector. The configuration already works with another BAPI. With this here I get message mapping exception:
    Trace level="1" type="T">com.sap.aii.utilxi.misc.api.BaseRuntimeException: RuntimeException in Message-Mapping transformation: Zielelement /ns1:BAPI_ALM_ORDERHEAD_GET_LIST kann nicht angelegt werden. Prüfen Sie, ob die XML-Instanz für die Ausgangs-XSD und die Zielfeldzuordnung die Anforderungen der Ziel-XSD erfüllt. at com.sap.aii.mappingtool.tf3.AMappingProgram.start
    (How can I switch the trace language to English easily? I try to translate:
    "BAPI_ALM_ORDERHEAD_GET_LIST cannot be created. Check if the XML instance meets the requirements for the output XSD and the destination field mapping meets the requirements of the destination XSD.")
    But the mapping test tool in the Integration Builder Design does not report any warning or error.
    My guess is that the problem lies in the parameter structure of the BAPI_ALM_ORDERHEAD_GET_LIST: I have to fill the IT_RANGES selection range table, so it looks as if I need several instances of the item in the corresponding XML. Can I use "Duplicate tree" in the mapping editor? Here I got another exception?
    Many thanks for any help!
    Regards,
    Carsten

    Hi Udo,
    you gave the final hint, indeed I used a XML file that was not evidently not compliant to the message type I created (even though it had been validated by Altova XMLspy).
    From now onwards I only use the "Create instance" function of the test tool to create the XML body of my test messages...
    Thanks a lot,
    and best regards,
    Carsten

  • Compare two table columns

    hi all,
    i am using db10g.
    my task is to compare two table's data for example
    table1 is having
    col1 col2 col3
    a b c
    e f g
    table2 is
    col4 col5 col6
    a e c
    e f g
    so i have to compare col1 first record and col4 first record.
    in otherwords first table first column first item with second table first table first value and so on.
    for ex: a= a
    b= e
    c= c etc
    how can i acheive this?
    both are database tables.
    i cannot use minus function because data types are different for the corresponding column
    how can i compare it?
    Thanks..
    Edited by: user13329002 on Jan 13, 2011 1:09 AM

    Hi,
    Try this
    select
        case
            when a.col1 = b.col1 then 'EQUAL' else 'NOT EQUAL' end column1,
        case
            when a.col2 = b.col2 then 'EQUAL' else 'NOT EQUAL' end column2,
        case
            when a.col3 = b.col3 then 'EQUAL' else 'NOT EQUAL' end column3 
    from (select col1,col2,col3,rownum rn from table1) a,
                                (select col1,col2,col3,rownum rn from table2) b where a.rn = b.rn Try to see how you order the rows of the two tables.
    cheers
    VT

  • Missing PRCTR from Number Range Table

    Hi There,
    I need to find out all the the available profit centre which not created yet ie no profit centre  available in CEPC from the number range table NRIV.
    I tried the FM number_get_next but nothing happened.
    Details given below:
    In the NRIV table I have got say following details :
    Object          From Number     To Number    etc     etc
    Y_PC          0000000001     0000000100
    Y_PC          0000000101     0000000150
    Y_PC          0000000160     0000000200
    Profit Centre Created Available in CEPC say
    In the no range 1 to 100
         0000000001
                    0000000002
                    0000000003 (Not created)
         0000000004
                    5 ,6 & 7 missing
         0000000008
    In the no range 101 to 150
         0000000101
                    0000000102
         0000000103
                    0000000104 (Not created)
         0000000105
                    6,7....upto 149...(Not created)
         0000000150
    Similarly in other ranges few nos missing
    My requirement is to read the NRIV table take all  from number and to number into an internal table  and for those nos find the  missing nos from the CEPC table .
    Appreciate your help.
    Regards.
    Sunanda

    Resolved by myself !!
    Cheers.

  • Problem in selection from data base with RANGE-TABLE.

    Dear folks,
                   I am facing weird problem with range table in selection query.I have problem with bold part of code.Here when i give input to both ranges r_salesno,r_brandid then and the selection occurs ,when i put black in one of those it does not work.I haev passed Empty table to range if no inpiut in elements..although it does not work..I dont know why it is happening...By the i m using this code in Webdynpro ABAP.Please help points will be awarded..
    if  Stru_Cn_Selcrtr-ca_slsrl is not initial.
        wa_salesno-sign = 'I'.
        wa_salesno-option = 'EQ'.
        wa_salesno-LOW = Stru_Cn_Selcrtr-ca_slsrl.
        APPEND wa_salesno TO r_salesno.
        CLEAR : wa_salesno .
      else.
        wa_salesno-sign = 'I'.
        wa_salesno-option = 'EQ'.
        wa_salesno-LOW = space.
        APPEND wa_salesno TO r_salesno.
         CLEAR : wa_salesno .
      endif.
      if  Stru_Cn_Selcrtr-ca_brand is not initial.
        wa_brandid-sign = 'I'.
        wa_brandid-option = 'EQ'.
        wa_brandid-LOW = Stru_Cn_Selcrtr-ca_brand.
        APPEND  wa_brandid TO  r_brandid.
        CLEAR :  wa_brandid .
      else.
        wa_brandid-sign = 'I'.
        wa_brandid-option = 'EQ'.
         wa_brandid-LOW = space.
        APPEND wa_brandid  TO  r_brandid.
        CLEAR : wa_brandid  .
      endif.
    *If any of these are given then select data accordingly.
        <b>select * from ZNSLVWHDIMMD_LCL
                 into corresponding fields of table IT_VIEW
                 WHERE SALESRLNO in  r_salesno
    *             and   CREATEDBY in It_crtby_selopt
    *            and   STARTDATE in It_validfrm_selopt
    *             and   ENDDATE   in It_validto_selopt
    *             and  STATUS     in It_status_selopt1
                 and   BRANDID   in r_brandid.
    *             and   MODELNO   in It_model_selopt.</b>

    Hello Nirad
    Your coding is problematic. I assume that field SALESRLNO (of table ZNSLVWHDIMMD_LCL) probably means sales number (or sales order) and, thus, must not be empty. If this is correct then the first IF statement is probably wrong:
    if  Stru_Cn_Selcrtr-ca_slsrl is not initial.
        wa_salesno-sign = 'I'.
        wa_salesno-option = 'EQ'.
        wa_salesno-LOW = Stru_Cn_Selcrtr-ca_slsrl.
        APPEND wa_salesno TO r_salesno.
        CLEAR : wa_salesno .
      else.
        REFRESH: r_salesno.  " means: select all sales numbers
    " NOTE: If you fill the range like below this means that only sales order
    "            with no sales number (= ' ', space) should be select.
    " Thus, there will never be any sales order selected.
    *   wa_salesno-sign = 'I'.
    *   wa_salesno-option = 'EQ'.
    *   wa_salesno-LOW = space.
    *   APPEND wa_salesno TO r_salesno.
    *    CLEAR : wa_salesno .
      endif.
    The same logic applies to the second IF statement. If you want to select all BRANDID if none has been provided as selection criteria then code:
      if  Stru_Cn_Selcrtr-ca_brand is not initial.
        wa_brandid-sign = 'I'.
        wa_brandid-option = 'EQ'.
        wa_brandid-LOW = Stru_Cn_Selcrtr-ca_brand.
        APPEND  wa_brandid TO  r_brandid.
        CLEAR :  wa_brandid .
      else.
        REFRESH: r_brandid.  " means: select all BRANDID
    *    wa_brandid-sign = 'I'.
    *    wa_brandid-option = 'EQ'.
    *     wa_brandid-LOW = space.
    *    APPEND wa_brandid  TO  r_brandid.
    *    CLEAR : wa_brandid  .
      endif.
    Regards
      Uwe

  • Avoid SUPPLEMENTAL LOG while comparing 2 tables using dbms_metadata_diff()

    Hi,
    I am using ORACLE DATABASE 11g R2. I am using a inbuilt package dbms_metadata_diff.compare_alter() to compare 2 tables and get the alter statements for them. I have applied GOLDEN GATE on one of the Schema's and as per the process we need to apply SUPPLEMENTAL LOGGING on the database. So when 2 tables are compared it also gives me the difference about the SUPPLEMENTAL LOG. I want to compare 2 tables but it should avoid the difference of the SUPPLEMENTAL LOG group.
    Below is a part of code which I use :-
    dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM,  -- Parameter to keep the DDL pretty.
                                                'PRETTY',
                                                TRUE);
              dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, -- To put an SQL terminator(;) at the end of SQL.
                                                'SQLTERMINATOR',
                                                TRUE);
              dbms_metadata.set_transform_param(dbms_metadata.session_transform, -- Not to consider the SEGMENT attributes for comparison.
                                                'SEGMENT_ATTRIBUTES',
                                                false);
              dbms_metadata.set_transform_param(dbms_metadata.session_transform, -- Not to include the STORAGE clause.
                                                'STORAGE',
                                                false);
              dbms_metadata.set_transform_param(dbms_metadata.session_transform, -- Not to include the TABLESPACE Info.
                                                'TABLESPACE',
                                                false);
    -- Here I want some parameter which should avoid the SUPPLEMENTAL LOG group difference.
    SELECT dbms_metadata_diff.compare_alter('TABLE',    -- Compare 2 tables with respect to above parameters and give output as ALTER STATEMENTS.
                                                      V_OBJECT_NAME,
                                                      V_OBJECT_NAME,
                                                      V_DEST_SCHEMA_NAME,
                                                      V_SOURCE_SCHEMA_NAME,
                                                      null,
                                                      'DBLINK_TEMP')
                into V_TAB_DIFF_ALTER
                FROM dual;In the current case for all tables i get the output as below :- (sample table output)
    ALTER TABLE "BANK"."BA_EOD_SHELL_DRIVER" DROP SUPPLEMENTAL LOG GROUP GGS_BA_EOD_SHELL_DR_199689;I don't want such alter statements in my output as i am not going to execute this on the schema , because i need SUPPLEMENTAL LOG for GOLDEN GATE.
    Please suggest me some solution on it.
    Thanks in advance.

    It probably won't answer the question...
    The DBMS_METADATA_DIFF.COMPARE_ALTER function will return a CLOB containing all the ALTER TABLE statements.
    I have noticed that you hold your resoult in V_TAB_DIFF_ALTER variable. Why don't you search what you need and remove it?
    "The DBMS_LOB package provides subprograms to operate on BLOBs, CLOBs, NCLOBs, BFILEs, and temporary LOBs. You can use DBMS_LOB to access and manipulation specific parts of a LOB or complete LOBs."

Maybe you are looking for