Error SWEI Query Manager

Hola chicos…

Tengo un problemita con cierto query nuevo que me están pidiendo para un reporte de SAP B1. La cuestión es que el Query en sí funciona bien en SQL. Me lo llevo a SAP B1 y funciona, pero al momento de ponerle más de 1 solicitud de variable me sale error…

Antes de explicar este es el Query:

SELECT 
              T4.U_OFICINA as 'ID OFICINA', 
	T2.U_NUM_POLIZA AS 'NUM POLIZA',
	T4.U_EMPRESA 'NUM EMPRESA',
	'PAX' as 'PAX',
	T2.U_PRIMA_SEGURO AS 'PRIMA',
	T2.U_FECH_I_RENOV AS 'VIGENCIA DESDE',
	T2.U_FECH_FIN_RENOV AS 'VIGENCIA HASTA',
	T2.DocTotal AS 'IMPORTE',
	T4.CardName AS 'NOMBRE',
	'TIPO EMPRESA' AS 'TIPO EMPRESA',
	
	"PAGO A" = CASE 
		WHEN (T0.TrsfrAcct) is not null and T0.TrsfrAcct <> '' then
			(Select top 1 accntntcod from OACT where OACT.AcctCode = T0.TrsfrAcct)
		WHEN T0.CashAcct is not null and T0.CashAcct <> '' then
			(Select top 1 accntntcod from OACT where OACT.AcctCode = T0.CashAcct)
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
			(Select top 1 accntntcod from OACT where OACT.AcctCode = T0.CheckAcct)
		else 
		'N/A'
		End,
	
	convert (nvarchar(10),T0.DocDate,103) AS 'FECHA DEP',
	"NUM DE CHEQUE O TRANS" = case
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
			str(T5.CheckNum)
		WHEN (T0.TrsfrAcct) is not null and T0.TrsfrAcct <> '' then
			T0.TrsfrRef 
		WHEN T0.CashAcct is not null and T0.CashAcct <> '' then
			T0.CounterRef
		else 
		'SIN REF'
	end,
	'BANCO' AS 'BANCO',
	T3.BaseRef AS 'FOLIO A COBRO',
	T2.DocNum AS 'FOLIO RRS',
	T0.DocNum AS 'FOLIO PAGO',
	T4.U_RESPONSABLE AS 'RESPONSABLE',
	'FOLIO FICHA' AS 'FOLIO FICHA',
	T0.DocTotal AS 'TOTAL',
	T0.docdate as 'FECRANGO'

 
FROM ORCT T0  
     INNER JOIN RCT2 T1 ON T0.[DocEntry] = T1.[DocNum] 
     INNER JOIN OINV T2 ON T1.DocEntry = T2.DocNum
     INNER JOIN OCRD T4 ON T0.[CardCode] = T4.[CardCode] 
     INNER JOIN INV1 T3 ON T2.[DocEntry] = T3.[DocEntry] 
     LEFT OUTER JOIN RCT1 T5 ON T0.[DocEntry] = T5.[DocNum] 
WHERE 
     T4.[U_OFICINA] = [%0] and
     T0.[DocDate] >= [%1] and  
     T0.[DocDate] <= [%2]

Ok, ahora si en el Where al final solo dejo el T4.U_Oficina = [%0] el query funciona a la perfección en lo que agrego los otros 2 me empieza a arrojar error:

“1). [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near the keyword ‘FOR’.
2). [Microsoft][SQL Server Native Client 11.0][SQL Server]Statement ‘’ (SWEI) (s) could not be prepared.”

Cuando en realidad no existen ningún “FOR” en la consulta. Me leí varios temas aquí y los he intentado. Les coloco aquí lo que ya he probado:

Ya intenté de colocar:

DECLARE @FechaInicial AS DATETIME 
DECLARE @FechaFinal AS DATETIME 
DECLARE @Oficina as Varchar
SET @FechaInicial = CONVERT(DATETIME, '[%1]', 112) 
SET @FechaFinal = CONVERT(DATETIME, '[%2]', 112)
Set @oficina = [%0]

...
Where 
     T4.[U_OFICINA] = @Oficina and
     T0.[DocDate] >= @Fechainicial and  
     T0.[DocDate] <= @Fechafinal

Y nada…
Alguna otra idea? o algo que me esté faltando?

1 me gusta

Segun yo el convert que le tienes que hacer a las fechas es el 111 por el formato que tiene sap en las fechas pruebalo a ver que pasa

@Ares17000 Buen día amigo, intentaste declarar las variables asi:

DECLARE @FECHA1 DATETIME
/* WHERE */
  set @FECHA1 = /* F0.DocDate */ '[%0]'
/*SELECT FROM [dbo].[OVPM] F0*/
  DECLARE @FECHA2 DATETIME
  /* WHERE */
  set @FECHA2= /* F0.DocDate */ '[%1]'

tuve el mismo problema, y con esto lo solucione, espero y te funcione. Saludos :mexico:

1 me gusta

Hoy realizo ambas pruebas que me comentan y en un rato les respondo si alguna me ayudó xD

Lo intenté así…

/* select * from OINV x, ORCT y */
DECLARE @FROM AS DATETIME
DECLARE @TO AS DATETIME
DECLARE @OFC AS VARCHAR
SET @FROM = /* x.DocDate */ [%0]
SET @TO = /* x.DocDate */ [%1]
SET @OFC = /* y.u_Oficina */ [%2]

Me sale error… si la pongo así:

