on 06-12-2013 7:37 PM
Hola buen día compañeros
He creado dos notificaciones dentro del TransactionNotification el problema que tengo es el siguiente coloco uno sobre el código y funciona, coloco el segundo de igual modo funciona al momento de meter los dos juntos no funciona, no he encontrado de meter dos códigos dentro del mismo transac realmente desconozco donde dividirlos y si existe algún comando de sql para separa uno del otro.
Agradezco su atencion de antemano
podrias subir el codigo para entender mejor?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
El código que tengo funcionado es el siguiente:
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'
--------------------------------------------------------------------------------------------------------------------------------
****OBJETIVO: El no de autorización del banco no exista mas de una vez en la orden de venta
declare @u_folio varchar(20)
set @u_folio = ''
if @object_type = '17' and @transaction_type = 'A'
begin
select @u_folio = isnull(u_folio,'') from ORDR where DocEntry = @list_of_cols_val_tab_del
if (select count(u_folio) from ordr where U_Folio = @u_folio) > 1
begin
set @error = -5002
set @error_message = N'Error Critico Número de folio no valido, Favor de verificar'
end
end
--------------------------------------------------------------------------------------------------------------------------------
-- Select the return values
select @error, @error_message
end
Y QUIERO AGREGAR DE UN EJEMPLO QUE VI EN INTERNET EL SIGUIENTE DENTRO DE ESE STORE PROCEDURE DEL TRANSACTIONOTIFICATION :
IF @object_type = 23 and @transaction_type in ('A','U') -- Aqui le decimos que actue solo cuando el tipo de objeto sea 23 (Ventana de Oferta de Ventas, y cuando este en modo Crear y Actualizar
BEGIN
declare @referencia varchar(100) -- Declaramos una variable que guarde el valor de la referencia de SN
-- Agregamos nuestra consulta que nos traera el valor de el numero de referencia , y dicho valor lo asignara a la variable @referencia
SELECT @referencia = OQUT.NumAtCard
FROM OQUT
WHERE @list_of_cols_val_tab_del=OQUT.DocEntry -- @list_of_cols_val_tab_del lo utilizamos para que nos tome el numero de documento actual o que estara en pantalla
if @referencia is null -- Si la consulta nos trae un valor nulo asignara el valor 1 al error y el mensaje de error personalizado, lo cual bloqueara la accion, en caso contrario dejara avanzar
begin
set @error = 1
set @error_message = 'Falta referencia'
end
END
cada vez que hagas eso tenes que cambiar los nombres de las variables, no podes usar dos veces el mismo nombre de variable, o intentar usar una en otro procedure que ya este declarada, quizas por ahi viene el problema
en este ejemplo la variable fue @u_folio
para usar la misma sintaxis tendrias que declarar una nueva @u_folio2
sera ese el problema???
saludos.
Lo tengo de la siguiente manera pero el segundo código deja de funcionar por alguna razón no se si se deba poner algún comando para indicar que es otro código o declarar nuevamente las variables.
Nota el código no marca error solo que cuando ejecuto la acción en el SAP es como si no funcionara y no hace la validación.
Saludos
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'
--------------------------------------------------------------------------------------------------------------------------------
****OBJETIVO: El no de autorizacion del banco no exista mas de una vez en la orden de venta
****/
declare @u_folio varchar(20)
set @u_folio = ''
if @object_type = '17' and @transaction_type = 'A'
begin
select @u_folio = isnull(u_folio,'') from ORDR where DocEntry = @list_of_cols_val_tab_del
if (select count(u_folio) from ordr where U_Folio = @u_folio) > 1
begin
set @error = -5002
set @error_message = N'Error Critico Número de folio no valido, Favor de verificar'
end
end
--------------------------------------------------------------------------------------------------------------------------------
IF @object_type = 23 and @transaction_type in ('A','U') -- BEGIN
declare @referencia varchar(100) --
SELECT @referencia = OQUT.NumAtCard
FROM OQUT
WHERE @list_of_cols_val_tab_del=OQUT.DocEntry --
if (select @referencia) <
begin
set @error = 1
set @error_message = 'Falta referencia'
end
END
-- Select the return values
select @error, @error_message
end
Angel, pega esto y quita los tuyos, y prueba,
If @object_type = '17' and @transaction_type in ( 'A','U')
BEGIN
declare @folioV nvarchar(16)
set @FolioV=(Select isnull(I.U_Folio,'') From ORDR I Where I.DocEntry=@list_of_cols_val_tab_del)
If (@FolioV!='') and exists (Select I.U_Folio From ORDR I Where I.U_FOlio=@FolioV and I.DocEntry!=@list_of_cols_val_tab_del)
Select @error =12,
@error_message = 'Error Critico Número de folio no valido, Favor de verificar'
END
IF @object_type = 23 and @transaction_type in ('A','U')
BEGIN
declare @referenciaC varchar(100)
SELECT @referenciaC = OQUT.NumAtCard
FROM OQUT
WHERE @list_of_cols_val_tab_del=OQUT.DocEntry
if (select @referenciaC) IS null
begin
select @error = 1,
@error_message = 'Falta referencia'
end End
Saludos
Alessandro.
en la linea 5 estas haciendo on loop al mismo documento que se esta creando, y deberia buscar en toda la tabla si ya existe.
solo eso cambie en tu codigo como sugerencia.
Agradezco a todos por la solución efectivamente estaba mal la consulta inicial, pero no lo había notado por que en teoría el patner fue quien la dejo establecido y no había puesto atención.
Saludos y gracias por su aportacion
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
107 | |
12 | |
11 | |
6 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.