cancel
Showing results for 
Search instead for 
Did you mean: 

error must declare the scalar variable

angeles804
Active Contributor
0 Kudos

por que me marca ese error una consulta?


DECLARE  @feci AS datetime
DECLARE @fecf AS datetime

SET @FECI=(SELECT DISTINCT(T0.DOCDATE) FROM ORTT T0 WHERE T0.DOCDATE='[%0]')
SET @FECF=(SELECT DISTINCT(T0.DOCDATE) FROM ORTT T0 WHERE T0.DOCDATE='[%1]') 

EXEC DBO.COMPARATIVO @FECI,@FECF


Edited by: mary merecias on Nov 17, 2011 3:15 PM

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member188440
Active Contributor
0 Kudos

Puedes poner el error completo?

angeles804
Active Contributor
0 Kudos

microsoft sql native client, sql server, incorrect syntax near @Feci, must declare the scalar variable "@fecf', statement contratos de servicios

yo siento como que es mi version de SAP , que es 2007 sp 00 pl 30.

por que el stored se ejecuto bien y al momento de querer obtener las fechas me marca error.

en sql server no.

Edited by: mary merecias on Nov 17, 2011 3:35 PM

former_member188440
Active Contributor
0 Kudos

Si lo estas llamando desde sap, porque no intentas esto



/*SELECT FROM [dbo].[ORTT T1] T1*/         
 declare  @FECI as datetime          
 /* WHERE */                                  
 set @FECI= /* T1.Docdate */ '[%1]'

/*SELECT FROM [dbo].[ORTT T1] T1*/         
 declare  @FECF as datetime
 /* WHERE */                                  
 set @FECF= /* T1.docdate */ '[%2]'

exec [sp_COMPARATIVO] @FECI,@FECF


angeles804
Active Contributor
0 Kudos

No mauricio asi no funciono creo que es la version del sap ya que en sql server si jala bien y si pongo las variables de fecha en el stored si me trae la info, pero yo quiero que la seleccionen desde sap

former_member188440
Active Contributor
0 Kudos

Te marco algun error el codigo?

angeles804
Active Contributor
0 Kudos

el codigo no, son las variables. si pongo este código me marca que no tiene un select MUST SPECIFY TABLE TO SELECT FROM


Declare @fec1 as datetime
Declare @fec2 as datetime

SET @fec1=[%0]
SET @fec2=[%1] 

SELECT DISTINCT(T0.itemcode),T0.itemname,T0.onhand,	
      (SELECT SUM(PCH1.linetotal) AS TOTAL
		 FROM OPCH
    		INNER JOIN pch1 on OPCH.docentry=PCH1.docentry 
            INNER JOIN OITM ON OITM.ITEMCODE=PCH1.ITEMCODE
		 WHERE pch1.targettype<>'19' and OITM.itemcode=T0.ITEMCODE AND OPCH.DOCDATE>=@FEC1 AND OPCH.DOCDATE<=@fec2)AS 'TOTAL COMPRAS',
	(SELECT SUM(PCH1.QUANTITY) AS TOTAL
		 FROM OPCH
    		INNER JOIN pch1 on OPCH.docentry=PCH1.docentry 
            INNER JOIN OITM ON OITM.ITEMCODE=PCH1.ITEMCODE
		 WHERE pch1.targettype<>'19' and OITM.itemcode=T0.ITEMCODE AND OPCH.DOCDATE>=@fec1 AND OPCH.DOCDATE<=@fec2 ) AS 'PIEZAS COMPRADAS',
      (SELECT SUM(INV1.linetotal) AS TOTAL
		 FROM OINV
    		INNER JOIN INV1 on OINV.docentry=INV1.docentry 
            INNER JOIN OITM ON OITM.ITEMCODE=INV1.ITEMCODE
		 WHERE INV1.targettype<>'14' and OITM.itemcode=T0.ITEMCODE AND OINV.DOCDATE>=@fec1 AND OINV.DOCDATE<=@fec2)AS 'TOTAL VENTAS',
	(SELECT SUM(INV1.QUANTITY) AS TOTAL
		 FROM OINV
    		INNER JOIN INV1 on OINV.docentry=INV1.docentry 
            INNER JOIN OITM ON OITM.ITEMCODE=INV1.ITEMCODE
		 WHERE INV1.targettype<>'14' and OITM.itemcode=T0.ITEMCODE AND OINV.DOCDATE>=@fec1 AND OINV.DOCDATE<=@fec2 ) AS 'PIEZAS VENDIDAS'
	FROM OITM T0
GROUP BY T0.itemcode,T0.itemname,T0.onhand

en SQL SERVER si funciona bien

Edited by: mary merecias on Nov 17, 2011 4:50 PM

Edited by: mary merecias on Nov 17, 2011 4:51 PM

Edited by: mary merecias on Nov 17, 2011 4:53 PM

former_member188440
Active Contributor
0 Kudos

pero que no lo estabas llamando como un stored?

Como stored, si le mandas los parametros como te lo puse, deberia funcionar!


SET @fec1=[%0]
SET @fec2=[%1] 

Esta parte no debe ir en tu query, pues el SET, se lo estas mandando desde SAP

angeles804
Active Contributor
0 Kudos

mauricio, si lo pongo en sap todo el query es cuando no me funciona y bueno también cuando esta como stored tampoco funciona.

former_member188440
Active Contributor
0 Kudos

En teoria en SAP unicamente guardas esto como query



/*SELECT FROM [dbo].[ORTT T1] T1*/         
 declare  @FECI as datetime          
 /* WHERE */                                  
 set @FECI= /* T1.Docdate */ '[%1]'
 
/*SELECT FROM [dbo].[ORTT T1] T1*/         
 declare  @FECF as datetime
 /* WHERE */                                  
 set @FECF= /* T1.docdate */ '[%2]'
 
exec [sp_COMPARATIVO] @FECI,@FECF
 

El resto del query que pusiste arriba, va como stored procedure

angeles804
Active Contributor
0 Kudos

igualito lo pase y nada me temo que es el SAP BUA BUA NI MODOS SEGUIRE BUSCANDO LA MANERA A VER COMO LE HAGO.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Hola Mary

Pruebalo de esta manera


DECLARE @VAR INT, @FEC1 DATETIME,@FEC2 DATETIME

SET @VAR=(SELECT TOP 1 A.TransId FROM [dbo].[JDT1] A WHERE A.RefDate BETWEEN '[%0]' AND '[%1]')
SET @FEC1='[%0]'
SET @FEC2='[%1]' 

Saludos

angeles804
Active Contributor
0 Kudos

lo puse felipe como me dijiste pero no funciono así. le agregue unas cuantas cositas y jalo

Gracias a los dos me ayudan mucho en serio :):D!!


DECLARE @VAR AS INT, @FEC1 AS DATETIME,@FEC2 AS DATETIME

SET @VAR=(SELECT TOP 1 A.TransId FROM dbo.JDT1 A WHERE A.RefDate BETWEEN '[%0]' AND '[%1]')
SET @FEC1='[%0]'
SET @FEC2='[%1]'

EXEC  COMPARATIVO @FEC1,@FEC2

en mi intuición me dice que el parche no acepta algo de eso por que en otra version posterior si podía hacer esto.