SBO_SP_PostTransactionNotice

Todos los que hayan mirado los procedimientos almacenados en la base de datos de SAP Business One ya habrán visto que existen 2 procedimientos que parecen iguales, pero no lo son.
Estos son, el PostTransactionNotice y el TransactionNotification.

Al abrir ambos SPs podemos fijarnos que ambos tienen la misma sintax, pero cada uno cumple una función diferente.

No hablaré del TransactionNotification ya que el 90% de los consultores y encargados de TI deben saber para qué sirve.

Bien, el PostTransactionNotice es un “After Event”, ¿qué quiere decir esto?, que se ejecuta después de que se realiza una acción, ¿qué acción?, cualquier nuevo objeto, modificación, eliminación, etc.
Esto quiere decir que así como el TransactionNotification se ejecuta cada vez que se crea, modifica, cierra, elimina o actualiza un documento, el PostTransactionNotice se ejecuta de la misma manera, pero, como es un after event solo se ejecuta después de que la acción se graba en la base datos, por lo que aquí no podemos detener la transacción como lo hacemos en el TransactionNotification.

Ahora, ustedes dirán, ¿para qué sirve esto si no podemos detener la transacción?, primero, el procedimiento no fue pensado para eso, segundo, esto puede servir para insertar información en una base de datos externa, información que si existe en SAP.

Un caso práctico, si utilizan un insert a una BD externa en el TransactionNotification, si la transacción tiene errores y es bloqueada para que el usuario la corrija, igual se habrá insertado el dato en la BD externa. Al contrario de haberlo puesto en el PostTransactionNotice, ya que aquí se espera hasta que la transacción está efectivamente grabada en la base de datos. O quizas generan TXT o XML de los documentos creados en SAP B1, para lo cual también es más práctico utilizar el PostTransactionNotice.

Una manera de aplicar este procedimiento almacenado, es para registrar todas las transacciones de SAP en una BD externa.

Primero, creamos la BD externa y la tabla, si ya tienen una BD externa solo creen la tabla.

Una vez creada la BD y tabla, vamos al PostTransactionNotice y agregamos el siguiente codigo.

Con esos 2 pasos, todas las transacciones que se realicen en la BD de SAP, quedarán registradas en la BD externa como en la siguiente imagen.

ScreenShot053

Gracias por su visita y espero que les haya gustado.

Publicado en SAP Business One Etiquetado con: , ,
6 Comentarios en “SBO_SP_PostTransactionNotice
  1. Christian dice:

    Q buen post!
    Como podría hacer para obtener el usuario que esta grabando esa transacción y así poder guardarla también en esa tabla junto a los demás datos?
    Gracias.

  2. Felipe Loyola dice:

    Para obtener el usuario, debes usar una subquery en una variable y luego agregarlo al insert.
    Por Ejemplo

    Declare @Usuario nvarchar(128)
    select @Usuario=Case @object_type when 13 then (select T0.UserCode from OUSR T0 inner join OINV T1 on T1.UserSign=T0.UserSign and T1.DocEntry=@list_of_cols_val_tab_del) when 14 then (select T0.UserCode from OUSR T0 inner join ORIN T1 on T1.UserSign=T0.UserSign and T1.DocEntry=@list_of_cols_val_tab_del) End

    INSERT INTO [RP_SAP9]..[RegTransact_SBODemoCL]
    VALUES(@object_type,@transaction_type,@num_of_cols_in_key,@list_of_key_cols_tab_del,@list_of_cols_val_tab_del,@Usuario)

    Recuerda que debe ser por cada tipo de objeto.

    Saludos
    FLR

  3. DYRG dice:

    si quiero notificar por correo a los usuarios que tienen ´documentos pendientes por autorizar? que cuando se cree una Orden de Compra y tenga un modelo de autrizacion automaticamente envie un mail a los usuarios que tienen que autorizar la Orden de Compra

  4. Daniel dice:

    Hola tengo una duda, dado a que quiero realizar una validación de los artículos que entran y salen de SAP y que se actualice su cantidad total en una tabla alterna pero si le realizo un INSERT no me duplicaría los artículos?

    • Buenas tardes

      Eso dependerá de como escribas tu código.
      Recuerda que el PostTN informa de las transacciones que se están realizando en SAP, la forma en la que manejes esa información y la repliques en otro lado es definición tuya.

      Saludos

  5. Ariel Plata dice:

    Me gustaría Informarle a todos los usuarios que cumplen Ciertas condiciones en una tabla de usuario

    Enviarles un correo Electrónico
    no lo hago por una alarma porque como repito no son todos los usuarios
    son los que cumplen 3 condiciones

    de antemano muchas gracia por tu amable respuesta

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*