Campo de SAPB1 obligatorio TransactionNotification

Hola, me podrían ayudar por favor, es la primer vez que intento hacer que el campo Comentarios de la Oferta de Venta sea obligatorio ya sea en documentos nuevos o ya existentes (‘A’,‘U’) , en el Transaction Notification (SQL/Programmability / Stored Procedures/ dbo.SBO_SP_Transaction Notification)

IF  @object_type in = '23' AND @transaction_type IN ('A','U')
BEGIN
IF 
(SELECT T0.Comments FROM OQUT T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del) IS NULL
BEGIN
SET @Error = 1
SET @Error_message = 'El campo comentarios no puede estar vacio'
END
END

me aparece error al ejecutarlo , indica que debo dar declarar las variables de todas las palabras que inician con @,
Msg 137, Level 15, State 2, Line 5841
Debe declarar la variable escalar “@object_type”.

Veo que al inicio de todas las consultas estan dadas de alta esas variables, debo darlas de alta junto con mi consulta nuevamente?, agradezco la ayuda, igual es muy obvia mi pregunta, pero en verdad quiero aprender como funciona. GRACIAS.

Hola

quita el “in” que aparece en la sentencia, con el símbolo “=” es suficiente.

Un saludo
Agustín

Es verdad aquí se me pasó, gracias, pero ya intente, tanto con @object_type in ‘23’ / @object_type = ‘23’ y me indica que debo declarar las variables pero este mensaje me aparece para todas las palabras que inician con @, es correcto que este código lo coloco hasta el final de todos los querys, ueno es casi al final como 4 líneas antes de que terminen todas las se tenias.
IF @object_type = ‘23’ AND @transaction_type IN (‘A’,‘U’)
BEGIN
IF
(SELECT T0.Comments FROM OQUT T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del) IS NULL
BEGIN
SET @Error = 1
SET @Error_message = ‘El campo comentarios no puede estar vacio’
END
END

Hola

en el encabezamiento del código del procedimiento almacenado debe aparecer:

ALTER proc [dbo].[SBO_SP_TransactionNotification] 

@object_type nvarchar(20), 				-- SBO Object Type
@transaction_type nchar(1),			-- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose
@num_of_cols_in_key int,
@list_of_key_cols_tab_del nvarchar(255),
@list_of_cols_val_tab_del nvarchar(255)

Un saludo
Agustín

Creo que modificaste tu SP, siempre que lo modifiques solo debes de agregar tu código en donde dice ADD YOUR CODE HERE sin tocar las declaraciones de variables ni la parte de abajo que generara el print, debería de quedar algo así:

USE [BASE]
GO

/****** Object:  StoredProcedure [dbo].[SBO_SP_TransactionNotification]    Script Date: 02/06/2020 12:41:15 p. m. ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER proc [dbo].[SBO_SP_TransactionNotification] 

@object_type nvarchar(20), 				-- SBO Object Type
@transaction_type nchar(1),			-- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose
@num_of_cols_in_key int,
@list_of_key_cols_tab_del nvarchar(255),
@list_of_cols_val_tab_del nvarchar(255)

AS

begin

-- Return values
declare @error  int				-- Result (0 for no error)
declare @error_message nvarchar (200) 		-- Error string to be displayed
select @error = 0
select @error_message = N'Ok'

----------------------------------------- NO MODIFIQUES LO QUE ESTA ARRIBA DE ESTO, BUENO SOLO EL NOMBRE DE LA BASE DE DATOS OBVIO --------------------------------------------------------------------------------

--	ADD	YOUR	CODE	HERE     ---------------------------------------------

IF @object_type = ‘23’ AND @transaction_type IN (‘A’,‘U’)
BEGIN
IF
(SELECT T0.Comments FROM OQUT T0 WHERE T0.DocEntry=@list_of_cols_val_tab_del) IS NULL
BEGIN
SET @Error = 1
SET @Error_message = ‘El campo comentarios no puede estar vacio’
END
END

-----------------------------------------------------------------------------------------

------------------------------------ESTO NO SE MODIFICA--------------------------------------------------------------------------------------------

-- Select the return values
select @error, @error_message

end
GO

saludos.

1 me gusta

muchas gracias, ya detecte la falla y quedo solucionado, el error que estaba cometiendo es que solo seleccionaba la parte de código que agregue por lo tanto no abarcaba el alta de variables, al ejecutar todo sin seleccionar solo una parte fue cómo quedo. (en un video de youtube vi que seleccionaban el código agregado y ejecutaban, por eso fue que aplique lo mismo :frowning: )

Agradezco el apoyo que me brindaron.

Gracias, lo tomaré en cuenta, creo debo volver a leer los lineamientos, tiene mas de 6 meses que no me conectaba.

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.