cancel
Showing results for 
Search instead for 
Did you mean: 

Error al generar un Query

Former Member
0 Kudos

Jóvenes expertos tengo el siguiente problema realice un query en donde me muestra todas las ordenes de venta que esta abiertas pero cuando lo coloco en SAP y cuando el usuario tiene que elegir el proyecto me da un error si me muestra la ventana para seleccionar el proyecto pero cuando ya se lecciona y le da aceptar me da el siguiente error

les dejo el query para que lo vean y me indiquen en donde esta mi error

select Distinct T0.CardCode, T0.CardName,

             ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)[Costo Exceso],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'AGU%%%' AND Y.DocStatus='O'),0)[Costo Cuota Fija Agua],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SEG%%%' AND Y.DocStatus='O'),0)[Costo Seguridad],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'RCONX%%%' AND Y.DocStatus='O'),0)[Reconexion],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SUSP%%%' AND Y.DocStatus='O'),0)[Suspencion],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'ADM%%%' AND Y.DocStatus='O'),0)[Administrativo],

                    (ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'AGU%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SEG%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'RCONX%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SUSP%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'ADM%%%' AND Y.DocStatus='O'),0))[Costo Total],

                     T2.BALANCE, T2.OrdersBal

          from ORDR T0 INNER JOIN

                     RDR1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN

                     OCRD T2 ON T0.CardCode = T2.CardCode

Where T2.ProjectCod = [%0] and T0.DocStatus = 'O'

Group By T0.CardCode, T0.CardName, T0.DocNum, T0.DocEntry, T2.BALANCE, T2.OrdersBal

de antemano muy agradecido por la ayuda.

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Entonces podría ser alguna restricción del generador de consultas de SAP, te recomiendo generar un store procedure y lo mandas a llamar desde el generador de consultas con el comando EXEC

Ejemplo :

creas un store prodecure llamado "prueba" y dentro del sap donde pones el código de sql pones lo siguiente

EXEC prueba

De esta maneja ejecuta la consulta en SQLserver y los datos los muestra en SAP.

Saludos

rjovel
Active Participant
0 Kudos

el problema son los subquerys, a veces sap no anda tan bien con los subquerys y por eso hay que crear sp como dice Angel!

pero que siga probando.

Former Member
0 Kudos

Gracias Angel por tu ayuda y tus comentarios, creo que voy a realizar pruebas con una tablas virtuales ya que no soy muy hábil para realizar un SP en sql, le contare como me va con las tablas virtuales.

Gracias por la ayuda.

Saludos

Former Member
0 Kudos

Roger fijate que es la primera vez que veo que no me funcionan los sub querys en SAP he realizado otros reportes mas grandes que este y con sub query y todo me he funcionado bien, no entiendo por que ahora no me funciono.

Te agradezco la ayuda siempre Roger

rjovel
Active Participant
0 Kudos

pasame de nuevo el query porque el error es otro ahora.

Former Member
0 Kudos

Roger este es el query ya sin el projyeto

