Está en la página 1de 5

Creacin de Field Exit

Una field exit es como una user exit que se utiliza para relacionar un campo determinado de una dynpro (pantalla) con un programa determinado. A una FIELD EXIT se le llama tambin EXIT DE CAMPO. Se hace a nivel del elemento de datos. En ella puedes poner tus comprobaciones para un campo en el programa que quieras. Puedes tener varias field exit para un mismo campo en distintas pantallas. Una FIELD EXIT es una funcin que tiene la particularidad de que slo tiene un parmetro de entrada INPUT y uno de salida OUTPUT. A priori no puedes conocer ningn dato ms, aunque siempre puedes utilizar otras field exits para guardar el contenido de otros campos en variables globales al grupo de funcin, o utilizar la funcin DYNP_VALUES_READ para leer valores de otros campos de la misma pantalla. En un Field exit NO podemos usar ninguna de las siguientes instrucciones:

BREAK-POINT CALL SCREEN CALL DIALOG CALL TRANSACTION SUBMIT COMMIT WORK ROLLBACK WORK MESSAGE I

NOTA: Para poder activar los Field Exits debemos tener el parmetro abap/fieldexit = YES seteado en el servidor (Transaccin RZ10).

A continuacin voy a mostrar un ejemplo completo de cmo crear una field exit para el campo Clave de periodificacin de la solapa Control de la transaccin CJ20N. Donde validaremos que ese campo no este vaco.

1) Lo primero que hay que hacer es crear un grupo de funcin. Para eso vamos a la transaccin SE80 y creamos un nuevo grupo de funcin, por ejemplo: Z_ABGR_SCHL

2) Luego debemos crear nuestra funcin FIELD EXIT desde la transaccin SE37 con el nombre FIELD_EXIT_* ( * = nombre que queramos ) y asocindole el grupo de funcin que creamos en el paso anterior. Por ejemplo:

Con esto ya vamos a tener nuestra funcin creada con el parmetro INPUT creado en la solapa Import y con el parmetro OUTPUT en la solapa Export. Para terminar este paso slo resta poner nuestro cdigo en la solapa Cd.fte. y ACTIVAR. Como en este caso slo queremos validar que nuestro campo no quede vaco, el cdigo sera as: IF INPUT IS INITIAL. MESSAGE Complete el campo Clv.periodifica TYPE E. ENDIF. 3) En este paso volvemos a la transaccin SE80 para ACTIVAR y verificar que aparezca la funcin que creamos:

4) El ltimo paso es crear nuestra FIELD EXIT. Esto es muy sencillo, simplemente ejecutamos el reporte RSMODPRF sin parmetros desde la transaccin SE38. All se listarn todas las field exits existentes. Para crear la nuestra clickeamos en el men Exit campo > Crear e ingresamos nuestro elemento de datos, en este caso ABGR_SCHL. Veremos que nuestra field exit se agrega a la lista. Finalmente, seleccionamos la field exit que acabamos de crear y clickeamos en el botn Asignar prog./dynpro. Debemos llenar los campos con el nombre del programa y el nmero de dynpro que queremos que nuestra field exit este asociada (Ver la primera imagen Datos dynpro):

Nuestra field exit nos debera quedar as:

Como vemos el Status de la field es INACTIVO. Por lo tanto nos resta simplemente volver al men Exit campo y clickear en la opcin Activar Con esto ya tenemos nuestra field exit creada y podemos verificar en la transaccin CJ20N que si NO llenamos el campo Clave de periodificacin nos saldr el mensaje de error que pusimos en el paso 2

Field Exit
Una field exit es como una user exit que se hace para un campo determinado en una pantalla de un programa determinado. A una FIELD EXIT se le llama tambien EXIT DE CAMPO. Se hace a nivel del elemento de datos. En ella puedes poner tus comprobaciones para un campo en el programa que quieras. Puedes tener varias field exit para un mismo campo en distintas pantallas. Una FIELD EXIT es una funcin que tiene la particularidad de que slo tiene un parmetro de entrada INPUT y uno de salida OUTPUT. A priori no puedes conocer ningn dato ms, aunque siempre puedes utilizar otras field exits para guardar el contenido de otros campos en variables globales al grupo de funcin, o utilizar la funcin DYNP_VALUES_READ para leer valores de otros campos de la misma pantalla. Para consultar otros campos de otras dynpros anteriores, yo lo suelo solucionar con una field exit por campo y dentro un SET PARAMETER para luego hacer un GET PARAMETER haya donde necesite el campo. Para ver todas las field exit que tienes puedes ejecutar el programa: SE38 --> RSMODPRF y dar dos veces a 'F8'. Tambin puedes usar la transaccin CMOD y el cdigo de funcin PRFB. Las field exits estn congeladas en la release 4.6C y no se van a seguir desarrollando. Esto significa que la funcionalidad se mantiene con todas las restricciones. Las exits existentes se pueden seguir utilizando y se llaman en tiempo de ejecucin como siempre. Las exits existentes se pueden mantener usando el programa RSMODPRF. La activacin de field exits y la asignacin a dynpros se puede hacer tambin con dicho programa. Para ello, el programa se debe ejecutar sin parmetros. Si es necesario, se pueden crear nuevas field exits (ver documentacin). Dentro de la funcin que se define en el field-exit, para poder utilizar los valores de los campos de la pantalla, hay que usar la funcion DYNP_VALUES_READ. Se puede definir field-exit que funcione en varias transacciones y en varias dynpros. Solo hay que asignarlo y activarlo.

Observaciones
Los exits de campo slo se considerarn durante la generacin de dynpros, cuando en el parmetro abap/fieldexit del perfil del sistema se haya especificado previamente 'YES'. Condicin previa Especificacin de 'YES' en el perfil del parmetro abap/fieldexit antes de que se inicie el sistema

Restricciones

No se permite introducir las siguientes instrucciones en los mdulos de funciones de exits de campo: BREAK-POINT, CALL SCREEN, CALL DIALOG, CALL TRANSACTION, SUBMIT, COMMIT WORK, ROLLBACK WORK, COMMUNICATION RECEIVE, EXIT FROM STEP-LOOP, MESSAGE I, MESSAGE W. - El depurador no puede procesar los exits de campo. - No emplee ningn perform externo en los exits de campo. El procesador ABAP "comparte" las reas de trabajo de la tabla de los programas llamados externamente con las del llamado en primer lugar. Esto podra provocar errores difcilmente analizables ya en los exits de campo, ya que stos se entremezclan a veces en momentos imprevistos de la ejecucin del programa.