Dynamic BD table name with inner join.

Hi experts,
I'm trying to do something like  this:
if syst-datum(4)   > s_budat-high(4) or
   syst-datum4(2) > s_budat-high4(2).
  tabname = 'MBEWH'.
else.
  tabname = 'MBEW'.
endif.
select m1matnr m1mtart m3~bwkey
  from ( mara as m1
      inner join marc as m2
        on m1matnr = m2matnr
      inner join (tabname) as m3
        on m1matnr = m3matnr and
           m2werks = m3bwkey )
  where m1~matnr in s_matnr and
        m1~lvorm in s_lvorm and
        m1~mstae in s_mstae and
        m2~werks in s_werks.
endselect.
I get the following error: Incorrect expression "1000  %_#T953" in WHERE condition.          
Should I forget the inner join with one dynamic table or is it possible to do?
Thanks in advance, best regards,
André Costa

Hi experts,
I'm trying to do something like  this:
if syst-datum(4)   > s_budat-high(4) or
   syst-datum4(2) > s_budat-high4(2).
  tabname = 'MBEWH'.
else.
  tabname = 'MBEW'.
endif.
select m1matnr m1mtart m3~bwkey
  from ( mara as m1
      inner join marc as m2
        on m1matnr = m2matnr
      inner join (tabname) as m3
        on m1matnr = m3matnr and
           m2werks = m3bwkey )
  where m1~matnr in s_matnr and
        m1~lvorm in s_lvorm and
        m1~mstae in s_mstae and
        m2~werks in s_werks.
endselect.
I get the following error: Incorrect expression "1000  %_#T953" in WHERE condition.          
Should I forget the inner join with one dynamic table or is it possible to do?
Thanks in advance, best regards,
André Costa