select Distinct T0.CardCode, T0.CardName,

             ISNULL((SELECT SUM(X.PriceAfVAT) FROM dbo.ORDR Y INNER JOIN dbo.RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)[Costo Exceso],

                    ISNULL((SELECT SUM(W.PriceAfVAT) FROM dbo.ORDR Z INNER JOIN dbo.RDR1 W ON W.DocEntry=Z.DocEntry WHERE Z.CardCode=T0.CardCode AND W.ItemCode LIKE 'AGU%%%' AND Z.DocStatus='O'),0)[Costo Cuota Fija Agua],

                    ISNULL((SELECT SUM(B.PriceAfVAT) FROM dbo.ORDR A INNER JOIN dbo.RDR1 B ON B.DocEntry=A.DocEntry WHERE A.CardCode=T0.CardCode AND B.ItemCode LIKE 'SEG%%%' AND A.DocStatus='O'),0)[Costo Seguridad],

                    ISNULL((SELECT SUM(D.PriceAfVAT) FROM dbo.ORDR C INNER JOIN dbo.RDR1 D ON D.DocEntry=C.DocEntry WHERE C.CardCode=T0.CardCode AND D.ItemCode LIKE 'RCONX%%%' AND C.DocStatus='O'),0)[Reconexion],

                    ISNULL((SELECT SUM(F.PriceAfVAT) FROM dbo.ORDR E INNER JOIN dbo.RDR1 F ON F.DocEntry=E.DocEntry WHERE E.CardCode=T0.CardCode AND F.ItemCode LIKE 'SUSP%%%' AND E.DocStatus='O'),0)[Suspencion],

                    ISNULL((SELECT SUM(H.PriceAfVAT) FROM dbo.ORDR G INNER JOIN dbo.RDR1 H ON H.DocEntry=G.DocEntry WHERE G.CardCode=T0.CardCode AND H.ItemCode LIKE 'ADM%%%' AND G.DocStatus='O'),0)[Administrativo],

(ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'AGU%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SEG%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'RCONX%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SUSP%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'ADM%%%' AND Y.DocStatus='O'),0))[Costo Total],

                     T2.BALANCE, T2.OrdersBal

          from [dbo].ORDR T0 INNER JOIN

                     [dbo].RDR1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN

                     [dbo].OCRD T2 ON T0.CardCode = T2.CardCode

Where T0.DocStatus = O

Group By T0.CardCode, T0.CardName, T0.DocNum, T0.DocEntry, T2.BALANCE, T2.OrdersBal

Saludos

rjovel
Active Participant
0 Kudos

agrega esto

Where T0.DocStatus = 'O'

porque ese es el error que da ahora, no existe solo O, es 'O'

intenta de nuevo por favor.

Former Member
0 Kudos

Prueba la siguiente query:

select

Distinct T0.CardCode, T0.CardName,


ISNULL

((SELECT SUM(X.PriceAfVAT) FROM [dbo].[ORDR] Y INNER JOIN [dbo].[RDR1] X ON X.DocEntry=Y.DocEntry


WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%'


AND Y.DocStatus='O'),0)[Costo Exceso],



ISNULL

((SELECT SUM(A.PriceAfVAT) FROM [dbo].[ORDR] B INNER JOIN [dbo].[RDR1] A ON a.DocEntry=b.DocEntry 


WHERE b.CardCode=T0.CardCode AND a.ItemCode LIKE 'AGU%%%'


AND b.DocStatus='O'),0)[Costo Cuota Fija Agua],



ISNULL

((SELECT SUM(c.PriceAfVAT) FROM [dbo].[ORDR] d INNER JOIN [dbo].[RDR1] c ON c.DocEntry=d.DocEntry 


WHERE d.CardCode=T0.CardCode AND c.ItemCode LIKE 'SEG%%%' AND d.DocStatus='O'),0)[Costo Seguridad],



ISNULL

((SELECT SUM(e.PriceAfVAT) FROM [dbo].[ORDR] f INNER JOIN [dbo].[RDR1] e ON e.DocEntry=f.DocEntry 


WHERE f.CardCode=T0.CardCode AND e.ItemCode LIKE 'RCONX%%%' AND f.DocStatus='O'),0)[Reconexion],



ISNULL

((SELECT SUM(g.PriceAfVAT) FROM [dbo].[ORDR] h INNER JOIN [dbo].[RDR1] g ON g.DocEntry=h.DocEntry 


WHERE h.CardCode=T0.CardCode AND g.ItemCode LIKE 'SUSP%%%' AND h.DocStatus='O'),0)[Suspencion],



ISNULL

((SELECT SUM(i.PriceAfVAT) FROM [dbo].[ORDR] j INNER JOIN [dbo].[RDR1] i ON j.DocEntry=i.DocEntry 


WHERE j.CardCode=T0.CardCode AND i.ItemCode LIKE 'ADM%%%' AND j.DocStatus='O'),0)[Administrativo],



