La CUSTOM.PLL proporciona una forma para que los desarrolladores puedan agregar personalizaciones proporcionadas a los formularios del EBS sin modificar los objeto .FMB. Usar el trigger WHEN-VALIDATE-ITEM para realizar la validación cuando el cursor se mueve fuera de un elemento. Esto también implica que el control puede salir del registro en el proceso. Pero la diferencia con otro trigger llamado WHEN-VALIDATE-RECORD es solo cuando el cursor se cambia a otro registro. El Trigger no se ejecuta mientras se esta tabulando entre elementos del mismo registro.
Imagine la complejidad cuando hay más de tres elementos a validar. Un trigger WHEN-VALIDATE-RECORD, requiere solamente una validación combinada que involucra los tres elementos. En cambio WHEN-VALIDATE-ITEM sería validando cada elemento por lo cual requiere código para cada uno. Esto aumenta la complejidad en la codificación cuando están involucrados muchos de estos elementos. También la probabilidad de error es mayor en este caso.
Por otro lado, escribiendo un disparador WHEN-VALIDAR-RECORD sólo requiere hacer la validación combinado una vez, y este método es completamente a prueba de errores. A continuación se pone un ejemplo de codigo en la librería Custtom.pll para cuando se requiere validar un campo especifico.
Imagine la complejidad cuando hay más de tres elementos a validar. Un trigger WHEN-VALIDATE-RECORD, requiere solamente una validación combinada que involucra los tres elementos. En cambio WHEN-VALIDATE-ITEM sería validando cada elemento por lo cual requiere código para cada uno. Esto aumenta la complejidad en la codificación cuando están involucrados muchos de estos elementos. También la probabilidad de error es mayor en este caso.
Por otro lado, escribiendo un disparador WHEN-VALIDAR-RECORD sólo requiere hacer la validación combinado una vez, y este método es completamente a prueba de errores. A continuación se pone un ejemplo de codigo en la librería Custtom.pll para cuando se requiere validar un campo especifico.
FUNCTION EVENT(P_EVENT_NAME IN VARCHAR2) RETURN BOOLEAN IS
v_form_name VARCHAR2(30) := NAME_IN('system.current_form');
v_block_name VARCHAR2(30) := NAME_IN('system.cursor_block');
v_item_name VARCHAR2(30) := NAME_IN('system.current_item');
cStatus
VARCHAR2(500);
IF V_FORM_NAME = 'APXINWKB' AND V_BLOCK_NAME = 'INV_SUM_FOLDER'
AND v_item_name = 'VENDOR_NAME'
AND P_EVENT_NAME IN('WHEN-VALIDATE-ITEM','WHEN-VALIDATE-RECORD') THEN
IF NAME_IN('INV_SUM_FOLDER.VENDOR_NAME') IS NOT NULL THEN
XX_PKG.VALID_VENDOR(P_VENDOR_ID =>
TO_NUMBER(NAME_IN('INV_SUM_FOLDER.VENDOR_ID')),
P_CSTATUS => CSTATUS);
IF CSTATUS = 'E' THEN
FND_MESSAGE.SET_STRING('SELECCIONAR OTRO PROVEEDOR');
FND_MESSAGE.ERROR;
RAISE FORM_TRIGGER_FAILURE;
END IF;
END IF;
END IF;
RETURN(TRUE);
END EVENT;