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.
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.
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.
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.
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.
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.
Hola @kriptonniano, revisando tú POS te puedo decir que en efecto lo que te han indicado es correcto, Los update no se pueden realizar a los campos estándar de SAP, menos al campo status de un documento, para realizar esto lo mejor que puedes hacer es el desarrollo de un Addon en donde uses el evento ITEM_PRESSED en cada uno de los documentos y este dispare el cambio de estado.
por otro lado si estas actualizando un campo de usuario con un Update, pero estas en la version de HANA 2, estos ya no se pueden realizar de la misma forma que en HANA 1 o SQL, para esto ahora deber usar la funcion MERGE INTO USING UPDATE, te dejare un ejemplo para que lo puedas ajustar a tú necesidad:
IF object_type =‘202’ and (:transaction_type = ‘A’ or :transaction_type = ‘U’) THEN
MERGE INTO OWOR T1
USING (SELECT T0.“DocEntry”,SUM(T0.“PlannedQty” * T1.“AvgPrice”) “Costo”
FROM WOR1 T0
INNER JOIN OITW T1 ON T0.“ItemCode” = T1.“ItemCode”
WHERE T0.“DocEntry” = list_of_cols_val_tab_del GROUP BY T0.“DocEntry”) T2
ON T1.“DocEntry” = T2.“DocEntry”
WHEN MATCHED THEN
UPDATE SET T1.“U_PIC_Costo_MP” = T2.“Costo”;
error := 1;
error_message := 'Actualizado MP';
END IF;
Igualmente, ten muy presente la diferencia que indico @juliancab con respeto a los TN y los PTN, tambien observo que en tus consultas tienes campos de usuario pero no antepones la U_
recuerda que los campos de usuario siempre deben ir un la U_ ejemplo: U_Estatus.
Gracias a todos por su respuestas, todos tienen razon, no puedo hacer update en el campo Estatus, pero hablaba de un campo personalizado, Y si tal vez se me pasaron algunos objetos por eso no se actualizaba, como el que comentan de recuento, pero mejor se llego a otra solución: se desarrollo un Add-On, pero igual saturaba mucho SAP B1, asi que se tomo mejor desarrollar una API para consultar la disponibilidad.
Gracias a todos por su ayuda y sugerencias.