(

ISNULL((SELECT SUM(k.PriceAfVAT) FROM [dbo].[ORDR] l INNER JOIN [dbo].[RDR1] k ON k.DocEntry=l.DocEntry 


WHERE l.CardCode=T0.CardCode AND k.ItemCode LIKE 'EXC%%%' AND l.DocStatus='O'),0)+


ISNULL((SELECT SUM(m.PriceAfVAT) FROM [dbo].[ORDR] n INNER JOIN [dbo].[RDR1] m ON m.DocEntry=n.DocEntry 


WHERE n.CardCode=T0.CardCode AND m.ItemCode LIKE 'AGU%%%' AND n.DocStatus='O'),0)+


ISNULL((SELECT SUM(o.PriceAfVAT) FROM [dbo].[ORDR] p INNER JOIN [dbo].[RDR1] o ON o.DocEntry=p.DocEntry 


WHERE p.CardCode=T0.CardCode AND o.ItemCode LIKE 'SEG%%%' AND p.DocStatus='O'),0)+


ISNULL((SELECT SUM(q.PriceAfVAT) FROM [dbo].[ORDR] r INNER JOIN [dbo].[RDR1] q ON q.DocEntry=r.DocEntry 


WHERE r.CardCode=T0.CardCode AND q.ItemCode LIKE 'RCONX%%%' AND r.DocStatus='O'),0)+


ISNULL((SELECT SUM(s.PriceAfVAT) FROM [dbo].[ORDR] t INNER JOIN [dbo].[RDR1] s ON s.DocEntry=t.DocEntry 


WHERE t.CardCode=T0.CardCode AND s.ItemCode LIKE 'SUSP%%%' AND t.DocStatus='O'),0)+


ISNULL((SELECT SUM(u.PriceAfVAT) FROM [dbo].[ORDR] v INNER JOIN [dbo].[RDR1] u ON u.DocEntry=v.DocEntry


WHERE v.CardCode=T0.CardCode AND u.ItemCode LIKE 'ADM%%%' AND v.DocStatus='O'),0))[Costo Total],


T2

.BALANCE, T2.OrdersBal



from

[dbo].[ORDR] T0 INNER JOIN



[dbo]

.[RDR1] T1 ON T0.DocEntry = T1.DocEntry INNER JOIN


[dbo]

.[OCRD] T2 ON T0.CardCode = T2.CardCode



Where

T2.ProjectCod = [%0] and T0.DocStatus = 'O'



Group

By T0.CardCode, T0.CardName, T0.DocNum, T0.DocEntry, T2.BALANCE, T2.OrdersBal

Former Member
0 Kudos

Roger gracias te comento que asiendo esa corrección si funciona bien el query pero cuando le coloco la condición del proyecto ya me despliega el error nuevamente alguna forma de que lo pueda filtrar por proyecto.

Saludos

rjovel
Active Participant
0 Kudos

si no es mucha la molestia, podrias ejecutar el siguiente query y postear los resultados?

select PrjCode,PrjCode from OPRJ

Former Member
0 Kudos

Gracias Fermando ejecute el query que me proporcionaste y me dio este error

Gracias nuevamente por la ayuda.

Former Member
0 Kudos

Mira esta es la forma de crear tu store procedure solo cambia el nombre que deseas donde puse Nombre_consulta.

Esto lo corres dentro de SQL en la base que requieras como un query común y corriente.

create PROC [dbo].[Nombre_consulta]

AS

BEGIN

select Distinct T0.CardCode, T0.CardName,

             ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)[Costo Exceso],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'AGU%%%' AND Y.DocStatus='O'),0)[Costo Cuota Fija Agua],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SEG%%%' AND Y.DocStatus='O'),0)[Costo Seguridad],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'RCONX%%%' AND Y.DocStatus='O'),0)[Reconexion],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SUSP%%%' AND Y.DocStatus='O'),0)[Suspencion],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'ADM%%%' AND Y.DocStatus='O'),0)[Administrativo],

                    (ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'AGU%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SEG%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'RCONX%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SUSP%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'ADM%%%' AND Y.DocStatus='O'),0))[Costo Total],

                     T2.BALANCE, T2.OrdersBal

          from ORDR T0 INNER JOIN

                     RDR1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN

                     OCRD T2 ON T0.CardCode = T2.CardCode