Similar Messages

  • Dynamic Table name in Inner Join in  4.6c

    data: tab1(10) type c value 'MARA',
            tab2(10) type c value 'MAKT'.
    data: dbtab1(10) type c,
             dbtab2(10) type c .
    dbtab1 = tab1. 
    dbtab2 = tab2. 
    DATA: BEGIN OF itab occurs 0,
               matnr TYPE mara-matnr,
               maktx type makt-maktx,
    END OF itab.
    DATA: column_syntax TYPE string,
                dbtab_syntax TYPE string.
    PARAMETERS: p_matnr TYPE mara-matnr.
    dbtab_syntax = '( (dbtab1) AS t1 '
    &' INNER JOIN (dbtab2) AS t4 ON t1MATNR = t4MATNR )'.
    SELECT  matnr maktx
    FROM (dbtab_syntax)
    INTO TABLE itab  WHERE t4~matnr   = p_matnr.
    Got the following error:
    "A table name, specified in an SQL command, is unknown"
    It seems not able to read dynamic table name in dbtab_syntax.
    thanks
    anya
    Moderation Message: Duplicate Post.
    Edited by: kishan P on Nov 29, 2010 11:17 AM

    Hi,
    Check this link.
    [http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb39c4358411d1829f0000e829fbfe/frameset.htm]
    [Re: accessing dynamic internal table's fields??;
    hope it'll help u.
    Regards,
    Sneha.
    Edited by: sneha kumari on Jun 18, 2009 1:57 PM

  • Select with inner join

    hi friends,
    can we use where clause in select statement with inner join.
    i am using following code which gives error (The column name "WERKS" has two meanings . .).
      SELECT AMATNR ACHARG AERSDA BMENGE B~MEINS
          FROM MCHA AS A INNER JOIN CHVW AS B
          ON ACHARG = BCHARG
          INTO TABLE T_OUTPUT1
          WHERE WERKS = PLANT AND CHARG = P_CHARG.
    thanks.

    Yes u can  use where clause in select statement with inner join.
    SELECT AMATNR ACHARG AERSDA BMENGE B~MEINS
    FROM MCHA AS A INNER JOIN CHVW AS B
    ON ACHARG = BCHARG
    INTO TABLE T_OUTPUT1
    WHERE WERKS = PLANT AND CHARG = P_CHARG.
    " mention  the table name in where condition also like awerks or bwerks.
    egards
    Rajendra

  • Dynamic physical table name vs. Cache

    Hello, Experts!
    I'm facing quite an interesting problem. I have two physical tables with the same structure but with a different data. Requirement is to show same reports with one or another table. Idea is to have dynamically changed physical table name with session variable usage. Session variable can be change in UI so it was working until cache was turned on. When cache is turned on logical statements sent to OBI backend are the same even for different values of session variable that stores physical table name. Once cache is populated every users will get values from cache. This is possible source of discrepancy because some users might run reports with tableA values and some with tableB values.
    Are there any options to set OBI to use data related to proper physical table name (i.e. accordingly to session variable value)? Model clone is not an option because it will be way to hard and complex to maintain both, beside same reports need to work sometimes with one table name and sometimes with other...
    PS. Cache is set to be common for all users.
    Lucas

    thank you, I've found another way to make it running. In fact there are two ways of doing it: filter LTS and have all data filtered from single table with session variable or use fragmentation content also with session variable.
    Now tricky part is to set variable from UI, currently I'm using issue raw sql: call NQSSetSessionValue( 'String SV_SIGNOFF=aaa;' ) but I have to figure out how to change session non system variable value without need of administrator user rights.
    There is GoURL method, but it's not working...
    2. Add In ORACLE_HOME/bifoundation/web/display/authenticationschemas.xml
    <RequestVariable source="url" type="informational" nameInSource="lang"
    biVariableName="NQ_SESSION.LOCALE" />
    inside the top <AuthenticationSchemaGroup> </AuthenticationSchemaGroup> tag

  • SUBQUERY with INNER JOIN in ABAP

    Hi Expert
    How Can I write SUBQUERY with INNER JOIN in ABAP.
    thanks

    Thanks Sidhharth for your Respose
    Actually I need data from VBAP, VBAK, VBUP, VBUK and VBKD with all functional validation satisfied for a sales order item data. The requirement is to report all item data with other information from table VBAK, VBUP, VBUK and VBKD in a corresponding record with ALL data in VBAP.
    Your help is appriciated.
    see the below query for reference
    select   alias_vbap~vbeln from  vbap as
    alias_vbap inner join vbak as alias_vbak
    on  alias_vbapvbeln eq  alias_vbakvbeln
    "and  alias_vbak~bukrs_vf eq '2400'
    inner join vbuk as alias_vbuk
    on alias_vbukvbeln = alias_vbapvbeln
    inner join vbup as alias_vbup
    on alias_vbupvbeln = alias_vbapvbeln
    and alias_vbupposnr = alias_vbapposnr
    left OUTER join veda as alias_veda
    on alias_vedavbeln = alias_vbapvbeln
    and alias_vedavposn = alias_vbapposnr
    left outer join vbkd as alias_vbkd
    on alias_vbkdvbeln = alias_vbapvbeln
    and alias_vbkdposnr = alias_vbapposnr

  • How to find the column name and table name with a value

    Hi All
    How to find the column name and table name with "Value".
    For Example i have value named "Srikkanth" This value will be stored in one table and in one column i we dont know the table how to find the table name and column name
    Any help is highly appricatable
    Thanks & Regards
    Srikkanth.M

    2 solutions by Michaels (the latter is 11g upwards only)...
    michaels>  var val varchar2(5)
    michaels>  exec :val := 'as'
    PL/SQL procedure successfully completed.
    michaels>  select distinct substr (:val, 1, 11) "Searchword",
                    substr (table_name, 1, 14) "Table",
                    substr (t.column_value.getstringval (), 1, 50) "Column/Value"
               from cols,
                    table
                       (xmlsequence
                           (dbms_xmlgen.getxmltype ('select ' || column_name
                                                    || ' from ' || table_name
                                                    || ' where upper('
                                                    || column_name
                                                    || ') like upper(''%' || :val
                                                    || '%'')'
                                                   ).extract ('ROWSET/ROW/*')
                       ) t
    --        where table_name in ('EMPLOYEES', 'JOB_HISTORY', 'DEPARTMENTS')
           order by "Table"or
    SQL> select table_name,
           column_name,
           :search_string search_string,
           result
      from cols,
           xmltable(('ora:view("'||table_name||'")/ROW/'||column_name||'[ora:contains(text(),"%'|| :search_string || '%") > 0]')
           columns result varchar2(10) path '.'
    where table_name in ('EMP', 'DEPT')
    TABLE_NAME           COLUMN_NAME          SEARCH_STRING        RESULT   
    DEPT                 DNAME                ES                   RESEARCH 
    DEPT                 DNAME                ES                   SALES    
    EMP                  ENAME                ES                   JONES    
    EMP                  ENAME                ES                   JAMES    
    EMP                  JOB                  ES                   SALESMAN 
    EMP                  JOB                  ES                   SALESMAN 
    EMP                  JOB                  ES                   SALESMAN 
    EMP                  JOB                  ES                   PRESIDENT
    EMP                  JOB                  ES                   SALESMAN 
    9 rows selected.

  • Select Query with Inner Join

    Dear Experts,
    I have writen a inner join code with MKPF and MSEG which taking too much time, while I have used index.
    Indexes are:
    MSEG
    MATNR
    WERKS
    LGORT
    BWART
    SOBKZ
    MKPF
    BUDAT
    MBLNR
    My Select Query is :
      SELECT B~MATNR
                   B~MAT_KDAUF
                   B~MAT_KDPOS
                   B~BWART
                   B~MENGE
                   B~MEINS
                   B~AUFNR
        INTO TABLE IT_MSEG
        FROM MKPF AS A
          INNER JOIN MSEG AS B
             ON AMBLNR EQ BMBLNR
            AND AMJAHR EQ BMJAHR
        WHERE A~BUDAT IN BUDAT
          AND B~MATNR IN MATNR
          AND B~WERKS IN WERKS
          AND B~LGORT IN LGORT
          AND B~BWART IN BWART.

    hi,
    you can use  for all entries  it will work faster then joins
    About it:*
    FOR ALL ENTRIES WHERE
    Syntax
    ... FOR ALL ENTRIES IN itab WHERE ... col operator itab-comp ...
    Effect
    If the addition FOR ALL ENTRIES is specified before the language element WHERE, then the components comp of the internal table itab can be used as operands when comparing with relational operators.
    The internal table itab must have a structured line type and the component comp must be compatible with the column col.
    The logical expression sql_cond of the WHERE condition can comprise various logical expressions by using AND and OR. However, if FOR ALL ENTRIES is specified, there must be at least one Comparison with a column of the internal table itab, which can be specified either statistically or dynamically (Release 6.40 and higher). In a statement with a SELECTstatement with FOR ALL ENTRIES, the addition ORDER BY can only be used with the addition PRIMARY KEY.
    The whole logical expression sql_cond is evaluated for each individual line of the internal table itab. The resulting set of the SELECT statement is the union of the resulting sets from the individual evaluations. Duplicate lines are automatically removed from the resulting set. If the internal table itab is empty, the whole WHERE statement is ignored and all lines in the database are put in the resulting set.
    Notes
    In Release 6.10 and higher, the same internal table can be specified after FOR ALL ENTRIES and after INTO.
    The addition FOR ALL ENTRIES is only possible before WHERE conditions of the SELECT statement.
    Example
    Exporting all flight data for a specified departure city. The relevant airlines and flight numbers are first put in an internal table entry_tab, which is evaluated in the WHERE condition of the subsquent SELECT statement.
    PARAMETERS p_city TYPE spfli-cityfrom.
    TYPES: BEGIN OF entry_tab_type,
             carrid TYPE spfli-carrid,
             connid TYPE spfli-connid,
           END OF entry_tab_type.
    DATA: entry_tab   TYPE TABLE OF entry_tab_type,
          sflight_tab TYPE SORTED TABLE OF sflight
                           WITH UNIQUE KEY carrid connid fldate.
    SELECT carrid connid
           FROM spfli
           INTO CORRESPONDING FIELDS OF TABLE entry_tab
           WHERE cityfrom = p_city.
    SELECT carrid connid fldate
           FROM sflight
           INTO CORRESPONDING FIELDS OF TABLE sflight_tab
           FOR ALL ENTRIES IN entry_tab
           WHERE carrid = entry_tab-carrid AND
                 connid = entry_tab-connid.
    hope it will help you
    Rahul sharma
    Edited by: RAHUL SHARMA on Sep 11, 2008 8:10 AM

  • Help with inner join PLEASE IGNORE

    Hi I was doing a select with a subquery but I need that the where clause check to values so I couldn't get it so I decided to create a INNER JOIN
    Before
    insert into BPMTEMP (select * from ODS_VIEWER.BAN_EVENTOS_CONFIRMACION@DBLINK1 where id_solicitud and accion not in (select (id_solicitud, accion) from ODS_VIEWER.BAN_CONFIRMA_RESPUESTA@DBLINK1) and rownum <=200);but the problem with the inner join is that it doesn't accept me the external database source
    insert into BPMTEMP (select ODS_VIEWER.BAN_EVENTOS_CONFIRMACION@DBLINK1.*, ODS_VIEWER.BAN_CONFIRMA_RESPUESTA@DBLINK1.*
    from ODS_VIEWER.BAN_EVENTOS_CONFIRMACION@DBLINK1
    INNER JOIN ODS_VIEWER.BAN_CONFIRMA_RESPUESTA@DBLINK1
    ON [email protected]_solicitud = [email protected]_solicitud
    ON [email protected] = [email protected]
    AND rownum <=200); it shows an:
    ORA-02084:
         database name is missing a component
    Cause:      supplied database name cannot contain a leading '.', trailing '.' or '@', or two '.' or '@' in a row.
    how can I solve this????
    thanks for your help
    Edited by: Diego Guillen on 29/12/2009 11:14 AM

    Hi
    Please remove the @dblink stuff in the column descrptions or use a table alias. This should help.
    drop database link lokal;
    create database link lokal
       CONNECT TO whateveruserineed IDENTIFIED BY whateverthing
       USING 'lokal11g';
    select HR.COUNTRIES.*  from HR.COUNTRIES@lokal;
    select x.* from HR.COUNTRIES@lokal x;And as Dan Morgans says, pls. post you ? in the right forum next time :-))
    Mette

  • Select quer with inner join

    table
    can any please modify the query
    thanking in advance
    BEGIN OF t_initord OCCURS 0,
    vbeln LIKE vbak-vbeln, " Sales Order
    posnr LIKE vbap-posnr, " Sales Order Line Item
    auart LIKE vbak-auart, " Sales Order Type
    bezei LIKE tvakt-bezei, " Sales Order Type Text
    billdo Like vbrk-vbeln, "billing document number
    matnr LIKE vbfa-matnr, " Material
    maktx LIKE makt-maktx, " Material Description
    bstnk LIKE vbak-bstnk, " Customer PO number
    bukrs LIKE vbak-bukrs_vf, " Company Code..
    vkorg LIKE vbak-vkorg, " Sales Org
    vtweg LIKE vbak-vtweg, " Distribution Channel
    spart LIKE vbak-spart, " Division
    vkgrp LIKE vbak-vkgrp, " Sales Group
    augru LIKE vbak-augru, " Order Reason
    abgru LIKE vbap-abgru, " Reson for rejection
    kwmeng LIKE vbap-kwmeng, " Order Line quantit
    deliv LIKE likp-vbeln, " Delivery Number
    delit LIKE lips-posnr, " Delivery Number
    rfmng LIKE vbfa-rfmng, " Delivery Qty..
    vbtyp_n LIKE vbfa-vbtyp_n, " R12 Defect 8938.
    mrnkz LIKE vbkd-mrnkz, " Subsequent Invoicing
    docurr LIKE vbak-waerk, " Document Currency
    netwr LIKE vbap-netwr, " Line Item Amt in Doc curr
    ocdate LIKE vbak-aedat, " Order change date
    objnr LIKE vbap-objnr, " Object number
    rad LIKE sy-datum, " Requested Arrival Date
    submi LIKE ekko-submi, " Collective number
    plant1 LIKE vbap-werks, " Supplying Plant
    ernam LIKE vbak-ernam, " Order Created by
    erdat LIKE vbak-erdat, " Order Created on
    lifnr LIKE ekko-lifnr, " Vendor
    soldto LIKE vbak-kunnr, " Sold-to Party
    shipto LIKE vbak-kunnr, " Ship-to Party
    etenr LIKE vbep-etenr, " Sales Order schedule line
    bmeng LIKE vbep-bmeng, " Order Sch Line quantity
    vrkme LIKE vbap-zieme, " Sales Order UOM
    cad LIKE sy-datum, " Confirmed Arrival Date
    ktokk LIKE lfa1-ktokk, " Vendor account group
    docurramt LIKE vbap-netwr, " Document Currency Amount
    locurr LIKE vbak-waerk, " Local Currency
    locurramt LIKE vbap-netwr, " Local Currency Amount
    werks1 LIKE vbap-werks, " Supplying Plant
    werks_name1 LIKE t001w-name1, " Plant description
    lifnr_name1 LIKE lfa1-name1, " Name of the Vendor
    stat TYPE g_stat_typ, " Status Code
    lstatus TYPE g_stext_typ, " Last Status
    soappr TYPE tj30t-txt30, " Sales Order Approval
    bdnum LIKE vbfa-vbeln, " Billing doc number
    bdlin LIKE vbrp-posnr, " Billing Item
    uecha_b LIKE vbrp-uecha, " Item of Batch split
    uecha_d LIKE lips-uecha, " Item of Batch split
    END OF t_initord.
    This is the internal table
    to get the details wrote a select query
    can any one please correct the select query
    SELECT t1vbeln t2posnr t1auart t4bezei
    t2matnr t5maktx
    t1bstnk t1bukrs_vf t1vkorg t1vtweg t1spart t1vkgrp
    t1augru t2abgru t2kwmeng t8vbeln
    t8posnn t8rfmng t8vbtyp_n t7mrnkz t2waerk t2netwr
    t1aedat t1objnr t1vdatu t1submi t2werks t1ernam t1~erdat
    t6lifnr t1kunnr t9~kunnr
    INTO TABLE t_initord
    FROM vbak AS t1
    INNER JOIN vbap AS t2
    ON t1vbeln EQ t2vbeln
    LEFT OUTER JOIN tvakt AS t4
    ON t1auart EQ t4auart
    AND t4~spras EQ c_en
    LEFT OUTER JOIN makt AS t5
    ON t2matnr EQ t5matnr
    AND t5~spras EQ c_en
    LEFT OUTER JOIN vbpa AS t9
    ON t1vbeln EQ t9vbeln
    AND t9~parvw EQ c_we
    LEFT OUTER JOIN ekko AS t6
    ON t1submi EQ t6ebeln
    LEFT OUTER JOIN vbkd AS t7
    ON t1vbeln EQ t7vbeln AND
    t7~posnr EQ c_initposnr
    LEFT OUTER JOIN vbfa AS t8
    ON t2vbeln EQ t8vbelv AND
    t2posnr EQ t8posnv
    WHERE t1~vbeln IN s_slord
    AND t1~vkbur IN s_sloff
    AND t1~vkgrp IN s_slgrp
    AND t1~kunnr IN s_custag
    AND t1~auart IN s_ortyp
    AND t1~vkorg IN s_slorg
    AND t1~vtweg IN s_disch
    AND t1~spart IN s_divi
    AND t1~erdat IN s_date
    AND t1~bukrs_vf IN s_ccode
    AND t2~ernam IN s_slcre.
    i need to modify the above query to get the additional information into the above table
    billing doument number
    document currency
    document currency amount
    billed quantity
    sold to country
    ship to country

    You can also refer to this code... for making your code better..
    SELECT MATNR
           WERKS
           DISMM
           DISPO
           BESKZ INTO TABLE I_MARC FROM MARC
                 WHERE WERKS IN S_WERKS  AND BESKZ = 'F' AND DISMM <> 'ND'.
      IF NOT I_MARC IS INITIAL.
      SELECT MATNR
             MAKTX INTO TABLE I_MAKT FROM MAKT
                   FOR ALL ENTRIES IN I_MARC
                   WHERE MATNR = I_MARC-MATNR.
      ENDIF.
    REFRESH I_MDPS.
    REFRESH I_MDEZ.
    REFRESH I_MT61D.
    REFRESH I_MDPS2.
    REFRESH I_MDEZ2.
    LOOP AT I_MARC INTO WA_MARC.
    CALL FUNCTION 'MD_STOCK_REQUIREMENTS_LIST_API'
      EXPORTING
        MATNR                          = WA_MARC-MATNR
        WERKS                          = WA_MARC-WERKS
    TABLES
       MDEZX                           = I_MDEZ
    EXCEPTIONS
       MATERIAL_PLANT_NOT_FOUND       = 1
       PLANT_NOT_FOUND                = 2
       OTHERS                         = 3
    LOOP AT I_MDEZ.
       I_MDEZ2-MATNR = WA_MARC-MATNR.
       I_MDEZ2-WERKS = WA_MARC-WERKS.
       MOVE-CORRESPONDING I_MDEZ TO I_MDEZ2.
       APPEND I_MDEZ2.
    ENDLOOP.
    CLEAR I_MDEZ.
    CLEAR I_MDEZ2.
      ENDLOOP.
    Deleting teh records from the internal table which are
    nither purchase order nor purchase requisition.
    if pur_ord = 'X' and Pur_req = 'X'.
      delete i_mdez2 where delkz <> 'BA' and delkz <> 'BE'.
    endif.
    if pur_ord = 'X' and Pur_req <> 'X'.
      delete i_mdez2 where delkz <> 'BE'.
    endif.
    if pur_req = 'X' and pur_ord <> 'X'.
      delete i_mdez2 where delkz <> 'BA'.
    endif.
    Populating the final internal table to be displayed.
    Sort i_mdez2 by matnr werks.
    SORT I_MAKT BY MATNR.
      LOOP AT I_MDEZ2 WHERE LIFNR IN S_LIFNR.
              wa_final-werks = i_mdez2-werks.
              WA_FINAL-LIFNR = I_MDEZ2-LIFNR.
              WA_FINAL-EXTRA = I_MDEZ2-EXTRA.
              WA_FINAL-MNG01 = I_MDEZ2-MNG01.
              WA_FINAL-AUSKT = I_MDEZ2-AUSKT.
              WA_FINAL-UMDAT = I_MDEZ2-UMDAT.
              WA_FINAL-WERKS = I_MDEZ2-WERKS.
              WA_FINAL-MATNR = I_MDEZ2-MATNR.
              wa_final-delkz = i_mdez2-delkz.
    For Message to be displayed with the Purchase Order and Purchase Requisition.
              PERFORM TEXT_EXCEPTION.
              READ TABLE I_MAKT INTO WA_MAKT WITH KEY MATNR = WA_FINAL-MATNR BINARY SEARCH.
              IF SY-SUBRC = 0.
                WA_FINAL-MAKTX = WA_MAKT-MAKTX.
              ENDIF.
           APPEND WA_FINAL TO I_FINAL .
      ENDLOOP.
        IF SY-SUBRC <> 0.
           MESSAGE I058.
           leave program.
        ENDIF.
    Selecting the Purchase Organisation from the EKKO table.
    if not i_final is initial.
      SELECT EBELN EKORG LIFNR INTO TABLE I_EKKO FROM EKKO
             FOR ALL ENTRIES IN I_FINAL
             WHERE LIFNR = I_FINAL-LIFNR.
    Selecting the name of the vendor from the LFA1 table.
      select lifnr name1 into table i_lfa1 from lfa1
             for all entries in i_final
             where lifnr = i_final-lifnr.
    Selecting the current date from the eban table.
       select matnr lfdat into table i_eban from eban
            for all entries in i_final
            where matnr = i_final-matnr." and bnfpo = i_ekpo-bnfpo.
    endif.
    if not i_ekko is initial.
    Selecting the Unit Price from EKPO for finding the Extended amount.
      SELECT EBELN ebelp NETPR MATNR  banfn bnfpo INTO TABLE I_EKPO FROM EKPO
             FOR ALL ENTRIES IN I_EKKO
             WHERE EBELN = I_EKKO-EBELN.
    endif.
    if not i_ekpo is initial.
    Selecting the current date from the Eket table.
    select ebeln ebelp eindt into table i_eket from eket
           for all entries in i_ekpo
           where ebeln = i_ekpo-ebeln and ebelp = i_ekpo-ebelp.
    endif.
    *Sorting the internal tables.
    SORT I_EKKO BY LIFNR.
    sort i_lfa1 by lifnr.
    SORT I_EKPO BY MATNR.
    sort i_eket by ebeln ebelp.
    sort i_eban by matnr.
      LOOP AT I_FINAL INTO WA_FINAL.
        READ TABLE I_EKKO INTO WA_EKKO WITH KEY LIFNR = WA_FINAL-LIFNR.
           WA_FINAL-EKORG = WA_EKKO-EKORG.
          wa_final-ebeln = wa_ekko-ebeln.
         read table i_lfa1 into wa_lfa1 with key lifnr = wa_final-lifnr.
           wa_final-name1 = wa_lfa1-name1.
           READ TABLE I_EKPO INTO WA_EKPO WITH KEY MATNR = WA_FINAL-MATNR.
             wa_final-ebelp = wa_ekpo-ebelp.
             WA_FINAL-NETPR = WA_EKPO-NETPR.
           if wa_final-delkz = 'BA'.
             read table i_eban into wa_eban with key matnr = wa_final-matnr.
             wa_final-dat00 = wa_eban-lfdat.
           endif.
           if wa_final-delkz = 'BE'.
             read table i_eket into wa_eket with key ebeln = wa_final-ebeln ebelp = wa_final-ebelp.
              wa_final-dat00 = wa_eket-eindt.
           endif.
           WA_FINAL-EXTND_AMOUNT = WA_FINAL-MNG01 * WA_FINAL-NETPR.
        MODIFY I_FINAL FROM WA_FINAL TRANSPORTING EKORG name1 dat00 EXTND_AMOUNT.
      ENDLOOP.
    In this I have taken many internal tables... according to the database table I am extracting from .. then I am bringing all the record in the final internal table which will be containing teh records from all the internal table that i have used..
    Regards,
    Jayant
    <b>Please award if helpful</b>

  • Trying to convert SELECT query to Update query with INNER JOINS

    Assalam O Alaikum!
    I've tried to convert this query of mine but failed.
    I wish to use it for update datasource in data GridView. I'm fetching data with it but converting it to update is not helping giving multiple errors.
    I tried to share the pic but they don't let me do so. Its actually a gridView with check boxes. check the item and update it..
    Here is the query. Please help me with that.
    <pre>
    SELECT [rightsId], [saveRights], [updateRights],
    [viewRights], [deleteRights], [printRights],
    [processRights], [verifyRights], [unProcessRights],
    [unVerifyRights], CONVERT(VARCHAR(100),tblGroup.groupId)as groupId, convert(varchar(100),tblmenu.[menuId])as menuid
    FROM [tblRights] inner join tblMenu ON
    tblMenu.menuId=tblRights.menuId INNER JOIN
    tblGroup ON tblGroup.groupId=tblRights.rightsId
    </pre>

    code is fine the above query works fine with the fetching(select) but when I try to write it with update it doesn't. Here is the asp code. I'm doing nothing with c# or vb.
      <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
                DataSourceID="ratGrid" AutoGenerateColumns="False"
                CssClass="GridViewStyle" Width="100%" AllowSorting="True" AutoGenerateEditButton="True" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2">
                <Columns>
                    <asp:BoundField DataField="rightsId" HeaderText="rightsId" ItemStyle-Width="75px" SortExpression="rightsId" Visible="False">
                    <ItemStyle Width="75px" />
                    </asp:BoundField>
                    <asp:CheckBoxField DataField="saveRights" HeaderText="Save" SortExpression="saveRights" />
                    <asp:CheckBoxField DataField="updateRights" HeaderText="Update" SortExpression="updateRights" />
                    <asp:CheckBoxField DataField="viewRights" HeaderText="View" SortExpression="viewRights" />
                    <asp:CheckBoxField DataField="deleteRights" HeaderText="Delete" SortExpression="deleteRights" />
                    <asp:CheckBoxField DataField="printRights" HeaderText="Print" SortExpression="printRights" />
                    <asp:CheckBoxField DataField="processRights" HeaderText="Process" SortExpression="processRights" />
                    <asp:CheckBoxField DataField="verifyRights" HeaderText="Verify" SortExpression="verifyRights" />
                    <asp:CheckBoxField DataField="unProcessRights" HeaderText="UnProcess" SortExpression="unProcessRights" />
                    <asp:CheckBoxField DataField="unVerifyRights" HeaderText="UnVerify" SortExpression="unVerifyRights" />
                    <asp:BoundField DataField="groupId" HeaderText="groupId" ReadOnly="True" SortExpression="groupId" Visible="False" />
                    <asp:BoundField DataField="menuid" HeaderText="menuid" SortExpression="menuid" ReadOnly="True" Visible="False" />
                </Columns>
                <RowStyle CssClass="RowStyle" BackColor="#FFF7E7" ForeColor="#8C4510" />
                <PagerStyle CssClass="PagerStyle" ForeColor="#8C4510" HorizontalAlign="Center" />
                <SelectedRowStyle CssClass="SelectedRowStyle" BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
                <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
                <HeaderStyle CssClass="HeaderStyle" BackColor="#A55129" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle CssClass="AltRowStyle" />
                <SortedAscendingCellStyle BackColor="#FFF1D4" />
                <SortedAscendingHeaderStyle BackColor="#B95C30" />
                <SortedDescendingCellStyle BackColor="#F1E5CE" />
                <SortedDescendingHeaderStyle BackColor="#93451F" />
            </asp:GridView>
            <asp:SqlDataSource ID="ratGrid"
                 runat="server"
                ConnectionString="<%$ ConnectionStrings:Conn_Str %>"
                SelectCommand="SELECT [rightsId], [saveRights], [updateRights],
    [viewRights], [deleteRights], [printRights],
    [processRights], [verifyRights], [unProcessRights],
    [unVerifyRights], CONVERT(VARCHAR(100),tblGroup.groupId)as groupId, convert(varchar(100),tblmenu.[menuId])as menuid
    FROM [tblRights] inner join tblMenu ON
    tblMenu.menuId=tblRights.menuId INNER JOIN
    tblGroup ON tblGroup.groupId=tblRights.rightsId"
               FilterExpression="menuId like '{0}%' and [groupId] like '{1}%'" >
                            <FilterParameters>
                <asp:ControlParameter ControlID="ddlmenu" Name="menu"
                        PropertyName="SelectedValue" Type="String" />
                <asp:ControlParameter ControlID="ddlgroup" Name="Country"
                        PropertyName="SelectedValue" Type="String" />
                </FilterParameters>
            </asp:SqlDataSource>
    Your table needs key(s) and you need to assign the key as DataKeys property for the GridView to make your UpDate and Delete work without coding.

  • Update statement with inner join issues

    I have searched for the answer on this and not really 100%....so figured I would ask...be nice :)
    what have I done wrong? Or am I just going about this the wrong way? I have looked at the oracle docs and I can't find an example showing me this. I do see where you SET values based on the select query results. I want to update the result of a query based on the join with static values....
    UPDATE table.a
    SET table.a_STATUS=9,table.a.INDEX = 'N'
    WHERE (SELECT table.a INNER JOIN table.b ON (table.a.COMPANY = table.b.COMPANY) AND (table.a.PO_NUMBER =table.b.PO_NUMBER) AND (table.a.PO_RELEASE =table.b.PO_RELEASE) AND (table.a.PO_CODE =table.b.PO_CODE) AND (table.a_STATUS=1) AND (table.b.CLOSED_FL = 'Y'));

    Hi,
    Welcome to the forum!
    user11360811 wrote:
    I have searched for the answer on this and not really 100%....so figured I would ask...be nice :)
    what have I done wrong? Or am I just going about this the wrong way? I have looked at the oracle docs and I can't find an example showing me this. I do see where you SET values based on the select query results. I want to update the result of a query based on the join with static values....
    UPDATE table.aThat's updating a table called A in a schema called TABLE (which is not a good name for any user-named object). Are those really your table and schema names? Perhaps you meant to have an underscore instead of a dot:
    UPDATE  table_ais much, much more reasonable. It means the table name is TABLE_A (a perfectly good name) in the current schema.
    SET table.a_STATUS=9,table.a.INDEX = 'N'
    WHERE ( ...There's a syntax error. You can't just say
    "WHERE (sub-query)"; it has to be
    "WHERE EXISTS (sub-suery)" or
    "WHERE (sub-query) = some_value" or
    "WHERE some_value IN (sub_query)", or something similar. WHERE can never be used without some kind of comparison operator, such as EXISTS, = or IN.
    SELECT table.a INNER JOIN table.b ON ...Here are some more syntax errors. The correct syntax for any query is
    SELECT  column_list
    FROM    table_name ...If table.a is your (first) table name, then you're missing the list of columns to SELECT, and the mandatory keyword FROM.
    (table.a.COMPANY = table.b.COMPANY) AND (table.a.PO_NUMBER =table.b.PO_NUMBER) AND (table.a.PO_RELEASE =table.b.PO_RELEASE) AND (table.a.PO_CODE =table.b.PO_CODE) AND (table.a_STATUS=1) AND (table.b.CLOSED_FL = 'Y'));Some general advice about UPDATE:
    If it's not obvious how to use UPDATE to do what you want, then there's a good chance that UPDATE is the wrong tool for the job. MERGE might be much simpler, and more efficient as well. This is especially likely if you need to join the table that's being updated to some other table.
    Whenever you have a problem, please post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) from all tables involved. That way, the people who want to help you can re-create the problem and test their ideas.
    Also post the results you want from that data, and an explanation of how you get those results from that data, with specific examples.
    Simplify the problem as much as possible. Remove all tables and columns that play no role in this problem.
    If you're asking about a DML statement, such as UPDATE, the CREATE TABLE and INSERT statements should re-create the tables as they are before the DML, and the results will be the contents of the changed table(s) when everything is finished.
    Always say which version of Oracle you're using (for example, 11.2.0.2.0).
    See the forum FAQ {message:id=9360002}
    Edited by: Frank Kulash on Jan 17, 2013 4:58 PM

  • Update statement with inner join

    Hello everyone. I am am trying to do an update statement with an inner join. I have found several examples of SQL statements that work with Sql server and mysql but they don't work in Oracle. Does anyone know the proper way in Oracle 10G? I am trying to update all fields in one table from fields in another table.
    for example:
    UPDATE table3
    SET
    TL3.name = TL2.name,
    TL3.status = TL2.status,
    TL3.date = TL2.date
    FROM table3 TL3 JOIN table2 TL2
    ON (TL3.unique_id = TL2.unique_id);
    any help will be appreciated.

    Hi,
    You can also use MERGE, like this:
    MERGE INTO  table3     dst
    USING   (
             SELECT  unique_id
             ,         name
             ,         status
             ,         dt          -- DATE is not a good column name
             FROM    table2
         )          src
    ON     (dst.unique_id     = src.unique_id)
    WHEN MATCHED THEN UPDATE
    SET     dst.name     = src.name
    ,     dst.status     = src.status
    ,     dst.dt          = src.dt
    ;Unlike UPDATE, this lets you avoid essentially doing the same sub-query twice: once in the SET clause and then again in the WHERE clause.
    Like UPDATE, you don't acutally join the table being changed (table3 in this case) to the other table(s); that is, the FROM clause of the suib-query does not include table3.
    Riedelme is right; you'll get better response to SQL questions like this in the SQL and PL/SQL forum:
    PL/SQL

  • Using a Variable for Table Name  with a cursor

    Hello All
    Is it possible to use a Parameter passed to a procedure as the table name
    in a cursor selection statment. I thought the below would work but I get
    a error. Does anyone have any ideas?? The Error is listed below to.
    Here's the code I just complied
    CREATE OR REPLACE PROCEDURE Dup_Add(NEWQATABLE IN VARCHAR2) IS
    CURSOR c1 IS SELECT MUNI,PROV FROM NEWQATABLE GROUP BY MUNI, PROV;
    c1rec c1%ROWTYPE;
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO c1rec;
    EXIT WHEN c1%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(c1rec.MUNI);
    END LOOP;
    CLOSE c1;
    END;
    Here is the errors
    LINE/COL ERROR
    3/8 PLS-00341: declaration of cursor 'C1' is incomplete or malformed
    3/15 PL/SQL: SQL Statement ignored
    3/38 PLS-00201: identifier 'NEWQATABLE' must be declared
    5/7 PL/SQL: Item ignored
    10/3 PL/SQL: SQL Statement ignored
    10/17 PLS-00320: the declaration of the type of this expression is
    incomplete or malformed
    12/3 PL/SQL: Statement ignored
    12/24 PLS-00320: the declaration of the type of this expression is
    incomplete or malformed
    LINE/COL ERROR
    Thanks
    Peter

    If you are going to have a table name or a column name as a parameter, then you have to open the cursor dynamically. The following example uses Native Dynamic SQL (NDS) to open a ref cursor dynamically. I also eliminated the group by clause, since it is intended for use with aggregate functions and you weren't using an aggregate function. Also notice that there are some other differences in terms of defining variables and fetching and so forth.
    SQL> CREATE TABLE test_table
      2  AS
      3  SELECT deptno AS muni,
      4         dname  AS prov
      5  FROM   dept
      6  /
    Table created.
    SQL> CREATE OR REPLACE PROCEDURE Dup_Add
      2    (newqatable IN VARCHAR2)
      3  IS
      4    TYPE cursor_type IS REF CURSOR;
      5    c1 cursor_type;
      6    c1muni NUMBER;
      7    c1prov VARCHAR2 (20);
      8  BEGIN
      9    OPEN c1 FOR 'SELECT muni, prov FROM ' || newqatable;
    10    LOOP
    11      FETCH c1 INTO c1muni, c1prov;
    12      EXIT WHEN c1%NOTFOUND;
    13      DBMS_OUTPUT.PUT_LINE (c1muni || ' ' || c1prov);
    14    END LOOP;
    15    CLOSE c1;
    16  END;
    17  /
    Procedure created.
    SQL> SHOW ERRORS
    No errors.
    SQL> SET SERVEROUTPUT ON
    SQL> EXECUTE dup_add ('test_table')
    10 ACCOUNTING
    20 RESEARCH
    30 SALES
    40 OPERATIONS
    PL/SQL procedure successfully completed.

  • Help with Inner Join query in SQL

    Hope someone can help with this, as this is quite an involved project for me, and I'm just about there with it.
    My table structure is :
    table_packages
    packageID
    package
    packageDetails
    etc
    table_destinations
    destinationID
    destination
    destinationDetails
    etc
    table_packagedestinations
    packageID
    destinationID
    ..so nothing that complicated.
    So the idea is that I can have a package details page which shows the details of the package, along any destinations linked to that package via the packagedestinations table.
    So this is the last part really - to get the page to display the destinations, but I'm missing something along the way....
    This is the PHP from the header, including my INNER JOIN query....
    PHP Code:
    <?php
    $ParampackageID_WADApackages = "-1";
    if (isset($_GET['packageID'])) {
      $ParampackageID_WADApackages = (get_magic_quotes_gpc()) ? $_GET['packageID'] : addslashes($_GET['packageID']);
    $ParamSessionpackageID_WADApackages = "-1";
    if (isset($_SESSION['WADA_Insert_packages'])) {
      $ParamSessionpackageID_WADApackages = (get_magic_quotes_gpc()) ? $_SESSION['WADA_Insert_packages'] : addslashes($_SESSION['WADA_Insert_packages']);
    $ParampackageID2_WADApackages = "-1";
    if (isset($_GET['packageID'])) {
      $ParampackageID2_WADApackages = (get_magic_quotes_gpc()) ? $_GET['packageID'] : addslashes($_GET['packageID']);
    mysql_select_db($database_connPackages, $connPackages);
    $query_WADApackages = sprintf("SELECT packageID, package, costperpax, duration, baselocation, category, dateadded, agerange, hotel, educational_tours, field_trips, corporate_outings, plant_visits, budget_package, rollingtours, teambuilding, description, offer FROM packages WHERE packageID = %s OR ( -1= %s AND packageID= %s)", GetSQLValueString($ParampackageID_WADApackages, "int"),GetSQLValueString($ParampackageID2_WADApackages, "int"),GetSQLValueString($ParamSessionpackageID_WADApackages, "int"));
    $WADApackages = mysql_query($query_WADApackages, $connPackages) or die(mysql_error());
    $row_WADApackages = mysql_fetch_assoc($WADApackages);
    $totalRows_WADApackages = mysql_num_rows($WADApackages);
    $colname_educationalDestinations = "1";
    if (isset($_GET['PackageID'])) {
      $colname_educationalDestinations = (get_magic_quotes_gpc()) ? packageID : addslashes(packageID);
    mysql_select_db($database_connPackages, $connPackages);
    $query_educationalDestinations = sprintf("SELECT * FROM destinations INNER JOIN (packages INNER JOIN packagedestinations ON packages.packageID = packagedestinations.packageID) ON destinations.destinationID = packagedestinations.destinationID WHERE packages.packageID = %s ORDER BY destination ASC", GetSQLValueString($colname_educationalDestinations, "int"));
    $educationalDestinations = mysql_query($query_educationalDestinations, $connPackages) or die(mysql_error());
    $row_educationalDestinations = mysql_fetch_assoc($educationalDestinations);
    $totalRows_educationalDestinations = mysql_num_rows($educationalDestinations);
    ?>
    And where I'm trying to display the destinations themselves, I have : 
    <table>
            <tr>
                     <td>Destinations :</td>
                </tr>
               <?php do { ?>
            <tr>
                 <td><?php echo $row_educationalDestinations['destination']; ?></td>
            </tr>
            <?php } while ($row_educationalDestinations = mysql_fetch_assoc($educationalDestinations)); ?>
    </table>
    If anyone could have a quick look and help me out that would be much appreciated - not sure if its my SQL at the top, or the PHP in the page, but either way it would be good to get it working. 
    Thanks.

    First off, you need to get the database tables so that there is a relationship between them.
    In fact, if there is a one to one relationship, then it may be better to store all of your information in one table such as
    table_packages
    packageID
    package
    packageDetails
    destination
    destinationDetails
    etc
    If there is a one to many relationship, then the following would be true
    packages
    packageID
    package
    packageDetails
    etc
    destinations
    destinationID
    packageID
    destination
    destinationDetails
    etc
    The above assumes that there are many destinations to one package with the relationship coloured orange.
    Once you have the above correct you can apply your query as follows
    SELECT *
    FROM packages
    INNER JOIN destinations
    ON packages.packageID = destinations.packageID
    WHERE packages.packageID = %s
    ORDER BY destination ASC
    The above query will show all packages with relevant destinations

  • Performance problem with inner join

    Hi
    With this Query
    SELECT *
    FROM TABLE1
    INNER JOIN TABLE2
    ON TABLE1.Col1 = TABLE2.Col2 AND TABLE1.Col2 = TABLE2.Col2
    WHERE TABLE1.Col3 = 'AB' AND
    TABLE2.Col4 = 'ZZ';
    TABLE1 have 6,000,000 of records
    TABLE2 have 9,000,000 of records
    when I run this query the result take 30 secs
    If I change the Optimizer_mode for 'RULE'
    the result take 4 secs
    All statistics is ok
    Primary Key exists for TABLE1 and TABLE2 base-on Col1 and Col2
    And index on Table1.Col3,Table1.Col4
    somebody can help me ?

    Analyze tables compute statistics
    and analyze index compute statistics
    I join explain plan
    STATEMENT_ID TIMESTAMP REMARKS OPERATION OPTIONS OBJECT_NODE OBJECT_OWNER OBJECT_NAME OBJECT_INSTANCE OBJECT_TYPE OPTIMIZER SEARCH_COLUMNS ID PARENT_ID POSITION COST CARDINALITY BYTES
    OTHER_TAG PARTITION_START PARTITION_STOP PARTITION_ID OTHER DISTRIBUTION CPU_COST IO_COST TEMP_SPACE
    WithRule1 2004-01-19 16:28:43 SELECT STATEMENT RULE 0
    WithRule1 2004-01-19 16:28:43 SORT AGGREGATE 1 0 1
    WithRule1 2004-01-19 16:28:43 NESTED LOOPS 2 1 1
    WithRule1 2004-01-19 16:28:43 TABLE ACCESS BY INDEX ROWID MICRODEV T088_INSC 1 ANALYZED 3 2 1
    WithRule1 2004-01-19 16:28:43 INDEX RANGE SCAN MICRODEV IX4_T088_INSC NON-UNIQUE ANALYZED 2 4 3 1
    WithRule1 2004-01-19 16:28:43 TABLE ACCESS BY INDEX ROWID MICRODEV T090_CPOS_DEM 2 ANALYZED 5 2 2
    WithRule1 2004-01-19 16:28:43 INDEX UNIQUE SCAN MICRODEV PK_T090_CPOS_DEM UNIQUE ANALYZED 2 6 5 1
    7 rows selected.
    STATEMENT_ID TIMESTAMP REMARKS OPERATION OPTIONS OBJECT_NODE OBJECT_OWNER OBJECT_NAME OBJECT_INSTANCE OBJECT_TYPE OPTIMIZER SEARCH_COLUMNS ID PARENT_ID POSITION COST CARDINALITY BYTES
    OTHER_TAG PARTITION_START PARTITION_STOP PARTITION_ID OTHER DISTRIBUTION CPU_COST IO_COST TEMP_SPACE
    WithChoose1 2004-01-19 16:29:37 SELECT STATEMENT CHOOSE 0 21680 21680 1 40
    21680
    WithChoose1 2004-01-19 16:29:37 SORT AGGREGATE 1 0 1 1 40
    WithChoose1 2004-01-19 16:29:37 HASH JOIN 2 1 1 21680 59050 2362000
    21680 3875000
    WithChoose1 2004-01-19 16:29:37 TABLE ACCESS BY INDEX ROWID MICRODEV T088_INSC 1 ANALYZED 3 2 1 7031 96727 2708356
    7031
    WithChoose1 2004-01-19 16:29:37 INDEX RANGE SCAN MICRODEV IX4_T088_INSC NON-UNIQUE ANALYZED 2 4 3 1 232 96727
    232
    WithChoose1 2004-01-19 16:29:37 TABLE ACCESS FULL MICRODEV T090_CPOS_DEM 2 ANALYZED 5 2 2 11224 5662693 67952316
    11224
    6 rows selected.

Maybe you are looking for

  • Starting up the OEM under W2K

    Hi, When starting up the OMS under W2k services or through the D:\oracle\ora81\BIN>oemctrl start oms command i get the following error: The OracleOraHome81ManagementServer service is starting......................... The OracleOraHome81ManagementServ

  • Export/import masters *with* adjustments?

    Hi, I've a Mac Pro with my main Aperture installation, and a Mac Book with an Aperture installation for when I'm travelling. I would like to export masters and the adjustments from the Aperture library in the Mac Book and import them in the Aperture

  • Bazzar Behavour? single user mode

    If I boot my G5 into Single User mode, the fans will slowly pick up speed and seem to go on getting faster and fastr. On exiting S/U mode and mounting the full desktop the fans will return to normal.- it's only in s-u mode that I have this problem...

  • Process does not appear in project explorer

    Hi all, I have a little problem with NWDS: I moved a process dc from one SC to another  and now the DCs does not appear anymore in the project explorer and thus I can not edit the process and it entities any further, Can anybody help me out here? Tha

  • ALARM RECURRENCE IN Q10

    The alarm system in the Q10 does not have HOURLY / DAILY / WEEKLY / MONTHLY / ANNUALLY. BlackBerry needs to address this problem ASAP and provide this; just as what exists on the Bold 9900.