✒️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.
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 su ejecución,
sólo 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.
Imagen 1.1 - Visualizamos los Field Exits existentes en la biblioteca de funciones
Las principales ventajas que presenta un Field Exit 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 que presenta un Field Exit 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 específicas 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 tomará 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.
2 | Pasos para la realizar un Field Exit
El primer paso para realizar un Field Exit es dirigirnos a la transacción CMOD (Gestión de proyectos de ampliaciones SAP).
Imagen 2.1 - Ingresamos a la transacción estándar CMOD.
Allí ejecutamos el comando PRFB dentro de la CMOD, sin anteponer /N.
Imagen 2.2 - En el campo de comandos escribimos PRFB y presionamos enter
En la pantalla siguiente se encuentran todos 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.
Imagen 2.3 - Visualizamos todos los Field Exits del sistema junto con su status
Para crear un Field Exit, seleccionamos el menú Exit campo y la opción Crear.
Imagen 2.4 - Desplegamos la opción del menú Crear para crear un nuevo Field Exit
En la siguiente ventana de diálogo introducimos el 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 cuál se quiere relacionar.
Imagen 2.5 - El sistema nos solicita el del elemento de datos
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
Imagen 2.6 - Visualizamos donde y como obtenemos el del elemento de datos
Ingresamos el elemento de datos y presionamos enter.
Imagen 2.7 - Introducimos el del elemento de datos
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.
Imagen 2.8 - Creamos el módulo de funciones que nos propone el sistema
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.
Imagen 2.9 - Introducimos un grupo de funciones y un texto breve
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 es INPUT y contendrá el valor del campo al cual se ha asignado el Field Exit.
Imagen 2.10 - Dentro de los parámetros de entrada generamos el parámetro INPUT
El parámetro de salida OUTPUT es el valor que tomará el campo al salir del Field Exit.
Imagen 2.11 - Dentro de los parámetros de salida generamos el parámetro OUTPUT
En la solapa Cód fte. vamos a ingresar el código correspondiente a la validación que deseamos agregar.
Por ejemplo en este caso emitimos un mensaje de error en caso de que el usuario introduzca
en el campo de la pantalla el texto 'CORRIENTES 123'.
Imagen 2.12 - Introducimos el código fuente correspondiente a la validación
Si en la función no se quiere modificar el campo donde esta 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 sólo se pueden 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 utilizará 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 afectará 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.
Imagen 2.13 - Presionamos el botón para asignar un programa y una dynpro
Seguidamente veremos la siguiente pantalla donde asignaremos el del programa y el número de dynpro correspondiente:
Imagen 2.14 - Introducimos el programa y el número de la dynpro
Se pueden asignar varios programas y dynpros al mismo Field Exit.
Por último, activamos el Field Exit desde el menú Exit Campo / Activar:
Imagen 2.15 - Activamos el field exit
Y luego veremos el Field Exit activado.
Imagen 2.16 - En la columna status visualizamos activo
Ahora vamos a probar nuestro Field Exit, para ello accedemos a la transacción SM30 ya que el elemento de datos al cual le creamos
el Field Exit pertenece al campo 'Dirección' de una tabla base de datos Z.
Generaremos una nueva entrada en la tabla, en el campo Dirección introducimos el valor 'CORRIENTES 123' y presionamos la tecla enter.
Imagen 2.17 - Generamos un nuevo registro en la tabla con el campo DIRECCION = 'CORRIENTES 123'
Y visualizaremos en pantalla el mensaje de error que previamente codificamos en nuestro Field Exit.
Imagen 2.18 - Visualizamos en pantalla el mensaje de error correspondiente a la validación
 
 
 
Sobre el autor
Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alex Francisco Lemos Collazos
Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A
✒️Autor de: 174 Publicaciones Académicas
🎓Cursando Actualmente: Master S/4HANA Material Management
🎓Egresado de los módulos:
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Inicial