Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bueno, dijimos que es un procedimiento almacenado, as que lo podemos encontrar en la ruta [BD]
\ [Programmability] \ [Stored Procedures] \ [SBO_SP_TransactionNotification]. La estructura por
defecto del TN es la siguiente.
USE [NOMBRE_DE_LA_BD]
GO
/****** 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
@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'
-------------------------------------------------------------------------------------------------------------ADD YOUR CODE HERE
--------------------------------------------------------------------------------------------------------------- Select the return values
select @error, @error_message
end
Donde dice, "ADD YOUR CODE HERE" es desde donde nosotros podemos incluir sentencias
SQL para validar las transacciones en SAP B1.
Primero, analizaremos las variables y luego como escribir un cdigo que sea satisfactorio.
@object_type, Devuelve el nmero del objeto de la transaccin que se est ejecutando. En SAP B1
cada transaccin tiene un nmero identificatorio como la huella digital, ejemplo, las facturas de
cliente son el @object_type 13, las de proveedores @object_type 18, etc, etc.
@error, Es una variable de salida, por defecto tiene el valor 0 lo que significa que no hay ningn
error en la transaccin que se est ejecutando. Para bloquear una transaccin que no cumple
ciertos parmetros hay que asignarle un valor numrico distinto a 0 a esta variable.
@error_message, Contiene el mensaje que se mostrar al usuario cuando la transaccin que este
ejecutando sea no cumpla con las condiciones establecidas.
Ya hemos explicado las variables del TN, ahora procederemos a hacer algunos cdigos de
ejemplo.
El primer cdigo ser que el nombre de un cliente y proveedor no pueda estar en blanco cuando
lo ingresen o modifiquen.
Empezamos, lo primero es declarar cuales son los valores de la transaccin para que se active
la validacin. Para este caso usamos el tipo de objeto 2 (socios de negocios) y las transacciones A
y U, crear y modificar.
SET @error=104
IF
(SELECT
CHARINDEX('@',T0.E_Mail,1)
FROM
OCRD
T0
WHERE
T0.CardCode=@list_of_cols_val_tab_del)<=0
SET @error=105
IF (SELECT T0.CardType FROM OCRD T0 WHERE T0.CardCode=@list_of_cols_val_tab_del) IN
('C','L')
BEGIN
IF (SELECT TOP 1 T0.CntctCode FROM OCPR T0 INNER JOIN OCRD T1 ON
T1.CardCode=T0.CardCode
WHERE
T1.CardCode=@list_of_cols_val_tab_del
AND
T1.CardType<>'S') IS NULL
SET @error=106
END
SET @error_message=
CASE @error
WHEN 101 THEN 'Telefono obligatorio'
WHEN 102 THEN 'Telefono sin guiones'
WHEN 103 THEN 'Telefono debe tener 8 numeros'
WHEN 104 THEN 'E-mail obligatorio'
WHEN 105 THEN 'Formato de e-mail invalido, el formato debe ser "cuenta@dominio.com"'
WHEN 106 THEN 'No hay persona de contacto'
END
END
Los nmeros de errores no deben repetirse para que no haya confusin con los mensajes.