2008 May 28 12:03 PM
hi,
how can we create inner join using these fields of table
TYPES: BEGIN OF it_output,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
fisper TYPE bseg-gjahr,
buzei TYPE bseg-buzei,
augdt TYPE bseg-augdt,
shkzg TYPE bseg-shkzg,
dmbtr TYPE bseg-dmbtr,
kostl TYPE bseg-kostl,
hkont TYPE bseg-hkont,
matnr TYPE bseg-matnr,
werks TYPE bseg-werks,
blart TYPE bkpf-blart,
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
cpudt TYPE bkpf-cpudt,
usnam TYPE bkpf-usnam,
tcode TYPE bkpf-tcode,
bktxt TYPE bkpf-bktxt,
waers TYPE bkpf-waers,
awtyp TYPE bkpf-awtyp,
awkey TYPE bkpf-awkey,
END OF it_output.
SELECT-OPTIONS: s_bukrs FOR bseg-bukrs,
s_blart FOR bkpf-blart,
s_budat FOR bkpf-budat.
thanks in advance
2008 May 28 12:10 PM
Hi,
u cannot use joins for this internal table because this table needs to get the values from BSEG and BSEG is a clustered table.
u cannot use join conditions on cluster tables.
so, first fill the table from BKPF.and the use for all entries to get the values from BSEG.
rgds,
bharat.
Hi,
u cannot use joins for this internal table because this table needs to get the values from BSEG and BSEG is a clustered table.
u cannot use join conditions on cluster tables.
so, first fill the table from BKPF.and the use for all entries to get the values from BSEG.
rgds,
bharat.
2008 May 28 12:10 PM
You cant use joins on cluster table so find alternative table and
You can modify this one
SELECT stpo~stlnr stpo~idnrk mast~matnr mara~mtart stpo~menge
INTO TABLE zmat1 FROM mast
JOIN stpo ON stpo~stlnr = mast~stlnr
JOIN mara ON mara~matnr = mast~matnr
WHERE stpo~idnrk IN s_matnr .
2008 May 28 12:10 PM
Hi,
u cannot use joins for this internal table because this table needs to get the values from BSEG and BSEG is a clustered table.
u cannot use join conditions on cluster tables.
so, first fill the table from BKPF.and the use for all entries to get the values from BSEG.
rgds,
bharat.
2008 May 28 12:24 PM
Hi
check this code
SELECT-OPTIONS: s_bukrs FOR bseg-bukrs,
s_blart FOR bkpf-blart,
s_budat FOR bkpf-budat.
TYPES: BEGIN OF it_output,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
fisper TYPE bseg-gjahr,
buzei TYPE bseg-buzei,
augdt TYPE bseg-augdt,
shkzg TYPE bseg-shkzg,
dmbtr TYPE bseg-dmbtr,
kostl TYPE bseg-kostl,
hkont TYPE bseg-hkont,
matnr TYPE bseg-matnr,
werks TYPE bseg-werks,
blart TYPE bkpf-blart,
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
cpudt TYPE bkpf-cpudt,
usnam TYPE bkpf-usnam,
tcode TYPE bkpf-tcode,
bktxt TYPE bkpf-bktxt,
waers TYPE bkpf-waers,
awtyp TYPE bkpf-awtyp,
awkey TYPE bkpf-awkey,
END OF it_output.
select bseg~bukrs
bseg~belnr
bseg~gjahr
bseg~gjahr
bseg~buzei
bseg~augdt
bseg~shkzg
bseg~dmbtr
bseg~kostl
bseg~hkont
bseg~matnr
bseg~werks
bkpf~blart
bkpf~bldat
bkpf~budat
bkpf~cpudt
bkpf~usnam
bkpf~tcode
bkpf~bktxt
bkpf~waers
bkpf~awtyp
bkpf~awkey
into table it_output
from bseg innerjoin bkpf
on bsegbelnr = bkpfbelnr
where bseg~bukrs in s_bukrs
and bkpf~blart in s_blart
and bkpf~budat in s_budat.
thanks
sitaram
2008 May 28 12:57 PM
Hi Jayant,
U cant use JOIN here because BSEG is a cluster table. Joins can be done only between transparent tables.
U have to use FOR ALL ENTRIES here.
Copy-Paste below piece of code.
TYPES: BEGIN OF t_bkpf,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
blart TYPE bkpf-blart,
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
cpudt TYPE bkpf-cpudt,
usnam TYPE bkpf-usnam,
tcode TYPE bkpf-tcode,
bktxt TYPE bkpf-bktxt,
waers TYPE bkpf-waers,
awtyp TYPE bkpf-awtyp,
awkey TYPE bkpf-awkey,
END OF it_bkpf,
BEGIN OF t_bseg,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
fisper TYPE bseg-gjahr,
buzei TYPE bseg-buzei,
augdt TYPE bseg-augdt,
shkzg TYPE bseg-shkzg,
dmbtr TYPE bseg-dmbtr,
kostl TYPE bseg-kostl,
hkont TYPE bseg-hkont,
matnr TYPE bseg-matnr,
werks TYPE bseg-werks,
END OF t_bseg.
DATA: i_bkpf TYPE STANDARD TABLE OF t_bkpf,
i_bseg TYPE STANDARD TABLE OF t_bseg.
SELECT-OPTIONS: s_bukrs FOR bseg-bukrs,
s_blart FOR bkpf-blart,
s_budat FOR bkpf-budat.
SELECT bukrs belnr gjahr blart bldat budat cpudt usnam tcode bktxt
waers awtyp awkey
INTO TABLE i_bkpf
FROM bkpf
WHERE bukrs IN s_bukrs
AND blart IN s_blart
AND budat IN s_budat.
IF NOT i_bkpf[] IS INITIAL.
SORT i_bkpf BY bukrs belnr gjahr.
SELECT bukrs belnr gjahr fisper buzei augdt shkzg
dmbtr kostl hkont matnr werks
INTO TABLE i_bseg
FROM bseg
FOR ALL ENTRIES IN i_bkpf
WHERE bukrs EQ i_bkpf-bukrs
AND belnr EQ i_bkpf-belnr
AND gjahr EQ i_bkpf-gjahr.
ENDIF.
*But these selects will be very very slow as we are not passing*
*all the key fields. Also check the order of fields in select wrt* *data base table. It should be in same order*
Thanks,
Vinod.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |