La declaración Raise Form_Trigger_Failure es el uso para congelar un programa cada vez que sea necesario. Normalmente,
en las formurlarios de Oracle utilizamos esta declaración para congelar el
formulario cada vez que se produjo un error. Esta declaración mayormente es útil
cuando se hace validaciones de por
medio.
Podemos usar esta declaración para manejar un
error si durante una validación falla y no queremos que se continúe el proceso.
Siempre se recomienda usar junto a esta
excepción un mensaje para informar al usuario que se produjo un erro ya que de
lo contrario no se mostrara mensaje alguno.
Agregar en forms Personalization
Primero debemos agregar un menú en la opción de Herramientas. Para personalizar debemos ir a Ayuda >>
Diagnóstico >> Código Personalizado >> Personalizar. Crearemos una primer personalización a nivel de Función y
usaremos el Evento Trigger WHEN-VALIDATE-RECORD
Luego debemos indicar
un bloque a validar porl ocual debemos seleccionar uno en Objeto Trigger. Si
fuera necesario podemos indicar una Condición para nuestra personalización.
Pues bien ahora que tenemos creado nuestra condición antes de crear la
excepción podemos crear en Acciones
un mensaje para mostrar en caso valida el evento en verdadero.
Posterior al mensaje creamos otra acción y debemos escoger el Tipo de
Acción Incorporado. Como Tipo Incorporado podemos seleccionar RAISE_FORM_TRIGGER_FAILURE. Con esto el formulario se congela al
validar.
Hola, se puede personalizar en la pantalla de Factura Ap, el cual al momento de seleccionar un proveedor, si este cumple una condición dada, salga inmediatamente un mensaje de advertencia, el cual no deje seguir con el flujo de factura, hasta que se cambie de proveedor? Algo parecido a la fecha contable, el cual si no está en un período abierto, te sale el mensaje de error, hasta que se elija una fecha adecuada.
ResponderEliminarEjemplo:
Proveedor No Apto
Evento: WHEN-NEW-ITEM-INSTANCE
Objeto: INV_SUM_FOLDER.VENDOR_NAME
Condición:
(SELECT CLL.ATTRIBUTE15
FROM AP_SUPPLIERS AP,
CLL_F257_AP_SUPPLIERS_EXT CLL
WHERE 1=1
AND AP.VENDOR_ID = CLL.VENDOR_ID
AND AP.VENDOR_ID = :INV_SUM_FOLDER.VENDOR_ID
AND CLL.ATTRIBUTE2 = '6'
AND CLL.ATTRIBUTE15 = 'N') IS NOT NULL
*Mensaje
Error =:INV_SUM_FOLDER.VENDOR_NAME||' . El Proveedor no debe ser elegido'
*Incorporado
Raise_Form_Trigger_Failure
Acá sí sale el mensaje pero no inmediatamente como se desea si no cuando se vuelve a seleccionar este campo pero si se puede seguir con el flujo. Para no dejar guardar, basta con usar "WHEN-VALIDATE-RECORD", pero se prefiere que antes de llegar ahí, solo seleccionando un proveedor no apto, se sepa que no se guardará la factura.
Hola, amigo, en ese caso deberías usar la condicion WHEN-VALIDATE-ITEM, sin embargo eso solo podrías hacerlo en la libreria custom.pll, dejo aquí información del tema:
ResponderEliminarhttp://profesionghh.blogspot.com/2014/07/libreria-custompll.html