Hace poco tiempo tuve que realizar un transaction notification por lo que revisando algunos artículos opte por documentar alguno de ellos.

Para poder generar un transaction, primero debes dar de baja el existente y crear uno nuevo, es importante respaldar el código ya existente.

DROP PROCEDURE SBO_SP_TransactionNotification;

Requieres varios parámetros que hay que comprender para que sea más fácil modificar o crear uno existente.

  • :object_type -> Indicará que objeto o ventana de SAP Business One 9.2 version for SAP HANA se verá afectada con el código, por ejemplo el pedido es el objeto 17, datos maestros de socio de negocios es el 2, Factura de clientes 13, para ver un listado completo, puede ser consultado en el siguiente vínculo. https://blogs.sap.com/2017/04/27/list-of-object-types/
  • :transaction_type -> Es el tipo de transacción a realizar, las posibles opciones son A(Agregar registro), U(Actualizar),D (Eliminar), C(Cancelar), L (Cerrar)
  • :num_of_cols_in_key -> Regresa el número de columnas o campos clave del registro por ejemplo en OCRD es 1 (CardCode), OITM es 1(ItemCode), OSPP es 2, OIBT es 3.
  • :list_of_key_cols_tab_del -> Regresa los campos claves con los nombres de las columnas separadas por tabuladores por ejemplo OIBT es ItemCode, BatchNum, WhsCode
  • :list_of_cols_val_tab_del -> Regresa los valores delimitados por tabuladores de la llave primaria, en clientes sería C0001, C0002, C0003, dependiendo de la tabla o nomenclatura de los códigos

 

Ejemplo 1

Para este primer ejemplo práctico necesitamos crear una variable de tipo contador, y será agregada al final del código ya existente

— Return values– Return values

error  int; — Result (0 for no error)

error_message nvarchar (200); — Error string to be displayed

contador int;

Después de «Add you code here», pondremos el siguiente código, el cuál evitará que el código del cliente no sea registrado o actualizado si no se ha capturado un nombre de cliente.

——————————————————————————————————————————–

—    ADD   YOUR  CODE  HERE

——————————————————————————————————————————–

IF :object_type=’2′ AND (:transaction_type=’A’ OR :transaction_type=’U’) THEN

select count(*) into contador from BASEDEDATOS.»OCRD» T0 where T0.»CardCode» = :list_of_cols_val_tab_del and IFNULL(T0.»CardName»,»)=»;

if :contador>0 then

                  error := -111;

                  error_message := ‘Captura el nombre del cliente’;

endif;

ENDIF;

Ejemplo 2

 

IF :object_type=’17’ AND (:transaction_type=’A’ OR :transaction_type=’U’) THEN
contador := 0;
select count(*) into contador from BASEDEDATOS.»RDR1″ T0 where T0.»DocEntry» = :list_of_cols_val_tab_del and IFNULL(T0.»Project»,») = »;
if :contador>0 then
error := -10004;
error_message := ‘Capturado un proyecto válido a nivel de línea’;
end if;
END IF

Son unos ejemplos sencillos para clarificar el uso del transaction notification en SAP Business One 9.2 version for SAP HANA.

Espero les sea de utilidad.

 

Una respuesta a “HANA Transaction Notification”

  1. Gran aporte, muchas gracias por tu claridad

Deja un comentario

Tendencias