cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction Notification

Former Member
0 Kudos

Estimados.

Como puedo empezar a trabajar con el TRANSACTION NOTIFICATION entontré este manual de SAP pero no me ayudó mucho: http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e991e2b9-0901-0010-0395-ef5268b00...

Mis Principales dudas:

¿Donde está el Transaction Notification?

¿como puedo empezar a generar Stores Procedures?

Hay que instalar algun ADD-ON?

Necesito bloquear para algunos usuarios el campo nombre del Socio de Negocios en los datos maestros y según lo que leí el TN sería el camino.

Cualquier orientación la agradezco.

Saludos.

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

El transaction notification es un procedimiento almacenado en la base de datos de SBO.

Se ejecuta cada vez que se realiza alguna transaccion en la base de datos y es posible detener dicha transaccion aplicando lo que dice el documento que dejaste en el link.

Cada transaccion en SBO tiene un identificador único (ObjectType), con este identificador es posible filtrar y validar la transaccion.

Además del identificador unico de cada tipo de transaccion, en transation tambien nos informa 2 cosas claves:

     La accion que se esta realizando(TransactionType), Add, Update, Delete, cLose, Cancel.

     La llave primaria del registro de la transaccion (el docentry, cardcode, itemcode) dependiendo del objeto.

Con esos 3 datos es posible construir una validación, ejemplo, quiero bloquear cualquier modificación o creación de clientes que no tienen una "C" en el cardcode

*** Lo hare por partes para poder explicarlo

if @object_type='2' /* el 2 es el identidicador unico del objeto business partners*/

begin

     if @transaction_type in ('A','U') /* A de add y U de update, es decir en la creación y actualización*/

     begin

           /* la variable @list_of_cols_val_tab_del me informa que cliente se esta modificando o creando */

          if exists(select CardCode from OCRD where CardCode = @list_of_cols_val_tab_del and CardCode not like '%C%' and cardtype ='C')

          begin

               /*si la condición se cumple, es decir, el cliente que se esta modificando o actualizando no tiene una C en el cardcode seteamos las variables de error*/

               set @error  = 19 /* un numero interger */

               set @error_message = 'mi error'

          end

     end

end

Cuando el transaction termina de ejecutarse, devuelve las 2 variables @error, @error_message, si al final @error es <> a 0 la transaccion no hará un commit (no quedara en la base de datos) y se hará un rollback de los cambios hechos por la transaccion.

Eso es lo mas detallado que puedo ser

Saludos

Former Member
0 Kudos

Muchas Gracias por tu respuesta Felipe.

La validación que construiré la ingreso posteriormente tal como una Query?

felipe_loyolarodriguez
Active Contributor
0 Kudos

La debes ingresar al transaction desde donde dice "Add your code here", entre eso y el select final

Luego presionas F5 o ejecutar y grabas el procedimiento incluida tu validación.

Atte.

Answers (0)