top of page
Buscar
  • CLC Consulting

USO DE TRANSACTION NOTIFICATION

TN es un procedimiento almacenado en las bases de datos de SAP Business One en donde puede incluir validaciones para que se disparan al cumplir ciertas condiciones como ingresen datos erróneos o se les olvide llenar un campo obligatorio.


la ruta es la siguiente: en SQL sobre la base que deseamos realizar el TN \ [Programmability] \ [Stored Procedures] \ [SBO_SP_TransactionNotification].



/****** Object: StoredProcedure [dbo].[SBO_SP_TransactionNotification] Script Date: 10/12/2012 12:24:21 ******/


SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER proc [dbo].[SBO_SP_TransactionNotification]

@object_type nvarchar(20), -- SBO Object Type


Devuelve el número del objeto de la transacción que se está ejecutando. En SAP B1 cada transacción tiene un número identificatorio como la huella digital, ejemplo, las facturas de cliente son el @object_type 13, las de proveedores @object_type 18

@transaction_type nchar(1), -- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose

En SAP B1 existen 5 tipos de transacciones y la validacion dependera de las que seleccionemos

@num_of_cols_in_key int,

Devuelve el número de campos llave de la tabla que se está afectando.

@list_of_key_cols_tab_del nvarchar(255),

Devuelve el nombre de los campos llave de la tabla que se está afectando.


@list_of_cols_val_tab_del nvarchar(255)


Devuelve el valor del campo llave de la transacción que se está ejecutando en SAP B1, ejemplo, si estas agregando un cliente nuevo devolverá el código interno del ese cliente. Esta es la variable clave a la hora de hacer un script para validar en SAP B1


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


Es una variable de salida, por defecto tiene el valor 0 lo que significa que no hay ningún error en la transacción que se está ejecutando. Para bloquear una transacción que no cumple ciertos parámetros hay que asignarle un valor numérico distinto a 0 a esta variable.


select @error_message = N'Ok'


Contiene el mensaje que se mostrará al usuario cuando la transacción que este ejecutando sea no cumpla con las condiciones establecidas


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


ADD YOUR CODE HERE :


incluir sentencias SQL para validar las transacciones en SAP B1.



EJEMPLO:


Que el nombre de un cliente y proveedor no pueda estar en blanco cuando lo ingresen o modifiquen.


lo primero es declarar cuales son los valores de la transacción para que se active la validación. Para este caso usamos el tipo de objeto 2 (socios de negocios) y las transacciones A y U, crear y modificar.


IF @object_type=2 AND @transaction_type IN ('A','U')

BEGIN

END



Luego agregamos dentro del BEGIN la validación. Usamos la tabla OCRD porque esta es la que contiene los socios de negocios (clientes y proveedores), el campo llave de esta tabla es el CardCode y como necesitamos que sea el que se está usando en la transacción le hacemos el match con la variable @list_of_cols_val_tab_del.



IF @object_type=2 AND @transaction_type IN ('A','U')

BEGIN

IF (SELECT ISNULL(T0.CardName,'') FROM OCRD T0 WHERE T0.CardCode=@list_of_cols_val_tab_del)=''

BEGIN

SELECT @error=200, @error_message='Nombre del socio de negocios no puede estar vacio'

END

END



EJEMPLO 2:



valida que el campo del proyecto no este vacio en un pedido de cliente



IF @transaction_type IN ('A', 'U') AND

(@Object_type = '22')

BEGIN

If EXISTS (SELECT T.Project

FROM POR1 T

WHERE T.docentry = @list_of_cols_val_tab_del and

(T.Project IS NULL or T.Project=''))

BEGIN

SET @error = 2

SET @error_message = 'Falta Proyecto'

End

END


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


-- Select the return values


select @error, @error_message


end

1823 visualizaciones0 comentarios

Entradas Recientes

Ver todo

LICENCIA PERDIDA SAP (LICENSE GONE MISSING SAP)

SQL 1) Asegúrese de que no hay ningún usuario conectado a SAP Business One (puede asegurarse de esto si logra reiniciar la instancia de SQL). 2) Detenga el Licence Manager 3) Localice este archivo y r

bottom of page