Where T2.ProjectCod = [%0] and T0.DocStatus = 'O'

Group By T0.CardCode, T0.CardName, T0.DocNum, T0.DocEntry, T2.BALANCE, T2.OrdersBal

END

y ya dentro de SAP en el generador de consultas pones

Former Member
0 Kudos

el resulto al correr el query es 'Operacion Finalizada con Exito' y me muestra los proyectos que tengo en la base de datos

Saludos

Former Member
0 Kudos

Me di cuenta que el filtro final esta mal, podrias ejecutarla sin el filtro final del proyecto, es decir, quitale:

"T2.ProjectCod = [%0] and" y ver si te da el mismo error

rjovel
Active Participant
0 Kudos

bueno, no era eso lo que queria ver, es que en alguno de los nombres de proyectos hay problema, entre datos tipo numero y texto, lo que queria ver son los nombres...

Former Member
0 Kudos

Gracias Fernando en efecto si le quito el filtro del proyecto si me despliega la información que necesito pero tambien necesito crear un filtro por proyecto ya que tengo varios y necesito desplegarlos individualmente.

Gracias por tu ayuda y si hubiera una forma te lo agradeceria bastante.

Salduos

Former Member
0 Kudos

Perdon Roger te muestro los proyectos que tengo asignados en SAP en base al query que me proporcionaste.

rjovel
Active Participant
0 Kudos

entonces deberia de funcionar bien asi:

T0.ProjectCod = '[%0]'

entre comillas porque son valores de tipo texto.

Former Member
0 Kudos

Sucede que en el filtro:

T2.ProjectCod = [%0] esta malo ya que el campo projectcode de la tabla ocrd no existe, debieras filtrarlo por otra tabla como por ejemplo los proyectos que están en la tabla de ordr, siendo asi la query final seria:



select

Distinct T0.CardCode, T0.CardName,


ISNULL

((SELECT SUM(X.PriceAfVAT) FROM [dbo].[ORDR] Y INNER JOIN [dbo].[RDR1] X ON X.DocEntry=Y.DocEntry


WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%'


AND Y.DocStatus='O'),0)[Costo Exceso],



ISNULL

((SELECT SUM(A.PriceAfVAT) FROM [dbo].[ORDR] B INNER JOIN [dbo].[RDR1] A ON a.DocEntry=b.DocEntry 


WHERE b.CardCode=T0.CardCode AND a.ItemCode LIKE 'AGU%%%'


AND b.DocStatus='O'),0)[Costo Cuota Fija Agua],



ISNULL

((SELECT SUM(c.PriceAfVAT) FROM [dbo].[ORDR] d INNER JOIN [dbo].[RDR1] c ON c.DocEntry=d.DocEntry 


WHERE d.CardCode=T0.CardCode AND c.ItemCode LIKE 'SEG%%%' AND d.DocStatus='O'),0)[Costo Seguridad],



ISNULL

((SELECT SUM(e.PriceAfVAT) FROM [dbo].[ORDR] f INNER JOIN [dbo].[RDR1] e ON e.DocEntry=f.DocEntry 


WHERE f.CardCode=T0.CardCode AND e.ItemCode LIKE 'RCONX%%%' AND f.DocStatus='O'),0)[Reconexion],



ISNULL

((SELECT SUM(g.PriceAfVAT) FROM [dbo].[ORDR] h INNER JOIN [dbo].[RDR1] g ON g.DocEntry=h.DocEntry 


WHERE h.CardCode=T0.CardCode AND g.ItemCode LIKE 'SUSP%%%' AND h.DocStatus='O'),0)[Suspencion],



ISNULL

((SELECT SUM(i.PriceAfVAT) FROM [dbo].[ORDR] j INNER JOIN [dbo].[RDR1] i ON j.DocEntry=i.DocEntry 


WHERE j.CardCode=T0.CardCode AND i.ItemCode LIKE 'ADM%%%' AND j.DocStatus='O'),0)[Administrativo],



