jueves, 2 de julio de 2015

Colocar en modo Lectura los campos Flexfields Descriptivos

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