Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

inner join

Former Member
0 Likes
536

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
509

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.

4 REPLIES 4
Read only

Former Member
0 Likes
509

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  .


Read only

Former Member
0 Likes
510

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.

Read only

Former Member
0 Likes
509

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

Read only

vinod_vemuru2
Active Contributor
0 Likes
509

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.