Foro de programación ABAP

SAP / ABAP => Programación ABAP => Mensaje iniciado por: carlos manuel en 18 de Mayo de 2010, 04:03:05 pm

Título: Saludos A todos los miembros del foro.
Publicado por: carlos manuel en 18 de Mayo de 2010, 04:03:05 pm
Saludos a todos  nececito ayuda si les es posible  colaborar conmigo   estoy creando unos reportes  ALV  y tengo  inconvenientes con un INNER JOIN
 en la las tablas   esto es lo que he hecho po rl momento pero  no me da los resultados.

si le es posible  espero su colavoracion.

DATA: BEGIN OF wa,
        vgbel TYPE vbrp-vgbel,
        vbeln TYPE vbrp-vbeln,
        vbelv TYPE vbfa-vbelv,
        vbtyp_n TYPE vbfa-vbtyp_n,
         kunnr type kna1-kunnr,
        tknum TYPE vttk-tknum,
         name1 TYPE kna1-name1,
        /bev1/rpfar1 TYPE vttk-/bev1/rpfar1,
      END OF wa,
      itab LIKE SORTED TABLE OF wa
                WITH UNIQUE KEY vgbel vbelv vbtyp_n vbeln tknum /bev1/rpfar1 .

SELECT  p~vgbel f~vbelv f~vbeln f~vbeln b~tknum b~/bev1/rpfar1 c~kunnr c~name1
  INTO  CORRESPONDING FIELDS OF TABLE itab
  FROM  ( ( ( vbrp AS p
            INNER JOIN vbfa AS f ON p~vgbel = f~vbeln AND
                                    p~vgbel = f~vbelv       )
            INNER JOIN vttk   AS b ON p~vgbel = b~/bev1/rpfar1 AND
                                     f~vbeln = b~tknum  )
            INNER JOIN kna1   AS c ON   b~/bev1/rpfar1 = c~kunnr
                                            )
  WHERE b~/bev1/rpfar1 <> 0 AND
             c~kunnr   <> 0  .

LOOP AT itab INTO wa.
  AT NEW vgbel.
    WRITE: / wa-vgbel, wa-vbeln , wa-vbelv ,wa-vbtyp_n,wa-kunnr ,wa-tknum    .
  ENDAT.
  WRITE / wa-kunnr.
ENDLOOP.
Título: Re: Saludos A todos los miembros del foro.
Publicado por: abapito en 19 de Mayo de 2010, 04:21:00 pm
Hola,

No se si será esto que te digo, pero veo algo raro en el INNER que marco de color rojo.


SELECT  p~vgbel f~vbelv f~vbeln f~vbeln b~tknum b~/bev1/rpfar1 c~kunnr c~name1
  INTO  CORRESPONDING FIELDS OF TABLE itab
  FROM  ( ( ( vbrp AS p
            INNER JOIN vbfa AS f ON p~vgbel = f~vbeln AND
                                    p~vgbel = f~vbelv       )
            INNER JOIN vttk AS b ON p~vgbel = b~/bev1/rpfar1 AND
                                    f~vbeln = b~tknum  )
            INNER JOIN kna1 AS c ON b~/bev1/rpfar1 = c~kunnr
                                            )
  WHERE b~/bev1/rpfar1 <> 0 AND
             c~kunnr   <> 0  .


¿Puede ser que en lugar de un AND, tengas que poner un OR?

... f~vbeln y f~vbelv lo estas igualando al mismo campo p~vgbel.



Un saludo.