(

ISNULL((SELECT SUM(k.PriceAfVAT) FROM [dbo].[ORDR] l INNER JOIN [dbo].[RDR1] k ON k.DocEntry=l.DocEntry 


WHERE l.CardCode=T0.CardCode AND k.ItemCode LIKE 'EXC%%%' AND l.DocStatus='O'),0)+


ISNULL((SELECT SUM(m.PriceAfVAT) FROM [dbo].[ORDR] n INNER JOIN [dbo].[RDR1] m ON m.DocEntry=n.DocEntry 


WHERE n.CardCode=T0.CardCode AND m.ItemCode LIKE 'AGU%%%' AND n.DocStatus='O'),0)+


ISNULL((SELECT SUM(o.PriceAfVAT) FROM [dbo].[ORDR] p INNER JOIN [dbo].[RDR1] o ON o.DocEntry=p.DocEntry 


WHERE p.CardCode=T0.CardCode AND o.ItemCode LIKE 'SEG%%%' AND p.DocStatus='O'),0)+


ISNULL((SELECT SUM(q.PriceAfVAT) FROM [dbo].[ORDR] r INNER JOIN [dbo].[RDR1] q ON q.DocEntry=r.DocEntry 


WHERE r.CardCode=T0.CardCode AND q.ItemCode LIKE 'RCONX%%%' AND r.DocStatus='O'),0)+


ISNULL((SELECT SUM(s.PriceAfVAT) FROM [dbo].[ORDR] t INNER JOIN [dbo].[RDR1] s ON s.DocEntry=t.DocEntry 


WHERE t.CardCode=T0.CardCode AND s.ItemCode LIKE 'SUSP%%%' AND t.DocStatus='O'),0)+


ISNULL((SELECT SUM(u.PriceAfVAT) FROM [dbo].[ORDR] v INNER JOIN [dbo].[RDR1] u ON u.DocEntry=v.DocEntry


WHERE v.CardCode=T0.CardCode AND u.ItemCode LIKE 'ADM%%%' AND v.DocStatus='O'),0))[Costo Total],


T2

.BALANCE, T2.OrdersBal



from

[dbo].[ORDR] T0 INNER JOIN



[dbo]

.[RDR1] T1 ON T0.DocEntry = T1.DocEntry INNER JOIN


[dbo]

.[OCRD] T2 ON T0.CardCode = T2.CardCode  left join


[dbo]

.[oprj] t3 on t0.Project =t3.prjcode



Where

T3.prjcode = [%0] and T0.DocStatus = 'O'



Group

By T0.CardCode, T0.CardName, T0.DocNum, T0.DocEntry, T2.BALANCE, T2.OrdersBal

Former Member
0 Kudos

Angel gracias por la informacion de como crear los SP, te comento que hice una prueba y me dio el error en el SQl en la Where T2.ProjectCod = [%0]  y lo que hice fue colocalo de esta forma

Where T2.ProjectCod = '[%0] ' con comillas y lo grabo correctamente pero cuando lo ejecuto en el generador de consultas de SAP  me indica que no encontro ningun registro y no me muestra la ventana para seleccionar el proyecto.

y me da una ventana en blanco

Gracias por la ayuda y la enseñansa

Former Member
0 Kudos

Gracias Fernando te comento que hice la corrección de la tabla del proyecto y me desplegó el siguiente error

Como puedo solucionar este error?

De antemano te estoy agradecido.

Saludos

rjovel
Active Participant
0 Kudos

corre el query normal, con T2.ProjectCod = '[%0] ' y deberia funcionarte.

Former Member
0 Kudos

DEbo rectificar, el campo si existe pero no me había dado cuenta, entonces el join debiera ser:

[dbo].[ORDR] T0 INNER JOIN



[dbo]

.[RDR1] T1 ON T0.DocEntry = T1.DocEntry INNER JOIN


[dbo]

.[OCRD] T2 ON T0.CardCode = T2.CardCode  left join


[dbo]

.[oprj] t3 on t2.Projectcode =t3.prjcode



Where

T3.prjcode = [%0] and T0.DocStatus = 'O'

Former Member
0 Kudos

¿si al parámetro lo colocas entre comillas simples te da el mismo error?

Former Member
0 Kudos

fernando madriaza wrote:

