✒️ABAP Las Ampliaciones: los User Exits y los Customer Exits
ABAP Las Ampliaciones: los User Exits y los Customer Exits
Ampliaciones
Son diferentes herramientas que presenta SAP para realizar mejoras, modificaciones o agregados a un programa estándar del sistema
Algunos programas estándares están preparados como para agregarles funcionalidad nueva a la existente.
En algunos casos se puede validar campos de alguna dynpro en particular; agregar campos a un apantalla con código que permita tratar esos datos nuevos agregar una nueva opción dentro de un menú o agregar campos a tablas estándares.
Las ampliaciones se generan y codifican en módulos aparte del código estándar, con lo cual no se necesita modificarlos manteniendo la funcionalidad original y el buen funcionamiento.
Las principales ventajas que presentan las ampliaciones son:
- Permiten modificar ciertos programas para adaptarlos a necesidades particulares de la empresa agregando nuevas características a las existentes.
- Permiten realizar mejoras a un programa sin modificar el código original del mismo, manteniendo el buen funcionamiento y las características que tenga.
- Los cambios toman efecto con solo transportar los nuevos objetos.
Las principales desventajas que presentan las ampliaciones son:
- No siempre se pueden hacer todas las modificaciones de manera satisfactoria, ya que la mayoría de las ampliaciones están preparadas para una determinada tarea y momento dentro de la ejecución de un programa.
- No todos los programas estándares están preparados para agregar todos los tipos de ampliaciones.
En SAP existen varios tipos de ampliaciones, que son utilizados de acuerdo al tipo de mejora o requerimiento que se quiera desarrollar, cada una con sus particularidades.
Las más importantes son:
- User Exits.
- Customer Exits o Exits de Cliente.
- KeyWord Exits.
- Field Exits o Exits de Campo.
- Estructuras Append.
- Badis.
- Enhancements.
- Menu Exits.
User Exits: Es una subrutina definida dentro de un programa estándar ABAP que esta hueca es decir sin código, está allí para que el usuario ponga su propio código fuente que le permita realizar tareas específicas que no están previstas por SAP.
Son las primeras ampliaciones que introdujo SAP.
Son propias del módulo SAP SD de ventas y distribución, no existen en otros módulos de SAP.
Están implementados en la forma de subrutinas.
Todos los User Exit están nombrados por SAP como USEREXIT_XXXX.
El principal problema que presenta esta en encontrar el User Exit correcto. Una vez que lo encontramos deberemos verificar que el mismo sirva para nuestro propósito.
El código ABAP que se insertara dentro del User Exit puede colocarse dentro de un INCLUDE que comenzara con Z o sino suelto.
Para ingresar código ABAP o modificar el código existente dentro de un User Exit, no se necesita una clave de acceso de SAP.
Ciertas aplicaciones del módulo SD todavía utilizan este tipo de ampliaciones pero esta práctica no se está utilizando para nuevas extensiones al código SAP.
En su lugar se utilizan el resto de los tipos de ampliaciones disponibles, aunque vale tener en cuenta que los User Exits serán mantenidos por SAP en las nuevas versiones del Sistema.
Los User Exits son huecos que genera SAP en el sistema estándar, estos huecos están ubicados en lugares determinados del sistema, no se puede generar nuevos User Exits sino que debemos trabajar únicamente con los ya existentes, si no encontramos un User Exits que se ajuste a nuestro requerimiento entonces debemos buscar otra alternativa de solución.
Customer Exits: también llamado Exit de Cliente es un punto dentro de un programa en donde se puede llamar a un programa propio.
Se ejecutan desde un programa estándar haciendo una invocación a un módulo de función.
Algunos programas estándares tienen dentro de su código, llamadas a módulos de funciones que pueden ser modificados por el programados.
Los Customer Exit son llamados dentro de los programas estándares a través de un número.
Este número es la terminación del nombre del módulo de función que está asociado al programa.
En la tabla MODSAP se encuentran todos los módulos de función que se utilizan en los Exits de cliente.
Tabla MODSAP: almacena todas las ampliaciones existentes en el sistema SAP.
De cada ampliación se guarda: el nombre de la ampliación, el tipo de componente que puede ser "E" para Exit de Funciones, "S" para Imágenes, "T" para Tablas y "C" para Código GUI y finalmente el nombre del objeto SAP (Programa, módulo de función, ETC) que se modifica.
Los módulos de función tienen una nomenclatura estándar: EXIT_<nombre del programa>_<número de función>.
Las Principales Ventajas que presenta un Customer Exit son:
- Es una buena herramienta para agregar funcionalidad nueva a un programa estándar como puede ser una validación o la ejecución de rutinas de control sin modificar el código original.
- Para transportar y activar los Customer Exit es suficiente con el Include nuevo únicamente, sin tocar el programa original.
Las Principales Desventajas son:
- No siempre se ajusta el Customer Exit a las necesidades del programador ya que los objetos que importa o exporta son fijos y pueden no tener todos los objetos que se requieren.
- No existe una búsqueda de Customer Exit por programa con una aclaración amplia de su utilización, para buscarlos hay que realizar una búsqueda del string CAL CUSTOMER-FUNCTION dentro del programa de control estándar y su funcionamiento se prueba sin saber exactamente si es el correcto para lo que se quiere hacer.
Para trabajar con CE vamos a utilizar principalmente dos transacciones que son
SMOD: para administrar las ampliaciones.
CMOD: para la gestión de proyectos de ampliaciones.
Pasos para realizar un Customer Exit:
En la transacción SMOD se debe completar el nombre de la ampliación que contiene el módulo de función a utilizar por el CE.
Si no se conoce el nombre aun, hay que ir a la transacción SE16, con la tabla MODSAP, en el campo MEMBER completar con el nombre del módulo de función a buscar y el campo NAME nos dirá la ampliación que la contiene.
Si tampoco se conoce el módulo de función especifico, debe buscarse en el código del programa estándar las llamadas a funciones de usuario que estarán indicadas por CALL CUSTOMER-FUNCTION '001', donde el número final puede ir cambien si presenta más de una llamada, es decir varios Customer Exit o Exits de cliente.
Una vez que se tiene el nombre de la ampliación y visualizamos.
En la siguiente pantalla presionamos el botón Componentes ( o habiendo seleccionado la opción componentes de la pantalla anterior) y se visualizaran todos los módulos de funciones que contiene esta ampliación.
Una vez que ya se sabe que módulo de función usar se debe hacer doble clic sobre el mismo y se derivara a otra pantalla, en la cual se puede ver que objetos importa y exporta esta función, así como también las tablas que importa y que pueden modificarse, las cuales se utilizaran en el código fuente.
En la pestaña Cod.Fte. se encuentra un Include Z que se utiliza para agregar el código del usuario.
En las últimas versiones de SAP el include comienza con ZX y si no se utilizó anteriormente deberemos crearlo ya que no existirá.
Si este include no existe, al hacer doble clic sobre el mismo, se pedirá al usuario que asigne una orden de transporte para poder generarlo.
Una vez creado es posible generar código ABAP utilizando todos los objetos que figuren en la solapa de Import, Modific., y Tablas, pudiendo devolver resultados modificando los objetos que se encuentran en las pestañas Export, Modif. y Tablas.
Dentro del INCLUDE ZX--XXXX es donde se va a colocar el código ABAP que colocaremos dentro del EXIT en general el código que colocaremos dentro de lo EXIT serán destinados a realizar validaciones de los campos de entrada en caso de cumplirse una condición determinada se emitirá en pantalla un mensaje de error que impedirá el normal funcionamiento de la transacción, caso contrario se continuara con el procesamiento normal.
Una vez terminada la codificación, la ampliación debe activarse e incluirse en un proyecto. Los proyectos son creados en la transacción CMOD. Allí se debe generar un proyecto Z en el cual se incluirán las ampliaciones que se desee.
Para agrupar clasificar y controlar los CE crearemos un proyecto de ampliación.
Un proyecto de ampliación asocia n ampliaciones. Su activación o desactivación afecta a todas las ampliaciones asociadas.
La transacción para acceder a los proyectos de ampliación es la CMOD. Allí ingresaremos el nombre del proyecto y presionamos crear.
El nombre de los proyectos de ampliación debe estar dentro del rango permitido para los clientes, es decir debe comenzar con Z.
Presionamos el Botón Asignación Ampliación para asignar las ampliaciones que vamos a incluir en el proyecto.
Introducimos las ampliaciones y presionamos el botón Componentes para visualizar los componentes de cada ampliación.
En la pantalla de componentes vamos a activar la ampliación presionando el botón de activación.
Cada uno de esos componentes son los Exit de la ampliación, es allí en donde se debe incorporar el código de validación o proceso a controlar con la ampliación.
Una vez activado, el proyecto de ampliación pasara a color verde.
Podemos anular la activación del proyecto de ampliación presionando el botón para desactivar.
Es importante recordar que si el Exit no está activo, la llamada a esta función no tendrá efecto alguno.
Probar un Customer Exit
Un punto complicado en la utilización de CE es ubicarlos y conocer el momento del proceso en el que ocurren los mismos. Todo esto para determinar qué datos y que particularmente, se puede realizar en ese momento.
Para realizar esta investigación, lo más efectivo será crear un proyecto de ampliación, asignar la ampliación, activarla y luego colocar un BreackPoint en el módulo de funciones para determinar los datos con los que disponemos en ese momento y el punto exacto del proceso en donde se encuentra.
 
 
 
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