Inner join on bkpf and bsid
Hi Experts ,
I want to do an inner join on bsid and bkpf tables in the select query . I want to order the result on the basis of cputm field in bkpf , that is why inner join on bkpf is req , rest all the fields are from bsid . But the requirement is that we should not select the cputm field in the select , it is only to be used for sorting the result of the select query . we are also using select * from bsid where ...... endselect . and not specific fields from bsid currently . Kindly let me know how to use the inner join on bkpf and bsid in this case .
Would reward all helpful answers .
Thanks
Hi Ankit,
First make a structure of the required fields.
TABLES : bkpf,bsid.
TYPES : BEGIN OF x_tab,
belnr like bkpf-belnr,
kunnr like bsid-kunnr,
bldat like bsid-bldat,
budat like bsid-budat,
waers like bsid-waers,
END OF x_tab.
DATA : itab type STANDARD TABLE OF x_tab,
wa_itab TYPE x_tab.
start-of-SELECTION.
SELECT bkpfbelnr bsidkunnr bsidbldat bsidbudat bsid~waers into table itab
FROM bkpf INNER JOIN bsid on bkpfbelnr = bsidbelnr and
bkpfbukrs = bsidbukrs and
bkpfgjahr = bsidgjahr.
Rewards Points, if useful.
Regards
Manoj Kumar
Edited by: Manoj Kumar on Dec 26, 2007 2:36 PM
Similar Messages
-
hi gurujis,
with your kind help i am learning something, but there is problem in each step. Now i am working with FI , i have came to know about two tables,
they are BKPF and BSID i have to join them and also produce output on the basis of 4 inputs like company no, coustomer no, currency and posting date. I need your help on this, can somebody send me the code to do this.
Also i would like to know is there any FM's to join two or more tables, if yes, please send me the name of that module with an complete example.
I need this , it is very urgent.
Thanks,
KHAN.hi Khan,
SELECT bkpf~...
bsid~...
INTO TABLE ...
FROM bkpf AS bkpf
INNER JOIN bsid AS bsid
ON bkpf~bukrs EQ bsid~bukrs
AND bkpf~gjahr EQ bsid~gjahr
AND bkpf~belnr EQ bsid~belnr
WHERE bkpf~bukrs EQ p_bukrs
AND bsid~kunnr IN s_kunnr
AND bkpf~waers EQ p_waers
AND bkpf~budat EQ p_budat.
hope this helps
ec -
Poor Performance on Inner Join of VBUP and VBAK
The following select is performing poorly, i.e., ST05 Execution is 1, Records is 246, but Time/Exec 94,499,272. Very poor.
SELECT VBUPVBELN VBUPPOSNR VBAK~KUNNR
FROM VBUP INNER JOIN VBAK
ON VBUPVBELN = VBAKVBELN
WHERE VBAK~VBTYP EQ 'C'
AND VBUP~LFSTA NE 'C'
AND VBUP~LFGSA NE 'C'.
VBUP has a custom index, Z01, on MANDT, LFSTA, LFGSA. There is no index on VBAK.
The Explain under ST05 indicates an Est. I/O cost of 73.94 for a Clustered Index Seek on [VBAK].[VBAK0], and an Est. I/O cost of 81.34 for an Index Seek on [VBUP].[VBUPZ01].
There is no index on VBAK, so I assume that's the first problem. But I don't understand why the index on VBUP does not appear to be helping. This the ST05 Explain: Index Seek WHERE: [PCI].[pci].[VBUP].[LFGSA] as [T_00].[LFGSA]<[@P4] OR [PCI].[pci].[VBUP].[LFGSA] as [T_00].[LFGSA]>[@P4] : [VBUP].MANDT EQ [@P1] ORDERED 1.
Is my index even being used? Any ideas how I can speed this up?
Thanks in advance for your help.
Bethtis the negative selection which is causing the problem..try to avoid selection using not equal to.
try this.
ranges : r_lfsta for vbup-lfsta.
r_lfsta-sign = 'I'.
r_lfsta-option = 'EQ'.
r_lfsta-low = ' '.
append r_lfsta.
r_lfsta-low = 'A'.
append r_lfsta.
r_lfsta-low = 'B'.
append r_lfsta.
do similar for r_lfgsa also.
SELECT VBUP~VBELN
VBUP~POSNR
VBAK~KUNNR
FROM VBUP INNER JOIN VBAK
into corresponding fields of table t_vbakvbup
ON VBUPVBELN = VBAKVBELN
WHERE VBAK~VBTYP EQ 'C'
AND VBUP~LFSTA in r_lfsta
AND VBUP~LFGSA in r_lfgsa.
or
SELECT VBUP~VBELN
VBUP~POSNR
VBAK~KUNNR
vbup~lfsta
vbup~lfgsa
FROM VBUP INNER JOIN VBAK
into corresponding fields of table t_vbakvbup
ON VBUPVBELN = VBAKVBELN
WHERE VBAK~VBTYP EQ 'C' .
delete t_vbakvbup where lfsta ne 'C'.
delete t_vbakvbup where lfgsa ne 'C'. -
Inner join in ABAP and exporting the data
Hi,
I want to use inner join in ABAP for retrieving data from 2 tables and export that data.How will i do it?Hi,
Refer following code
*--Select query to pick the data from table VBRK
VBRP and VBPA using inner join
SELECT a~vbeln "Billing document
a~fkdat "Billing date
a~fktyp "Billing category
a~fkart "Billing type
a~vtweg "Distribution channel
a~knumv "Number of doc condition
b~posnr "Billing item
b~matnr "Material Number
b~werks "Plant
b~vgbel "Referance
b~netwr "Net value of billing item
b~wavwr "Cost in document currency
c~kunnr "Partner function
FROM vbrk AS a
INNER JOIN vbrp AS b
ON avbeln EQ bvbeln
INNER JOIN vbpa AS c
ON bvbeln EQ cvbeln
AND bposnr EQ cposnr
INTO CORRESPONDING FIELDS OF TABLE it_vbrp
WHERE fkdat IN s_erdat
AND parvw EQ 'ZS'.
IF sy-subrc EQ 0.
*--Sort table by
SORT it_vbrp BY vgbel1.
ENDIF.
Regards,
Prashant -
Inner join between OBOE and OBOT
Hi all,
I am trying to query these tables, but for all the system displays data from these tables in only one windows, MSQL does not inner join this tables.
So, we are looking for the relation in these two tables, or between OBOE and JDT1/OJDT would be enought.
Thanks and regards,
Javier ZapataHi,
i'm not sure but you can try to use the table BOT1 (Bill of Exchange Transactions details).
Here you can find the field AbsEntry (related to the table OBOT) and the field BOENumber (related to OBOE table).
Hope this helps
Regards,
Fabio Salucci -
Issue with the inner join on EKKO and EKPO.
Dear All,
The report using this join takes a long time to execute.
Does this inner join have an issue?
Do i need to code this in a different way for lesser execution time?
Please give me your inputs.
SELECT
a~ebeln
b~ebelp
a~bukrs
a~bstyp
a~bsart
a~ekorg
a~ekgrp
a~kdatb
a~kdate
FROM ekko AS a JOIN ekpo AS b
ON aebeln = bebeln
INTO TABLE t_ekpo
WHERE
a~bukrs EQ p_bukrs
AND a~bstyp EQ c_k
AND a~bsart IN s_bsart
AND a~ekorg IN s_ekorg
AND a~ekgrp IN s_ekgrp
AND a~kdate GE s_fdate-low
AND a~loekz EQ space
AND b~loekz EQ space.
Regards,
SuryaD.Index EKKO~D consists top-down of BSTYP and BEDAT. BSTYP is already an EQ-condition in your selection, but not very selective (many rows with the same value). So including BEDAT should help in efficiently reducing the data that needs to be scanned for finding the relevant rows. However, just a new optional S_BEDAT select option that can be left empty by the user would not help, you must force a narrow selection (one month, one week, even one day? the less the better).
This is just a quick guess from my side, there might be other options that occur to you once you have analysed the available indexes. Sometimes alternative tables could be the solution, and even less sometimes introducing a new secondary index for a standard table might be the last option (takes up space and adds processing time to insert/update/delete operations).
Thomas -
Link for BUT000 table and ADRC in CRM and inner join is not working in PCUI
Hi Gurus,
Please tell me the link btween BUT000 and ADRC table. and i wrote one inner join between BUT000 and BUT0id table but it not working. I m in CRM 4.0 version working with PCUI.
select but000partner but000name_org1 but000name_org2 but000bus_sort1 but0id~parnter1
but0ididnumber from but000 inner join but0id on but0idpartner = but000~parnter
into corresponding fields of table it_result where partner in s_partner.
It is giving error as partner unknown from but000 table. I delcared everything and tried with alias names also.
please clarify me.
regards,
Ramakrishna.Hi Frederic,
thanks a lot. But is inner join between BUT000 and BUT0ID will work. for me it is not working. plesae see this code.
tables : but000,
but0id,
crmm_but_custno,
adrc.
types : begin of typ_but000,
partner type bu_partner,
name_org1 type BU_NAMEOR1,
name_org2 type BU_NAMEOR2,
bu_sort1 type BU_SORT1,
idnumber type BU_ID_NUMBER,
partner1 type bu_partner,
end of typ_but000.
data: lt_but000 type table of typ_but000,
ls_but000 like line of lt_but000.
*select-options : s_partnr for but000-partner.
start-of-selection.
select but000partner but000name_org1 but000name_org2 but000bu_sort1 but0id~parnter1
but0id~idnumber into corresponding fields of table lt_but000 from but000
inner join but0id on but0idpartner = but000parnter. " where partner in s_partner.
it is giving error as but000-partner is not know or but0id-partner not known.
So, i think if it not works then i should write two select stmts.
please clarify me.
i gave u rating.
thanks
ramakrishna. -
Need help with inner join and distinct rows
Hey Guys,
i have
1) BaseEnv Table
2) Link Table
3) BaseData Table
Link table has three columns Id,BaseEnvId,BaseDataId
the BaseEnvID is unique in the table where as BaseDataId can be repeated i.e multile rows of BaseEnv Table can point to same BaseData table row
Now i want to do BaseEnvTable inner join Link Table inner join BaseData Table and select 5 columsn ; Name,SyncName,Version,PPO,DOM from the BaseData table.. the problem is that after i do the inner join I get duplciate records..
i want to eliminate the duplicate records , can any one help me herePlease post DDL, so that people do not have to guess what the keys, constraints, Declarative Referential Integrity, data types, etc. in your schema are. Learn how to follow ISO-11179 data element naming conventions and formatting rules. Temporal data should
use ISO-8601 formats. Code should be in Standard SQL as much as possible and not local dialect.
This is minimal polite behavior on SQL forums. Now we have to guess and type, guess and type, etc. because of your bad manners.
CREATE TABLE Base_Env
(base_env_id CHAR(10) NOT NULL PRIMARY KEY,
Think about the name Base_Data; do you have lots of tables without data? Silly, unh?
CREATE TABLE Base_Data
(base_data_id CHAR(10) NOT NULL PRIMARY KEY,
Your Links table is wrong in concept and implementation. The term “link” refers to a pointer chain structure used in network databases and makes no sense in RDBMS. There is no generic, magic, universal “id” in RDBMS! People that do this are called “id-iots”
in SQL slang.
We can model a particular relationship in a table by referencing the keys in other tables. But we need to know if the relationship is 1:1, 1:m, or n:m. This is the membership of the relationship. Your narrative implies this:
CREATE TABLE Links
(base_env_id CHAR(10) NOT NULL UNIQUE
REFERENCES Base_Env (base_env_id),
base_data_id CHAR(10) NOT NULL
REFERENCES Base_Data (base_data_id));
>> The base_env_id is unique in the table where as base_data_id can be repeated I.e multiple rows of Base_Env Table can point [sic] to same Base_Data table row. <<
Again, RDBMS has no pointers! We have referenced an referencing tables. This is a fundamental concept.
That narrative you posted has no ON clauses! And the narrative is also wrong. There is no generic “name”, etc. What tables were used in your non-query? Replace the ?? in this skeleton:
SELECT ??.something_name, ??.sync_name, ??.something_version,
??.ppo, ??.dom
FROM Base_Env AS E, Links AS L, Base_Data AS D
WHERE ?????????;
>> I want to eliminate the duplicate records [sic], can any one help me here?<<
Where is the sample data? Where is the results? Please read a book on RDBMS so you can post correct SQL and try again.
--CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
in Sets / Trees and Hierarchies in SQL -
Hello Experts,
I'm trying to write a Inner join on VBAK and VBAP because i need to get data from both tables. When I try to execute the following code I'm getting a short dump "Error in module RSQL of the database Interface". Can anybody see what's wrong with this select.
begin of t_sales_order,
vbeln type vbak-vbeln, "Sales Order
auart type vbak-auart, "Order Type
audat type vbak-audat, "Shipment Creation date field
posnr type vbap-posnr, "Items
kdmat type vbap-matnr, "Lead Pin
cuobj type vbap-cuobj, "Configuration Object ID
end of t_sales_order,
data: lwa_sales_order type t_Sales_Order.
select single avbeln aaudat a~auart
bposnr bkdmat b~cuobj
into lwa_sales_order
from vbak as a inner join vbap as b
on avbeln = bvbeln
where b~kdmat = pv_pin_number.
Many thanks in advance.Hi
Your internal table fields sequences are not followed in Inner Join.
begin of t_sales_order,
vbeln type vbak-vbeln, "Sales Order
auart type vbak-auart, "Order Type
audat type vbak-audat, "Shipment Creation date field
posnr type vbap-posnr, "Items
kdmat type vbap-matnr, "Lead Pin
cuobj type vbap-cuobj, "Configuration Object ID
end of t_sales_order,
select single a~vbeln *a~auart* a~audat
b~posnr b~kdmat b~cuobj
into lwa_sales_order
from vbak as a inner join vbap as b
on a~vbeln = b~vbeln
where b~kdmat = pv_pin_number.
Please check the above code
Shiva -
SELECT order_head.ID col
FROM
order order_head
INNER JOIN customer customer_2 ON order_head.customerID = customer_2.ID
WHERE
order_head.orderDate BETWEEN '12/12/2001'
AND '12/12/2009'
AND order_head.ID <> 0
AND customer_2.LastName = 'smith'
AND order_head.status = 1
INNER JOIN (customer_2 INNER JOIN order_head ON customer_2.ID = order_head.customerID) ON cust_address.ID = customer_2.AddressID )
WHERE cust_address.postcode = 'NW1 9PQ'
Error : Incorrect syntax near the keyword 'INNER'.
The last bit in bold does not work the other stuff works correctly, what I am trying to do that does not work is find orders from customers with last name of smith and post code of 'NW1 9PQ', it is unfortunate that the tables are from a third party and cannot be changed and so I am stuck with the table structure. I am also trying to stick with joins.
I have tested this inner join in isolation and appears to work fine !!!!
Any suggestions or pointers will be most appriciated, thanks in advance....
BM[email protected] wrote:
Error : Incorrect syntax near the keyword 'INNER'.
The last bit in bold does not work the other stuff works correctly, what I am trying to do that does not work is find orders from customers with last name of smith and post code of 'NW1 9PQ', it is unfortunate that the tables are from a third party and cannot be changed and so I am stuck with the table structure. I am also trying to stick with joins.
I have tested this inner join in isolation and appears to work fine !!!!
Any suggestions or pointers will be most appriciated, thanks in advance....BM,
probably you just need follow the correct syntax described in the previous post and put first the join operators. If you really think you have the need to use nested query, you could use an approach like that:
SELECT order_head.ID col
FROM order order_head
INNER JOIN customer customer_2 ON order_head.customerID = customer_2.ID
INNER JOIN (
select c2.* from customer c2 INNER JOIN order o2 ON c2.ID = o2.customerID
) cust_address ON cust_address.ID = customer_2.AddressID
WHERE order_head.orderDate BETWEEN '12/12/2001'
AND '12/12/2009'
AND order_head.ID <> 0
AND customer_2.LastName = 'smith'
AND order_head.status = 1
AND cust_address.postcode = 'NW1 9PQ'Probably above statement doesn't make sense content-wise but I just wanted to use it for illustrative purposes that you can use nested subqueries like that.
Regards,
Randolf
Oracle related stuff blog:
http://oracle-randolf.blogspot.com/
SQLTools++ for Oracle (Open source Oracle GUI for Windows):
http://www.sqltools-plusplus.org:7676/
http://sourceforge.net/projects/sqlt-pp/ -
How to re-write this big SELECT Query with INNER JOINs?
Hi Experts
I have a performance killer SELECT query with an inner join of 3 tables u2013 VBAP, VBAK and VBEP together, which populates records to an internal table INT_COLL_ORD. Based on these records selected, in another SELECT query, records are fetched from VBUK table to the internal table INT_VBUK.
SELECT A~VBELN A~POSNR A~MATNR A~KWMENG A~KBMENG A~ERDAT A~ERZET A~PSTYV D~AUART E~ETTYP E~EDATU
INTO TABLE INT_TAB_RES
FROM VBAP AS A INNER JOIN VBAK AS D
ON D~VBELN EQ A~VBELN AND D~MANDT EQ A~MANDT
INNER JOIN VBEP AS E
ON E~VBELN EQ A~VBELN AND E~POSNR EQ A~POSNR AND E~MANDT EQ A~MANDT
WHERE A~VBELN IN s_VBELN AND
D~auart in s_auart AND
D~vkorg in s_vkorg AND
D~vbtyp eq 'C' AND
( ( matnr LIKE c_prefix_sp AND zz_msposnr NE 0 AND kbmeng EQ 0 )
OR ( matnr LIKE c_prefix_fp AND kwmeng NE A~kbmeng ) ) AND
A~ABGRU EQ SPACE AND
A~MTVFP IN R_MTVFP AND
A~PRCTR IN R_PRCT AND
E~ETENR EQ '1'.
SORT INT_COLL_ORD BY VBELN POSNR ETTYP.
DELETE ADJACENT DUPLICATES FROM INT_TAB_RES COMPARING VBELN POSNR.
CHECK NOT INT_TAB_RES [] IS INITIAL.
SELECT VBELN UVALL CMGST INTO TABLE INT_VBUK
FROM VBUK FOR ALL ENTRIES IN INT_TAB_RES
WHERE VBELN = INT_TAB_RES-VBELN AND UVALL NE 'A'.
Now, the requirement is:
I want to split this query. Like, first join VBAK and VBUK first. With this selection, go to the inner join of VBAP and VBEP (on key VBELN) to get the results. How can I re-write this Query?
Please help.
Thx n RgdsHi Nagraj
As of your suggestion, I have re-written the query as below:
* Declarations
TYPES: BEGIN OF TYP_COLL_ORD,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBUP-POSNR,
MATNR LIKE VBAP-MATNR,
KWMENG LIKE VBAP-KWMENG,
KBMENG LIKE VBAP-KBMENG,
ERDAT LIKE VBAK-ERDAT,
ERZET LIKE VBAK-ERZET,
PSTYV LIKE VBAP-PSTYV,
AUART LIKE VBAK-AUART, u201Calready exists in type
ETTYP LIKE VBEP-ETTYP,
EDATU LIKE VBEP-EDATU.
TYPES: END OF TYP_COLL_ORD.
DATA: INT_COLL_ORD TYPE TABLE OF TYP_COLL_ORD WITH HEADER LINE.
TYPES: BEGIN OF TYP_VBUK,
AUART LIKE VBAK-AUART, u201Chave added this field
VBELN LIKE VBUK-VBELN,
UVALL LIKE VBUK-UVALL,
CMGST LIKE VBUK-CMGST.
TYPES: END OF TYP_VBUK.
DATA: INT_VBUK TYPE TABLE OF TYP_VBUK WITH HEADER LINE.
*QUERY#1 u2013 for VBAK & VBUK Join
SELECT A~AUART B~VBELN B~UVALL B~CMGST
INTO TABLE INT_VBUK
FROM VBAK AS A INNER JOIN VBUK AS B
ON A~VBELN EQ B~VBELN
WHERE A~VBELN IN s_VBELN AND
A~auart in s_auart AND
A~vkorg in s_vkorg AND
A~vbtyp eq 'C' AND
B~UVALL NE 'A'.
IF NOT INT_VBUK[] IS INITIAL.
SORT INT_VBUK BY VBELN.
DELETE ADJACENT DUPLICATES FROM INT_VBUK COMPARING VBELN.
*QUERY#2 u2013 for VBAP & VBEP Join
SELECT A~VBELN A~POSNR A~MATNR A~KWMENG A~KBMENG A~ERDAT A~ERZET A~PSTYV B~ETTYP B~EDATU
INTO TABLE INT_COLL_ORD
FROM VBAP AS A INNER JOIN VBEP AS B
ON B~VBELN EQ A~VBELN AND B~POSNR EQ A~POSNR AND B~MANDT EQ A~MANDT
FOR ALL ENTRIES IN INT_VBUK
WHERE A~VBELN = INT_VBUK-VBELN AND
( ( matnr LIKE c_prefix_sp AND zz_msposnr NE 0 AND kbmeng EQ 0 )
OR ( matnr LIKE c_prefix_fp AND kwmeng NE A~kbmeng ) ) AND
A~ABGRU EQ SPACE AND
A~MTVFP IN R_MTVFP AND
A~PRCTR IN R_PRCT AND
B~ETENR EQ '1'.
ENDIF.
SORT INT_COLL_ORD BY VBELN POSNR ETTYP.
DELETE ADJACENT DUPLICATES FROM INT_COLL_ORD
COMPARING VBELN POSNR.
CHECK NOT INT_COLL_ORD[] IS INITIAL.
LOOP AT INT_COLL_ORD.
CLEAR: L_MTART,L_ATPPR,L_ETTYP.
IF L_PREVIOUS_ETTYP NE INT_COLL_ORD-ETTYP OR
L_PREVIOUS_AUART NE INT_COLL_ORD-AUART.
READ TABLE INT_OVRCTL WITH KEY AUART = INT_COLL_ORD-AUART ETTYP = INT_COLL_ORD-ETTYP.
CHECK SY-SUBRC NE 0.
Now, the issue is:
Please note that declaration for INT_COLL_ORD has a field AUART, which is used in further parts of program (see the statement just above)
But, since neither VBAP nor VBEP contains AUART field, it cannot be fetched through the QUERY#2. So this value is not populated into INT_COLL_ORD through SELECT Query.
Since this field is used in later part of program & that the internal table has no value for this field, it dumps!!
How to include this value into the INT_COLL_ORD?
Plz suggest.... -
How to use BKPF and BSEG without using inner join
Hi,
can anybody plz tell me the logic about how to complete the report without inner joining bkpf and bseg.Is this report can be really be made by using only bseg,bkpf ?
*selection-criteria .
BKPF-USNAM
BKPF-CPUDT
BKPF-BUDAT
BKPF-GJAHR
BKPF-BUKRS
BKPF-BELNR
BSEG-SAKNR
BSEG-LIFNR
BSEG-KUNNR
BSEG-ZUONR
BSEG-SGTXT
Output fields required.
BKPF-BUKRS
BKPF-BELNR
BKPF-GJAHR
BKPF-MONAT
BKPF-BLART
BKPF-CPUDT
BKPF-BLDAT
BKPF-BUDAT
BKPF-USNAM
BKPF-XBLNR
BKPF-STBLG
BKPF-BKTXT
BKPF-WAERS
BKPF-KURSF
BSEG-BUZEI
BSEG-BSCHL
BSEG-KOART
BSEG-UMSKZ
BSEG-SHKZG
BSEG-MWSKZ
BSEG-PSWBT
BSEG-PSWSL
BSEG-DMBTR
BSEG-SAKNR
BSEG-HKONT
BSEG-KOSTL
BSEG-KUNNR
BSEG-VBELN
BSEG-LIFNR
BSEG-ANLN1
BSEG-ANLN2
BSEG-AUFNR
BSEG-MATNR
BSEG-MENGE
BSEG-MEINS
BSEG-ZUONR
BSEG-SGTXT
Thanks,
Rahman
Moderator Message: Please search before posting your question. Thread locked.
Edited by: Suhas Saha on Jan 31, 2012 3:07 PMQuick question - what's preventing your from using built-in functions?
I suggest mapping your Time Dim to a standard Time Dim and work with it - you'll save a lot more time. You'd even need this table if you wanted to work around Todate/AGO.
It is possible to model this functionality w/o functions, but it'll be time consuming task, similar to using Time Series Wizard in Siebel Analytics. You'll need to build aliases and views along with some complex joins (such as TIME.KEY=TIME.KEY-365), introduce a bunch of variables to control. Also, you might not get much flexibility in terms of years. For each year, you'd need an alias table. (TIME_DIM_PY). -
JOIN for BSEG, BSIS, BSAS, MSEG, BKPF and MKPF
I am developing a report related to G/L . i am using the Tables BSEG BSIS BSAS MSEG BKPF MKPF ............please give me the Joinings of these tables.......how exactly we can join and get the prefect Data....
Thank U waiting for ur replies....
Title edited by: Alvaro Tejada Galindo on Jun 3, 2008 3:41 PMI have given the tables, internal tables and the select queries which can give you the join conditions of your requirement.
tables: bsis,
bsas,
bkpf,
bseg,
ekbe,
mkpf,
mseg.
select-options: s_hkont for bseg-hkont,
s_bldat for bkpf-budat,
s_budat for bkpf-bldat obligatory,
s_lifnr for bseg-lifnr,
s_lfbnr for ekbe-lfbnr no intervals no-extension.
data: begin of i_bsis_bsas occurs 0,
bukrs like bsis-bukrs,
hkont like bsis-hkont,
gjahr like bsis-gjahr,
belnr like bsis-belnr,
budat like bsis-budat,
bldat like bsis-bldat,
xblnr like bsis-xblnr,
wrbtr like bsis-wrbtr,
buzei like bsis-buzei,
end of i_bsis_bsas,
begin of i_bkpf occurs 0,
bukrs like bsis-bukrs,
belnr like bsis-belnr,
gjahr like bsis-gjahr,
xblnr like bkpf-xblnr,
stblg like bkpf-stblg,
awtyp like bkpf-awtyp,
tcode like bkpf-tcode,
end of i_bkpf,
begin of i_bseg occurs 0,
bukrs like bsis-bukrs,
belnr like bsis-belnr,
gjahr like bsis-gjahr,
buzei like bseg-buzei,
buzid like bseg-buzid,
koart like bseg-koart,
zuonr like bseg-zuonr,
hkont like bseg-hkont,
lifnr like bseg-lifnr,
sgtxt like bseg-sgtxt,
ebeln like bseg-ebeln,
ebelp like bseg-ebelp,
wrbtr like bseg-wrbtr,
end of i_bseg,
begin of i_ekbe occurs 0,
ebeln like ekbe-ebeln,
ebelp like ekbe-ebelp,
gjahr like ekbe-gjahr,
belnr like ekbe-belnr,
buzei like ekbe-buzei,
lfgja like ekbe-lfgja,
lfbnr like ekbe-lfbnr,
lfpos like ekbe-lfpos,
matnr like ekbe-matnr,
end of i_ekbe,
begin of i_mkpf_mseg occurs 0,
mblnr like mkpf-mblnr,
mjahr like mkpf-mjahr,
bktxt like mkpf-bktxt,
xblnr like mkpf-xblnr,
frbnr like mkpf-frbnr,
zeile like mseg-zeile,
matnr like mseg-matnr,
erfmg like mseg-erfmg,
end of i_mkpf_mseg.
*data: wa_ekbe like i_ekbe.
select bukrs
hkont
gjahr
belnr
budat
bldat
xblnr
wrbtr
buzei appending corresponding fields of table i_bsis_bsas
from bsis
where bukrs eq p_bukrs
and hkont in s_hkont
and gjahr eq p_gjahr
and budat in s_budat
and shkzg eq 'S'.
select bukrs
hkont
gjahr
belnr
budat
bldat
xblnr
wrbtr appending corresponding fields of table i_bsis_bsas
from bsas
where bukrs eq p_bukrs
and hkont in s_hkont
and gjahr eq p_gjahr
and budat in s_budat
and shkzg eq 'S'.
endform. " f_get_bsis_bsas_data
*& Form f_get_bkpf_bseg_data
Subroutine to get BKPF and BSEG data
form f_get_bkpf_bseg_data.
check not i_bsis_bsas[] is initial.
select bukrs
belnr
gjahr
xblnr
stblg
awtyp
tcode into table i_bkpf
from bkpf
for all entries in i_bsis_bsas
where bukrs eq i_bsis_bsas-bukrs
and belnr eq i_bsis_bsas-belnr
and gjahr eq i_bsis_bsas-gjahr.
and awtyp = 'BKPFF'
and tcode = 'J1IE'.
check not i_bkpf[] is initial.
select bukrs
belnr
gjahr
buzei
buzid
koart
zuonr
hkont
lifnr
sgtxt
ebeln
ebelp
wrbtr into corresponding fields of table i_bseg
from bseg
for all entries in i_bsis_bsas
where bukrs eq i_bsis_bsas-bukrs
and belnr eq i_bsis_bsas-belnr
and gjahr eq i_bsis_bsas-gjahr.
and buzei eq i_bsis_bsas-buzei
and hkont eq i_bsis_bsas-hkont.
delete i_bseg where not hkont in s_hkont.
endform. " f_get_bkpf_bseg_data
*& Form f_get_ekbe_data
Subroutine to get EKBE data
form f_get_ekbe_data.
data: $i_bseg like i_bseg occurs 0 with header line.
$i_bseg[] = i_bseg[].
delete $i_bseg where ebeln is initial.
check not $i_bseg[] is initial.
select ebeln
ebelp
gjahr
belnr
buzei
lfgja
lfbnr
lfpos
matnr into table i_ekbe
from ekbe
for all entries in $i_bseg
where ebeln eq $i_bseg-ebeln
and ebelp eq $i_bseg-ebelp
and gjahr eq $i_bseg-gjahr
and bwart = '101'.
and belnr eq $i_bseg-belnr.
check not i_ekbe[] is initial.
select a~mblnr
a~mjahr
a~bktxt
a~xblnr
a~frbnr
b~zeile
b~matnr
b~werks
b~erfmg into table i_mkpf_mseg
from mkpf as a inner join
mseg as b on amblnr eq bmblnr
and amjahr eq bmjahr
for all entries in i_ekbe
where a~mblnr eq i_ekbe-lfbnr
and a~mjahr eq i_ekbe-gjahr
and b~zeile eq i_ekbe-lfpos
and b~werks eq p_werks.
<REMOVED BY MODERATOR>
Edited by: Srikanth Kadiyala on Jun 3, 2008 7:24 AM
Edited by: Alvaro Tejada Galindo on Jun 3, 2008 3:40 PM -
Hi Friends,
My code is;
SELECT T1~NUMBER SUM( T2~QUANT )
INTO (ZTABLE1-NUMBER, ZTABLE2-QUANT)
FROM ZTABLE1 AS T1
INNER JOIN ZTABLE2 AS T2
ON T1~NUMBER = T2~NUMBER
GROUP BY T2~VBELN.
ENDSELECT.
I am getting an error as;
The field T1~NUMBER from SELECT is missing in the GROUP BY clause. addition INTO wa or INTO(g1,...,gn) is required. fields of type "" or "T2-VBELN".
I couldn't understand anything from the error message. Can you help what the error message says and how can I do my desire on above query.
Thanks.Usually GROUP BY Is used to get only aggregated fields.
It is not meant for regular selection of fields.
Instead do a regular selection of all the fields without group by and do your aggregation in program logic as per your requirement.
In that way your performance will be better.
Regards
Sudhir Atluru -
The process time between INNER JOIN and join in WHERE clause
as u know, there are 2 kind of join
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.ID= tableB.ID
WHERE ....
and
SELECT *
FROM tableA, tableA
WHERE tableA.ID = tableB.ID
AND ....
I find the first one is faster in MS SQL Server.
But i test them in oracle and i find that it is the same. Is it correct?Who knows why SQL Server shows different timings. Perhaps it's just cos it's not good at knowing that the two things are the same.
The only difference in timing as far as Oracle is concerned is the time it takes to parse the syntax of the query, which will be nanoseconds. The execution time of two equivalent queries will not differ based on the factor of the syntax used.
Maybe you are looking for
-
Hi I have extended Opportunity BO with a field type LANGUAGEINDEPENDENT_EXTENDED_Text", then I have enhanced my datasource and report. for this field I have entered value almost 100 characters but in report only 60 character is being shown. Could any
-
I started with a brand new iPhoto Library and I still can't get it to work.
I have almost 40,000 photos and iPhoto simply stopped working altogether. You can read all about my trials and tribulations here: http://www.davidgagne.net/2014/01/02/dealing-with-my-iphoto-library/ Eventually I simply resigned myself to not being ab
-
this is the alv report : the requirement is like this besade on customer id we have to display this formate will be like this number city xxxxx Bangalore/ here is it own mother languag
-
Run itunes off external hard drive and keep settings
I have an imac which has my consolidated music library on it. I also have a macbook which i use while traveling. My itunes is about 130 gigs, which is fine on my imac, but too big for my macbook. in the past what i have done is just put everything on
-
Adobe Interactive Forms and 4.6c
Hi to all, I have to develop and adobe interactive form within a web dynpro project with SAP WAS 6.40. This interactive form have to call an R/3 system 4.6c (via RFC) to retrieve some datas. My question is: can I use interactive forms with a 4.6c (us