¿si al parámetro lo colocas entre comillas simples te da el mismo error?

fernando madriaza wrote:

¿si al parámetro lo colocas entre comillas simples te da el mismo error?

Te estoy agradecido Fernando ya quedo el Query y me desplego la informacion como la deseaba, adjunto encontraran como quedo el query final.

select Distinct T0.CardCode, T0.CardName,

ISNULL((SELECT SUM(X.PriceAfVAT) FROM [dbo].[ORDR] Y INNER JOIN [dbo].[RDR1] X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%'AND Y.DocStatus='O'),0)[Costo Exceso],

ISNULL((SELECT SUM(A.PriceAfVAT) FROM [dbo].[ORDR] B INNER JOIN [dbo].[RDR1] A ON a.DocEntry=b.DocEntry WHERE b.CardCode=T0.CardCode AND a.ItemCode LIKE 'AGU%%%'AND b.DocStatus='O'),0)[Costo Cuota Fija Agua],

ISNULL((SELECT SUM(c.PriceAfVAT) FROM [dbo].[ORDR] d INNER JOIN [dbo].[RDR1] c ON c.DocEntry=d.DocEntry WHERE d.CardCode=T0.CardCode AND c.ItemCode LIKE 'SEG%%%' AND d.DocStatus='O'),0)[Costo Seguridad],

ISNULL((SELECT SUM(e.PriceAfVAT) FROM [dbo].[ORDR] f INNER JOIN [dbo].[RDR1] e ON e.DocEntry=f.DocEntry WHERE f.CardCode=T0.CardCode AND e.ItemCode LIKE 'RCONX%%%' AND f.DocStatus='O'),0)[Reconexion],

ISNULL((SELECT SUM(g.PriceAfVAT) FROM [dbo].[ORDR] h INNER JOIN [dbo].[RDR1] g ON g.DocEntry=h.DocEntry WHERE h.CardCode=T0.CardCode AND g.ItemCode LIKE 'SUSP%%%' AND h.DocStatus='O'),0)[Suspencion],

ISNULL((SELECT SUM(i.PriceAfVAT) FROM [dbo].[ORDR] j INNER JOIN [dbo].[RDR1] i ON j.DocEntry=i.DocEntry WHERE j.CardCode=T0.CardCode AND i.ItemCode LIKE 'ADM%%%' AND j.DocStatus='O'),0)[Administrativo],

(

ISNULL((SELECT SUM(k.PriceAfVAT) FROM [dbo].[ORDR] l INNER JOIN [dbo].[RDR1] k ON k.DocEntry=l.DocEntry WHERE l.CardCode=T0.CardCode AND k.ItemCode LIKE 'EXC%%%' AND l.DocStatus='O'),0)+

ISNULL((SELECT SUM(m.PriceAfVAT) FROM [dbo].[ORDR] n INNER JOIN [dbo].[RDR1] m ON m.DocEntry=n.DocEntry WHERE n.CardCode=T0.CardCode AND m.ItemCode LIKE 'AGU%%%' AND n.DocStatus='O'),0)+

ISNULL((SELECT SUM(o.PriceAfVAT) FROM [dbo].[ORDR] p INNER JOIN [dbo].[RDR1] o ON o.DocEntry=p.DocEntry WHERE p.CardCode=T0.CardCode AND o.ItemCode LIKE 'SEG%%%' AND p.DocStatus='O'),0)+

ISNULL((SELECT SUM(q.PriceAfVAT) FROM [dbo].[ORDR] r INNER JOIN [dbo].[RDR1] q ON q.DocEntry=r.DocEntry WHERE r.CardCode=T0.CardCode AND q.ItemCode LIKE 'RCONX%%%' AND r.DocStatus='O'),0)+

ISNULL((SELECT SUM(s.PriceAfVAT) FROM [dbo].[ORDR] t INNER JOIN [dbo].[RDR1] s ON s.DocEntry=t.DocEntry WHERE t.CardCode=T0.CardCode AND s.ItemCode LIKE 'SUSP%%%' AND t.DocStatus='O'),0)+

ISNULL((SELECT SUM(u.PriceAfVAT) FROM [dbo].[ORDR] v INNER JOIN [dbo].[RDR1] u ON u.DocEntry=v.DocEntry WHERE v.CardCode=T0.CardCode AND u.ItemCode LIKE 'ADM%%%' AND v.DocStatus='O'),0))[Costo Total],

T2.BALANCE, T2.OrdersBal

from [dbo].[ORDR] T0 INNER JOIN

[dbo].[RDR1] T1 ON T0.DocEntry = T1.DocEntry INNER JOIN

[dbo].[OCRD] T2 ON T0.CardCode = T2.CardCode  left join

[dbo].[OPRJ]  T3 on T2.[ProjectCod] = T3.[PrjCode]

Where T0.DocStatus = 'O'  and T3.Prjcode = '[%0]'

Group By T0.CardCode, T0.CardName, T0.DocNum, T0.DocEntry, T2.BALANCE, T2.OrdersBal

Les agradezco a todos por la ayuda.

Saludos Cordiales

Answers (4)

Answers (4)

rjovel
Active Participant
0 Kudos

quita la columna donde haces las sumas, en una de ellas el query encontro un dato que no es sumarizable, el error que te da el sap es porque encuentra un valor que dice Anulada del tipo varchar y no lo puede convertir en INt para hacer la suma, por eso quita la suma osea el campo [Costo Total] y deja que te muestre que encuentra.

si sale algun otro error postealo para ver que es.

Former Member
0 Kudos

Gracias Roger, te comento que quite la columna Costo Total como me indicas y me devolvió el mismo error

De antemano agradezco la ayuda a este mi problemita espero me pueda seguir ayudando para ver en donde este el problema.

Saludos Cordiales

Former Member
0 Kudos

Prueba que después de cada FRON cuando haces referencias  a las tablas empieze con dbo., es decir si hacer referencia a la tabla ordr diga dbo.ordr.

Ademas en cada subquery pon alias distintos, nunca se deben repetir los alias en ninguna parte de la query

rjovel
Active Participant
0 Kudos

Intenta este query:

select T0.CardCode, T0.CardName,

             ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)[Costo Exceso],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'AGU%%%' AND Y.DocStatus='O'),0)[Costo Cuota Fija Agua],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SEG%%%' AND Y.DocStatus='O'),0)[Costo Seguridad],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'RCONX%%%' AND Y.DocStatus='O'),0)[Reconexion],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SUSP%%%' AND Y.DocStatus='O'),0)[Suspencion],

                    ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'ADM%%%' AND Y.DocStatus='O'),0)[Administrativo],

                    (ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'AGU%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SEG%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'RCONX%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'SUSP%%%' AND Y.DocStatus='O'),0)+

                     ISNULL((SELECT SUM(X.PriceAfVAT) FROM ORDR Y INNER JOIN RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'ADM%%%' AND Y.DocStatus='O'),0))[Costo Total],

                     T0.BALANCE, T0.OrdersBal

