La librería Custom.pll puede ser utilizado
para una amplia gama de personalizaciones. Por ejemplo, puede ser utilizado
para hacer que los segmentos de Flexfields Descriptivos(DFF) estén en modo
de solo lectura basado en una condición o varias condiciones.
Para ello vamos a usar el proceso FND_DESCR_FLEX.UPDATE_DEFINITION. Este proceso ya esta dentro de las
muchas librerías asociadas a la librería Custom.pll. Este proceso identifica el
Flexfield Descriptivo indicando su nombre y el bloque donde se
desea realizar una acción. Este proceso tiene la siguiente
estructura de parámetros:
FND_DESCR_FLEX.UPDATE_DEFINITION(
/*
Parametros obligatorios */
BLOCK=>'Nombre
del Bloque',
FIELD=>'Nombre del Campo',
/*
Habilitar o Desahabilitar Flexfields*/
ENABLED=>'Indicar
Y o N',
/*
Habilitar modo lectura*/
READ_ONLY=>'Indicar
Y o N',
/*
Parametros opcionales*/
VDATE=>'Indicar Fecha',
TITLE =>'Titulo',
AUTOPICK=>'Indicar Y o N',
USEDBFLDS=>'Indicar
Y o N',
LOCK_FLAG=>'Indicar
Y o N',
HELP=>'APPL=application_short_name;
TARGET=target_name',
CONTEXT_LIKE=>'WHERE_clause_fragment');
El procedimiento
deshabilita todos los segmentos DFF, esto se debe a que un FlexField es un solo
campo en un formulario, sin embargo cuando se hace clic en él, se abre la
ventana de Flexfields Descriptivos, los múltiples campos que
se visualizan es en realidad una salida de usuario con múltiples
segmentos el cual no forman campos. Es por ello que no es posible deshabilitar
un solo segmento Flexifled sin que los otros sigan habilitados.
Por ejemplo vamos a
deshabilitar los segmentos DFF de la pantalla de Proveedores. En nuestra
librería custom debemos ubicarnos en una Unidad de Programa y podemos
colocar el siguiente código:
IF ( EVENT_NAME = 'WHEN-NEW-BLOCK-INSTANCE' AND V_FORM_NAME = 'APXVDMVD') THEN
IF V_BLOCK_NAME = 'VNDR' AND
NAME_IN('VNDR.VENDOR_TYPE_LOOKUP_CODE')='VENDOR' IS NOT NULL THEN
FND_DESCR_FLEX.UPDATE_DEFINITION(BLOCK => 'VNDR',
FIELD => 'DESC_FF_MIR',
READ_ONLY => 'Y');
END IF;
END IF;
Compilamos nuestra librería en el servidor de Aplicaciones y nos ubicaremos en la pantalla de Proveedores. Podremos apreciar que los campos DFF estan solo en modo lectura. Tener en cuenta que es necesario conocer el nombre del bloque en esta caso VNDR y el campo DFF al cual desea realizar la deshabilitación.
No hay comentarios:
Publicar un comentario