Optimizar el Transaction Notification
Hace mucho que no escribo un articulo, no por falta de tiempo o ganas de escribir, si no que por no saber sobre que escribir.
Hoy les voy a enseñar como evitar demoras en el SP Transaction Notification, evitando que ejecute codigo adicional cuando ya encontró un error.
Este es un ejemplo con 2 validaciones en el Transaction Notification
-------------------------------------------------------------------------------------------------------------------------------- -- ADD YOUR CODE HERE if @object_type='18' and @transaction_type in ('A','U') begin if (Select T0.CardName from OPCH T0 where T0.DocEntry=@list_of_cols_val_tab_del) like '%Banco%' begin set @error=4 set @error_message = 'NO PUEDE CREAR FACTURAS A ESE PROVEEDOR' end if (select T0.DocDate from OPCH T0 where T0.DocEntry=@list_of_cols_val_tab_del) < '20150201' begin set @error=5 set @error_message = 'NO PUEDE CREAR FACTURAS CON ESA FECHA' end end -------------------------------------------------------------------------------------------------------------------------------- -- Select the return values select @error, @error_message
A medida que vayamos ingresando validaciones, el codigo va creciendo, lo cual puede acarrear demoras cada vez que entra a cada validacion.
Para evitar eso, se utiliza la instruccion GoTo y se define una etiqueta al final del Transaction, la instruccion GoTo se agrega despues de setear las variables @error y @error_message, quedando de la siguiente manera
-------------------------------------------------------------------------------------------------------------------------------- -- ADD YOUR CODE HERE if @object_type='18' and @transaction_type in ('A','U') begin if (Select T0.CardName from OPCH T0 where T0.DocEntry=@list_of_cols_val_tab_del) like '%Banco%' begin set @error=4 set @error_message = 'NO PUEDE CREAR FACTURAS A ESE PROVEEDOR' goto FinTN end if (select T0.DocDate from OPCH T0 where T0.DocEntry=@list_of_cols_val_tab_del) < '20150201' begin set @error=5 set @error_message = 'NO PUEDE CREAR FACTURAS CON ESA FECHA' goto FinTN end end -------------------------------------------------------------------------------------------------------------------------------- FinTN: -- Select the return values select @error, @error_message
En ese caso, cuando la validacion detecte que se cumplen las condiciones y setea las variables con el error y la descripcion correspondiente, se dirigirá automaticamente al final del TN (donde se encuentra la etiqueta con el nombre FinTN) y no procesará todo el codigo que siga (porque ya encontramos un error, para que seguir validando si el usuario debe corregir ese error primero).
Por lo tanto, es recomendable colocar un goto despues de cada seteo de error.
Saludos
se puede agregar un hipervinculo a ese mensaje?
Buenas tardes Felipe, quisiera realizar la siguiente consulta. Como puedo evitar por transaction que los usuarios creen un factura de proveedores sin antes haber ingresado un valor a dos campos consecutivos.
De antemano agradezco la ayuda.
Saludos,
Felipe, te comento que en base al ejemplo que has dejado al principio logre realizar ya lo que necesitaba. Sin embargo si quisiera consultarte algo similar, tengo que hacer prácticamente la misma restricción solo que en pagos efectuados a nivel de cuenta. ¿Podría indicarme como sería?
Para SAP Business One Hana, es el mismo comando ?
No existe el comando «goto» en HANA, debes validar con un IF la variable :error
Atte.