from   OCRD T0

where T0.ProjectCod = [%0] AND t0.cardtype='C'

Former Member
0 Kudos

Roger te comento que probe tu query y me dio el mismo error

Gracias

rjovel
Active Participant
0 Kudos

quitale el campo de projecto, e intenta de nuevo por favor... que no te pida el proyecto cuando ejecutes el query

Former Member
0 Kudos

Gracias Fernando por tu ayuda te comento que hice lo que me indica y me quedo de esta forma el query

select Distinct T0.CardCode, T0.CardName,

             ISNULL((SELECT SUM(X.PriceAfVAT) FROM dbo.ORDR Y INNER JOIN dbo.RDR1 X ON X.DocEntry=Y.DocEntry WHERE Y.CardCode=T0.CardCode AND X.ItemCode LIKE 'EXC%%%' AND Y.DocStatus='O'),0)[Costo Exceso],

                    ISNULL((SELECT SUM(W.PriceAfVAT) FROM dbo.ORDR Z INNER JOIN dbo.RDR1 W ON W.DocEntry=Z.DocEntry WHERE Z.CardCode=T0.CardCode AND W.ItemCode LIKE 'AGU%%%' AND Z.DocStatus='O'),0)[Costo Cuota Fija Agua],

                    ISNULL((SELECT SUM(B.PriceAfVAT) FROM dbo.ORDR A INNER JOIN dbo.RDR1 B ON B.DocEntry=A.DocEntry WHERE A.CardCode=T0.CardCode AND B.ItemCode LIKE 'SEG%%%' AND A.DocStatus='O'),0)[Costo Seguridad],

                    ISNULL((SELECT SUM(D.PriceAfVAT) FROM dbo.ORDR C INNER JOIN dbo.RDR1 D ON D.DocEntry=C.DocEntry WHERE C.CardCode=T0.CardCode AND D.ItemCode LIKE 'RCONX%%%' AND C.DocStatus='O'),0)[Reconexion],

                    ISNULL((SELECT SUM(F.PriceAfVAT) FROM dbo.ORDR E INNER JOIN dbo.RDR1 F ON F.DocEntry=E.DocEntry WHERE E.CardCode=T0.CardCode AND F.ItemCode LIKE 'SUSP%%%' AND E.DocStatus='O'),0)[Suspencion],

                    ISNULL((SELECT SUM(H.PriceAfVAT) FROM dbo.ORDR G INNER JOIN dbo.RDR1 H ON H.DocEntry=G.DocEntry WHERE G.CardCode=T0.CardCode AND H.ItemCode LIKE 'ADM%%%' AND G.DocStatus='O'),0)[Administrativo],

                      T2.BALANCE, T2.OrdersBal

          from [dbo].ORDR T0 INNER JOIN

                     [dbo].RDR1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN

                     [dbo].OCRD T2 ON T0.CardCode = T2.CardCode

