Inner Join

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • romario2
    Senior Member
    • abr
    • 233

    #1

    Inner Join

    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
    Member
    • jun
    • 91

    #2
    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

    Comentario

    • gugutin
      Member
      • jul
      • 71

      #3
      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.

      Comentario

      Trabajando...