PDA

Ver la Versión Completa : Inner Join


romario2
18/02/09, 11:50:10
Hola,

tengo una duda con este inner join, en la parte de:

ON a~bukrs = b~bukrs
AND a~kunnr = b~kunnr
* AND a~gjahr = b~gjahr
* AND a~blart = b~blart
* AND a~budat = b~budat
* AND a~gsber = b~gsber

no se si debo añadir más o menos condiciones, no me filtra bien el parámetro de año: p_gjahr y no se el motivo.


CLEAR it_bsid.
REFRESH it_bsid.
SELECT a~bukrs a~kunnr a~gjahr a~blart a~budat a~belnr a~xblnr a~gsber
INTO TABLE it_bsid
FROM bsid AS a
INNER JOIN bsad AS b
ON a~bukrs = b~bukrs
AND a~kunnr = b~kunnr
* AND a~gjahr = b~gjahr
* AND a~blart = b~blart
* AND a~budat = b~budat
* AND a~gsber = b~gsber
WHERE a~bukrs = p_bukrs
* AND a~gjahr = p_gjahr
AND a~blart IN s_blart
AND a~budat IN s_budat
AND a~kunnr IN rg_kunnr
AND a~gsber IN s_gsber.

Saludos y gracias,

Bmamba
18/02/09, 13:17:46
No me hagas mucho caso, pero has probado a hacer el ON con los siguientes campos: BUKRS, KUNNR, UMSKS, UMSKZ, AUGDT, AUGBL, ZUONR, GJAHR, BELNR, BUZEI ? (Los que aparecen como clave en ambas tablas)

Saludos

gugutin
18/02/09, 15:52:22
Hola romario,

No se exactamente que es lo que pretendes obtener, pero yo he tomado tu ejemplo y he hecho algunos cambios que a lo mejor te ayudan, asi que aqui te los dejo.
Ten encuenta que estas comparando partidas abiertas y partidas compensadas de clientes con lo que la seleccion de tantos campos iguales entre Bsid y Bsad no me paraece muy coherente.

report zpruebatonijoin.
tables: bsid, bsad.
parameter: p_bukrs like bsid-bukrs,
p_gjahr like bsid-gjahr.

data: it_bsid type standard table of bsid with header line.

clear it_bsid.
refresh it_bsid.

select a~bukrs a~kunnr a~gjahr a~blart a~budat a~belnr a~xblnr a~gsber
into corresponding fields of table it_bsid
from ( bsid as a
inner join bsad as b
on a~bukrs = b~bukrs
*and a~kunnr = b~kunnr
and a~gjahr = b~gjahr )
* and a~blart = b~blart
* and a~budat = b~budat
* and a~gsber = b~gsber )
where a~bukrs = p_bukrs
and a~gjahr = p_gjahr.
*and a~blart in s_blart
*and a~budat in s_budat
*and a~kunnr in rg_kunnr
*and a~gsber in s_gsber.

clear it_bsid.
loop at it_bsid.
write: / it_bsid-bukrs, it_bsid-kunnr.
endloop.
Espero que te haya podido ayudar.
Saludos.