✒️ABAP Los Field Exits
ABAP Los Field Exits
Unidad-3-Lección-4: 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 posteriormente de las validaciones del sistema estándar.
Por ser módulos de funciones, se ejecutan en instancias de memoria propias (por ser módulos de funciones) y al momento de su ejecución, solo se dispone del valor de 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 donde se utilizaría un Field Exit es si se quiere insertar un valor en un campo determinado de una dynpro y entonces se pondría una validación en ese campo a nivel Field Exit para que solo permita insertar determinados valores.
NOTA: ingresando a la SE37 (Biblioteca de Funciones), colocamos FIELD_EXIT_* y pulsamos F4, se visualizan todos los Field Exit del sistema.
Ventajas de los Field Exits:
· 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.
Desventajas de los Field Exits:
· 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 qué valores van tomando los diferentes objetos (variables, tablas, etc) y por dónde va pasando dentro del código del Field Exit.
NOTA (Audio Tip 1): En un Field Exit, no se pueden utilizar las instrucciones: BreakPoint, Call Screen, Call Transaction, Submit, RollBack Work, Commit Work, Call Dialog y Message I (correspondiente a los mensajes de información). Debemos tener en cuenta que para poder activar los Field Exits es necesario tener el parámetro ABAP_FieldExit = YES, configurado en el servidor a través de la transacción estándar RZ10.
2) Pasos para realizar un Field Exit.
1) Ir a la transacción CMOD (Gestión de proyectos de ampliaciones SAP). Luego ejecutamos el comando PRFB dentro de la CMOD (Sin interponer /N)
2) En la pantalla se muestran todos los Field Exits del sistema, también se puede ver si están activados a nivel Global (para todas las transacciones) o tienen algún programa y dynpro asignados.
3) Menú: Exit Campo -> Crear
4) En la siguiente ventana se ingresa en nombre del elemento de datos al cual se quiere realizar el Field Exit
(debe ser el mismo que tiene el campo de la dynpro al cual se quiere relacionar, este dato se obtiene presionando la tecla F1 sobre el campo de la dynpro y luego presionando el botón Información Técnica)
5) El sistema nos lleva a la transacción SE37 para la creación del módulo de funciones
6) Crear -> Se solicita la asignación de un grupo de funciones (es recomendable crear uno exclusivamente) y un Texto Breve
Recordatorio: Para crear un grupo de funciones: SE37: Pasar a >> Gestion gr.funciones >> Crear Grupo
7) Grabar -> este módulo de función tiene la particularidad de tener un parámetro de Import (entrada) y uno Export (salida). El parámetro de entrada es INPUT y contendrá el valor del campo al cual se ha asignado el Field Exit.
El parámetro OUTPUT es el valor que tomará el campo al salir del Field Exit.
8) En la solapa Cód. fte. se ingresa 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 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 utilice 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.
9) 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.
10) En la siguiente pantalla se asigna el nombre del programa y el número de dynpro correspondiente (se pueden asignar varios programas y dynpros al mismo Field Exit) y se hace click en el botón Grabar
11) Menú: Exit Campo / Activar
Para probarlo: SM30 (en este caso el elemento de datos al cual le creamos el Field Exit pertenece a una tabla BD Z) y se ingresa la dirección que en el caso del ejemplo muestra un mensaje de error.
NOTA (Audio Tip 2): 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 Exits en el sistema. Pensando en el rendimiento en performance del sistema, si este parámetro está activo, el sistema consulta dos tablas estándar: la TDDIR y la TDDIRS para saber si se debe generar un Field Exit o Exit de campo para cada campo (el usuario no notará un enlentecimiento del sistema, ya que la generación de las dynpro es rápida). Si deseamos conocer el contenido de algún otro campo de la pantalla, cuando trabajamos con Field Exits, podemos guardar el contenido de otros campos en variables globales al grupo de función o utilizar la función DYNP_VALUES_READ para leer valores de otros campos de la misma pantalla. Si varios campos de la pantalla tienen el mismo elemento de datos el Field Exit aplicará para todos ellos.
 
 
 
Sobre el autor
Publicación académica de Ninoska Marquez, en su ámbito de estudios para la Carrera Consultor ABAP.
Ninoska Marquez
Profesión: Ing. de Sistema - Honduras - Legajo: FU90M
✒️Autor de: 99 Publicaciones Académicas
🎓Egresado de los módulos:
Presentación:
Me llamo ninoska marquez tengo 44 anos, tengo varios años de trabajar para una empresa donde me desempeño con el cargo de programador junior, soy perseverante, amable, tranquila
Certificación Académica de Ninoska Marquez