✒️ABAP Los Field Exits
ABAP Los Field Exits
Field Exits
También llamados ampliaciones de campo, son validaciones de los elementos de datos asociados a campos de pantallas o dynpros de SAP.
Los Field Exits son módulos de funciones que son llamados y ejecutados posteriormente de las validaciones del sistema estándar.
Los mismos por ser módulos de funciones, se ejecutan en instancias de memoria propias y al momento de ejecución, solo se dispone del valor del campo, que se importa en el parámetro INPUT y que puede ser modificado a través del parámetro OUTPUT. Para el uso de otros campos de la pantalla, se debe proceder al uso de funciones que permiten capturar dichos valores.
Un ejemplo en donde utilizaríamos un Field Exit es si se quiere insertar un valor en un campo determinado de una dynpro entonces pondríamos una validación en ese campo a nivel Field Exit para que solo permita insertar determinados valores.
Si ingresamos a la transacción SE37 (Biblioteca de Funciones), colocamos FIELD_EXIT_* y luego pulsamos F4, visualizaremos todos los Field Exit del sistema.
Las Principales Ventajas Son:
- Facilita la validación de campos en un programa estándar sin modificar el código original.
- Puede utilizarse el mismo código para varias transacciones.
- Se puede aplicar globalmente (para todos los programas) o para determinados programas y dynpros que se le asignen.
Las Principales Desventajas son:
- Toma de la dynpro (Import) un solo valor, que es el del campo al cual hace referencia, por lo que no se pueden utilizar tablas internas especificas del programa estándar en el código del Field Exit.
- El mismo código del Field Exit tiene que servir para todos los programas que se quieran utilizar, por lo que se tiene que especificar en el código, que acción tomara de acuerdo al programa en el cual se esté ejecutando.
- No es posible hacer un Debug del código del Field Exit de forma directa, a través de un Breakpoint. Para esto se utilizan mensajes de error para ir viendo que valores van tomando los diferentes objetos (Variables, Tablas, Etc.) y por donde va pasando dentro del código del Field Exit.
En un Field Exit no podemos utilizar ninguna de las siguientes instrucciones:
Breackpoint, Call Screen, Call Dialog, Call Transaction, Submit, Commit Work, Call Back Work, Message correspondiente a los mensajes de información. Para poder activar los Field Exit debemos tener el parámetros ABAP FIELD EXIT = YES seteado en el servidor el cual se configura por la transacción estándar RZ10.
Pasos para realizar un Field Exit:
El primer paso es dirigirnos a la transacción CMOD (Gestión de Proyectos de Ampliaciones SAP).
Allí ejecutaremos el comando PRFB dentro de la CMOD, sin anteponer /N.
En la pantalla siguiente se encuentran los Field Exits del sistema. Aquí podemos ver también si están activados a nivel Global (para todas las transacciones) o tienen algún programa y dynpro asignados.
Para crear un Field Exit, Seleccionamos el menú Exit Campo y la opción Crear.
En la siguiente ventana de diálogo introducimos el nombre del elemento de datos al cual se quiere realizar el Field Exit. Este elemento de datos debe ser el mismo que tiene el campo de la dynpro al cual se quiere relacionar.
Este dato lo obtenemos presionando la tecla F1 sobre el campo de la dynpro y luego presionando el botón de información técnica.
Ingresamos el elemento de datos y presionamos enter.
A continuación el sistema nos propone la creación del módulo de funciones en la SE37, por lo que presionaremos el botón Crear.
Luego el sistema nos solicita la asignación de un grupo de funciones, es recomendable crear uno exclusivamente para el Field Exit. También introducimos un texto breve para el módulo de funciones.
Este módulo de función tiene la particularidad de tener un parámetro de Import o Entrada y uno de Export o Salida. el parámetro de entrada en INPUT y contendrá el valor del campo al cual se ha asignado el Field Exit.
El parámetro de salida OUTPUT es el valor que tomara el campo al salir del Field Exit.
En la pestaña Cód. Fte. Vamos a ingresar el código correspondiente a la validación que deseamos agregar.
SI en la función no se quiere modificar el campo donde está colocado el Field Exit entonces al principio de todo se debe escribir Output = INPUT para devolver el mismo valor que se ingresó.
Dentro del módulo de función solo se podrán trabajar con estos parámetros, pero si se quiere obtener valores de otros campos de la dynpro se puede utilizar otros Field Exits en los cuales se utilizara el comando SET PARAMETER para poder grabar en memoria al valor del campo y utilizarlo en el Field Exit anterior tomándolo de memoria con GET PARAMETER.
Otra opción es utilizar la función GET_DYNP_VALUE para obtener valores de otros campos de la dynpro.
Una vez terminada la codificación se debe asignar un programa y dynpro al Field Exit (si no se quiere hacer global, es decir para todos los programas).
Mientras no se haya realizado la asignación de la dynpro, el Field Exit afectara a todas las pantallas donde se encuentre un campo con el elemento de datos.
Para asignar el programa y dynpro se debe ir a la pantalla de administración de Field Exit (CMOD - PRFB), seleccionar el Field Exit y presionar el botón Asignar Prog./dynpro.
Seguidamente veremos la siguiente pantalla donde asignaremos el nombre del programa y el número de dynpro correspondiente.
Se pueden asignar varios programas y dynpros al mismo Field Exit.
Por Ultimo, Activamos el Field Exit desde el menú Exit Campo / Activar. y veremos el Field Exit Activado.
A nivel de administración del sistema SAP existe el parámetro de instancia ABAP FIELD EXIT el cual controla la activación o desactivación de los Field Exit del sistema, si pensamos en el rendimiento performance del sistema si el parámetro que controla los Field Exit está activa el sistema consultara dos tablas estándar que son la TDDIR y la TDDIRS para saber si se debe generar un Exit de campo para cada campo el usuario no notara una ralentización del sistema ya que la generación de las dynpros es extraordinariamente rápida, Si deseamos conocer el contenido de algún otro campo de la pantalla cuando trabajamos con los Field Exits podemos guardar el contenido de nuestros campos en variables globales al grupo de función o utilizar la función DIR_VALUES_READ para leer valores de otros campos de la misma pantalla, debemos considerar que si otros campos contiene el mismo Elemento de datos el Field Exit aplicara para todos ellos.
 
 
 
Sobre el autor
Publicación académica de Jeferson José Peña Curvelo, en su ámbito de estudios para la Carrera Consultor ABAP.
Jeferson José Peña Curvelo
Venezuela - Legajo: PD49W
✒️Autor de: 128 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jeferson Peña