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 |
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. 
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