/* select * from OINV x */
DECLARE @FROM AS DATETIME
DECLARE @TO AS DATETIME
SET @FROM = /* x.DocDate */ [%0]
SET @TO = /* x.DocDate */ [%1]

.
.
.
WHERE 
     T4.[U_OFICINA] = [%2] and
     T0.[DocDate] >= @FROM and  
     T0.[DocDate] <= @TO

No me reconoce ni me pide la oficina ([%2])

Si declaro la oficina arriba en un @OFC as Int No me reconoce y me arroja el mismo error inicial…

Mi problema es cuando quiero combinar oficina y fechas… si solicito solo las fechas funciona… si solicito solo la oficina funciona, si uno y pido todo arroja los errores.

sobre @Carlos_Rabiel por el momento le quité el COnvert al T0.Docdate para verificar no fuera un problema de ello… sigue igual el problema.

Bueno chicos les comento para cerrar el tema. (He estado metido en 4 proyectos al mismo tiempo y ni tiempo de meterme en el foro había tenido).

Al final el código solo me quedé pidiendo fechas, y las ID de oficina que las filtren en excel… La cosa es que ahora están pidiendo sumas y resultados y demás y deberé llevarme el Query a Una VIsta y de ahí jalarlo en un Crystal para poder cumplir…

Dejo el código por si a alguien le sirve (sin los campos de usuario en sus sistemas claro)

/* select * from OINV x */
DECLARE @FROM AS DATETIME
DECLARE @TO AS DATETIME
SET @FROM = /* x.DocDate */ [%0]
SET @TO = /* x.DocDate */ [%1]

SELECT 
              T4.U_OFICINA as 'ID OFICINA', 
	T2.U_NUM_POLIZA AS 'NUM POLIZA',
	T4.CardCode as 'NUM EMPRESA',
	T2.u_Num_Asegurados as 'PAX',
	T2.U_PRIMA_SEGURO AS 'PRIMA',
	T2.U_FECH_IVIG_AV AS 'VIGENCIA DESDE',
	T2.U_FECH_FVIG_AC AS 'VIGENCIA HASTA',
	T2.DocTotal AS 'IMPORTE',
	T4.CardName AS 'NOMBRE',
	
	"PAGO A" = CASE 
		WHEN (T0.TrsfrAcct) is not null and T0.TrsfrAcct <> '' then
			(Select top 1 accntntcod from OACT where OACT.AcctCode = T0.TrsfrAcct)
		WHEN T0.CashAcct is not null and T0.CashAcct <> '' then
			(Select top 1 accntntcod from OACT where OACT.AcctCode = T0.CashAcct)
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
			(Select top 1 accntntcod from OACT where OACT.AcctCode = T0.CheckAcct)
		else 
		'N/A'
		End,
	

               'FECHA DEP' = CASE 
		WHEN (T0.TrsfrAcct) is not null and T0.TrsfrAcct <> '' then
			T0.TrsfrDate
		WHEN T0.CashAcct is not null and T0.CashAcct <> '' then
			T0.TaxDate
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
			T5.DueDate
		else 
		'ERROR'
		End,


	"NUM DE CHEQUE O TRANS" = case
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
			str(T5.CheckNum)
		WHEN (T0.TrsfrAcct) is not null and T0.TrsfrAcct <> '' then
			T0.TrsfrRef 
		else 
		'SIN REF'
	  end,
	'BANCO' = case
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
		               (Select top 1 BankName from ODSC where ODSC.BankCode = T5.BankCode)
		else 
		'N/A'
	end,
	T3.BaseRef AS 'FOLIO A COBRO',
	T2.DocNum AS 'FOLIO RRS',
	T0.DocNum AS 'FOLIO PAGO',
	T4.U_RESPONSABLE AS 'RESPONSABLE',
	'FOLIO FICHA' = case
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
			str(T5.U_Referencia)
		WHEN (T0.TrsfrAcct) is not null and T0.TrsfrAcct <> '' then
			T0.TrsfrRef 
		WHEN T0.CashAcct is not null and T0.CashAcct <> '' then
			T0.CounterRef

		else 
		'SIN REF'
              End,

	T0.DocTotal AS 'TOTAL',
	T0.docdate as 'FECRANGO',
              "NOMBRE CUENTA" = CASE 
		WHEN (T0.TrsfrAcct) is not null and T0.TrsfrAcct <> '' then
			(Select top 1 AcctName from OACT where OACT.AcctCode = T0.TrsfrAcct)
		WHEN T0.CashAcct is not null and T0.CashAcct <> '' then
			(Select top 1 AcctName from OACT where OACT.AcctCode = T0.CashAcct)
		WHEN T0.CheckAcct is not null and T0.CheckAcct <> '' then
			(Select top 1 AcctName from OACT where OACT.AcctCode = T0.CheckAcct)
		else 
		'N/A'
		End

 
FROM ORCT T0  
     INNER JOIN RCT2 T1 ON T0.[DocEntry] = T1.[DocNum] 
     INNER JOIN OINV T2 ON T1.DocEntry = T2.DocNum
     INNER JOIN OCRD T4 ON T0.[CardCode] = T4.[CardCode] 
     INNER JOIN INV1 T3 ON T2.[DocEntry] = T3.[DocEntry] 
     LEFT OUTER JOIN RCT1 T5 ON T0.[DocEntry] = T5.[DocNum] 
WHERE 

     T0.[DocDate] >= @FROM and  
     T0.[DocDate] <= @TO
1 me gusta