Skip to Content

Archived discussions are read-only. Learn more about SAP Q&A

Variable en sap

Hola buenas tardes, estoy probando una consulta en sap y necesito saber como hago para crear una variable y que esta pueda ser ingresada por el usuario, les explico lo que pasa es que necesito que cuando el usuario abra la consulta digite el numero de dias intente de la siguiente forma:

declare @tp nvarchar(3)

set @tp = [%0]

pero no consigo que funcione, este es el codigo que tengo:

declare @tp NVARCHAR(3)

Set @tp = 120 "si lo dejo con valor fijo funciona de maravilla"

SELECT DISTINCT T1.[SWW], T1.[ItemCode], T0.[Dscription], T2.[ItmsGrpNam], T3.[FirmName] as Linea, T1.[U_Subgrupo],

CASE WHEN

SUM(T0.[Quantity])/ ROUND((DATEDIFF(dd, (getdate()-90), getdate())/30.0),0) * @tp/30 - T1.[OnHand] >0

THEN  SUM(T0.[Quantity])/ ROUND((DATEDIFF(dd, (getdate()-90), getdate())/30.0),0) * @tp/30 - T1.[OnHand]

WHEN SUM(T0.[Quantity])/ ROUND((DATEDIFF(dd, (getdate()-90), getdate())/30.0),0) * @tp/30 - T1.[OnHand]  <0

THEN SUM((T0.[Quantity])/ ROUND((DATEDIFF(dd, (getdate()-90), getdate())/30.0),0) * @tp/30 - T1.[OnHand])*0 END as SUGERIDO,

SUM(T0.[Quantity])/ ROUND((DATEDIFF(dd, (getdate()-90), getdate())/30.0),0) * @tp/30 as PROYECCION ,

T1.[OnHand] AS EXISTENCIAS,

T1.[OnHand] / (SUM(T0.[Quantity])/ROUND((DATEDIFF(dd, (getdate()-90), getdate())/30.0),0)) as CAPACIDAD_INVENTARIO,

SUM(T0.[Quantity])/ ROUND((DATEDIFF(dd, (getdate()-90), getdate())/30.0),0) AS CONSUMO_TOTAL,

SUM(T0.[Quantity]) AS VENTA_ULTIMOS_3_MESES,

@tp/30 as TIEMPO_REPOSICION

FROM INV1 T0 

INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode

INNER JOIN OITB T2 ON T1.ItmsGrpCod = T2.ItmsGrpCod

INNER JOIN OMRC T3 ON T1.FirmCode = T3.FirmCode

WHERE T2.[ItmsGrpNam]=[%0]  and T0.[DocDate] >= (getdate()-90) and T0.[DocDate] <= getdate()

GROUP BY T1.[ItemCode], T2.[ItmsGrpNam], T1.[OnHand],T0.[Dscription],T1.[SWW],T3.[FirmName], T1.[U_Subgrupo]

ORDER BY T3.[FirmName], T1.[U_Subgrupo]

for browse

lo que quiero es que en vez de poner un valor fijo el usuario pueda poner el numero de dias que quiera, espero me entiendan y me colaboren ya que es algo que necesito con suma urgencia.

Mil gracias a todos por su ayuda

Former Member
Former Member replied

Lender,

Tienes que crear el Store Procedure desde SQL Server.

Seria algo así:

--===========================================================

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[TU_SP_AQUI]

     -- Aqui va el nombre de la variable que va recibir el valor numérico

  @Numero as INT

AS

BEGIN

 

  -- Insert statements for procedure here

  -- Aqui insertas el codigo que tienes (entre el begin y el end)

 

END

GO

--===========================================================

La consulta quedaría algo asi, para que sea de tipo de dato numérico.

--===============================================

/*SELECT FROM [dbo].[OINV] T1] T1*/        

declare  @numero as INT         

/* WHERE */                                 

set @numero= /* T1.DocNum */ [%0]

EXEC [dbo].[TU_SP_AQUI] @numero

--===============================================

2 View this answer in context
Not what you were looking for? Ask a question