Stored procedure y Trigger en hana studio

Buen día compañeros del foro quisiera su ayuda de ustedes expertos en el tema:
Estoy realizando en hana studio un SP y un trigger que trabajaran juntos.
El SP que en teoría solo actualiza un campo de S a P:

CREATE PROCEDURE Status_SswitchonP 
(
	in obj_id int,
	in dockey int,
	in docnum int,
	in ItemCode nvarchar (200)
)
AS

--if(obj_id = 17)
begin
	UPDATE OITW SET "Estatus"='P' WHERE "ItemCode"=ItemCode;

end;

Trigger:

Create trigger Update_SonP
AFTER INSERT, UPDATE, DELETE ON OITW
REFERENCING NEW ROW AS newrow OLD ROW AS oldrow
FOR EACH ROW
BEGIN
	IF(:newrow "WhsCode"='T'
	CALL "Status_SswitchonP"();
	END IF;
END;

No se como mandar el parámetro al stored procedure, la otra es que tengo un query para ahorrarme esto pero creo que no esta funcionando porque se me esta pasando algún movimiento de SAP que afecta el inventario y no me cambia el estado de S a P, este query lo tengo en el SBO_SP_PostTransactionNotice

IF :transaction_type IN ('A','U','D','C') AND :object_type IN ('17','59','67','16') THEN
	UPDATE OITW
	SET "Estatus"='P'		
	WHERE 	
	"Estatus"='S' AND
	"WhsCode" = 'T' and "ItemCode" =:list_of_cols_val_tab_del;
END IF;

Ok, primera.- No necesitas crear triggers…para eso existen el TN y PTN.

Ahora , si me explicas en que “evento” y “objeto” se debe disparar, puedo ayudarte.

3 Me gusta

Gracias @juliancab pues tienen que ser todos los tipos de objetos que afecten el inventario en aumento o disminución de este, se supone que tengo ahí todos:
Traspaso o traslado
entrada de mercancía
oferta de venta
devolución.
No se si me falta alguno pero según yo no.

Table Table description Primary Key Object Type
ORDN Returns DocEntry 16
ORDR Sales Order DocEntry 17
OIGN Goods Receipt DocEntry 59
OWTR Inventory Transfer DocEntry 67

Te faltan :

salidas de inventario.

Entregas.

Recuento.

1 me gusta

Para ello si lo que necesitas es bloquear para no hacer movimientos utiliza el TN.
Si lo que deseas es solo dar seguimiento puedes hacer uso el PTN…

TN: Dispara alarmas antes que sucedan las cosas
PTN: dispara alarmas despues de realizado una accción

Saludos

Gracias a los dos
Ya agregue los Tipo de Objetos restantes al PTN

IF :transaction_type IN ('A','U','D','C') AND :object_type IN ('17','59','67','16','60','20','1470000065') THEN

Espero unos días a ver como me funciona y les digo si fue la solución.

1 me gusta

Ingrese mi consulta en el PTN y no me da resultados que podria ser?

IF :transaction_type IN ('A','U','D','C') AND :object_type IN ('17','59','67','16','60','20','1470000065') THEN
	UPDATE OITW
	SET "Estatus"='P',
		"SIC_Estatus"='NO'		
	WHERE 
		"Estatus"='S' AND
	"WhsCode" = 'PT' and "ItemCode" =:list_of_cols_val_tab_del;
END IF;

No cambia el estado cuando se agrega un nuevo documento o se cancela. :woozy_face:

Estas haciendo un UPDATE de un campo que no es UDF?

Eso es técnicamente incorrecto. Perderías la garantia de la DB.

1 me gusta

Es correcto lo que mencionas, los UPDATE en los TN y PTN solo son validos en campos UDF.

en la tabla OITW, no veo que exista el campo “Estatus” ni “SIC_Estatus”, prueba hacer tu update para un solo Item, si te funciona, ya lo podras adaptar para ponerlo en el PTN. Revisa la estructura de tu tabla, si son campos creados por ti. “U_Estatus” y “U_SIC_Estatus” podrian ser los nombres de los campos que necesitas.

No entiendo bien para que usas ese update, pero espero haberte ayudado.

1 me gusta