Where T2.ProjectCod = '[%0]' and T0.DocStatus = 'O'

Group By T0.CardCode, T0.CardName, T0.DocNum, T0.DocEntry, T2.BALANCE, T2.OrdersBal

Pero lamento informar que me dio el mismo error.

De antemano agradezco la ayuda.

Former Member
0 Kudos

Roger te comento que quite el que me pidiera el projecto pero resulta que cuando lo ejecuto sigue el mismo error.

Gracias por la ayuda.

Saludos

rjovel
Active Participant
0 Kudos

podrias volver a postear el error en rojo??

Former Member
0 Kudos

Claro Roger este es el error sin solicitar el Projecto.

Gracias por la ayuda

rjovel
Active Participant
0 Kudos

ahora es otro error, postea de nuevo el query que te dio ese error por favor...

former_member210784
Active Contributor
0 Kudos

Hola.

Para el proyecto en la cláusula where colocalo así:

Where T2.ProjectCod = '[%0]'

Saludos cordiales.

Former Member
0 Kudos

Gracias Hector te comento que ya realice la prueba colocando las apostrofes como me indicas y me da el mismo error.

Agradezco la ayuda

Saludos

Former Member
0 Kudos

Hola

Podrías correr tu query en SQLserver e indicar en que linea te esta mandando el error, al parecer el por algún campo y el tipo de datos que esta tratando de manejar.

Saludos

Former Member
0 Kudos

Gracias Angel, te comento que si corro el query en SQL no arroja ningun error

Gracias por tu respuesta

Saludos

Former Member
0 Kudos

Entonces podría ser alguna restricción del generador de consultas de SAP, te recomiendo generar un store procedure y lo mandas a llamar desde el generador de consultas con el comando EXEC

Ejemplo :

creas un store prodecure llamado "prueba" y dentro del sap donde pones el código de sql pones lo siguiente

EXEC prueba

De esta maneja ejecuta la consulta en SQLserver y los datos los muestra en SAP.

Saludos

Former Member
0 Kudos

Qui tale las comillas al valor 'O' del status y prueba.

Un saludo,

Tere

Former Member
0 Kudos

Gracias Teresa por tu respuesta, te comento que hice lo que me indicaste pero me sigue dando el mismo error.

Alguna otra idea de que sea.

De antemano muy agradecido por tu ayuda.

Saludos