✒️ABAP Los Field Exits
ABAP Los Field Exits
1. QUÉ SON LOS FIELD EXITS
También llamados Ampliaciones de Campo, son validaciones de los Elementos de datos asociados a campos de pantallas o dynpros de SAP. Son módulos de funciones que son llamados y ejecutados con posterioridad a las validaciones del sistema estándar.
Se ejecutan en instancias de memoria propias, por lo que al ejecutarse sólo se dispone del valor de campo (parámetro INPUT) y que puede ser modificado a través del parámetro OUTPUT. Para usar otros campos de pantalla debemos usar funciones para capturar sus valores.
Un ejemplo de uso de un Field Exit es insertar un valor en un campo determinado de una dynpro de manera que sólo permita insertar determinados valores.
Visualizar los Field Exit del Sistema: tr. SE37 (Biblioteca Funciones) y escribir FIELD_EXIT_* y pulsar F4.
Ventajas:
- Facilita la validación de campos en un programa estándar sin modificar código original
- Código reusable para varias transacciones
- Se puede aplicar globalmente (para todos los programas) o sólo para algunos programas y dynpros
Inconvenientes:
- No se pueden usar Tablas Internas en el código del Field Exit (toma 1 único valor: Import)
- El mismo código del Field exit debe servir para todos los programas que se quiera utilizar. Por ello en el código se tendrá que especificar la acción a tomar
- No se puede hacer Debug del código de Field exit directamente. Se usan mensajes de error para conocer los valores de objetos y el punto del código
No podemos usar Breakpoint, Call screen, Call dialog, Call transaction, Submit, Commit work, Rollback work, Message i(mensajes de info). Para activar field exits, el parámetro abap/field_exit=yes (tr. rz10).
2. PASOS para REALIZAR un FIELD EXIT
Desde la tr. CMOD (Gestión de Proyectos de Ampliaciones SAP), ejecutamos el comando PRFB (sin /N). A continuación aparecen todos los Field Exits del Sistema así como la indicación de si se activaron globalmente o para algún programa y dynpro.
Para crear un Field Exit, por menú: Exit Campo->Crear
- A continuación introducimos el nombre del Elemento de Datos (campo de la dynpro) para el que queremos hacer el Field Exit. Si no lo sabemos: F1 sobre campo e Información técnica.
- El sistema nos propone la creación de un módulo de funciones (tr. SE37). Presionamos Crear
- Nos solicita la asignación de un grupo de funciones. Recomendable crear uno exclusivamente para el Field Exit. Escribimos tb. un Texto breve para el módulo de funciones.
- Este módulo de función tiene 1 parámetro de Import (Entrada) y 1 de Export (Salida). El parámetro de entrada se llama INPUT y contiene el valor del campo asignado al Field Exit. El parámetro OUTPUT es el valor que tomará el campo al salir del Field Exit.
- En la solapa Cód. fte. vamos a ingresar el código correspondiente a la validación a agregar. P.ej. emitir mensaje de error si el usuario introduce el texto 'CORR X'
- Si no hay que modificar el campo, al principio de todo escribir: OUTPUT = INPUT.
- Si se quiere obtener valores de otros campos de la dynpro, se puede usar otros Field Exits donde usaremos el comando SET PARAMETER para poder grabar el valor del campo y usarlo en el anterior Field Exit con GET PARAMETER
- Una alternativa a SET/GET PARAMETER es usar la función GET_DYNP_VALUE
- Hasta que no asignemos la dynpro, el Field Exit afectará a todas las pantallas donde se encuentre un campo con el elemento de datos.
Asignar programa y dynpro:
- CMOD->PRFB->Seleccionar Field Exit->Botón Asignar prog/dynpro
- Pantalla donde pondremos Programa y dynpro
- Se pueden asignar varios programas y dynpros al mismo Field exit.
- Por último, menú Exit campo->Activar
Probar el Field Exit:
- Accedemos a tr. SM30. (Field Exit: campo Dirección de Tabla Z )
- Creamos 1 nueva entrada en la tabla. En el campo Dirección introducimos el valor que pusimos en el Cód.Fte del field exit (validación) y presionamos Enter
- Debemos visualizar el mensaje de error que codificamos en el Field Exit.
Parámetro de instancia abap/field_exit controla la activación de los field exits en el sistema. A nivel de rendimiento, si están activos los field exits se consultarán 2 tablas TDDIR y TDDIRS para saber si se debe generar un field exit para cada campo. No afectará al rendimiento: la generación de dynpros es muy rápida. Podemos guardar valores de campos en variables globales al grupo de función o usar la función dynp_values_read para leer valores de otros campos de la misma pantalla. Si varios campos tienen el mismo elemento de datos, el field exit aplicará para todos ellos.
 
 
 
Sobre el autor
Publicación académica de David Campillo Martinez, en su ámbito de estudios para la Carrera Consultor ABAP.
David Campillo Martinez
Profesión: Administrador de Sistemas - España - Legajo: PC32Z
✒️Autor de: 56 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de David Campillo