![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Las Ampliaciones: los User Exits y los Customer Exits
ABAP Las Ampliaciones: los User Exits y los Customer Exits
![ABAP Las Ampliaciones: los User Exits y los Customer Exits ABAP Las Ampliaciones: los User Exits y los Customer Exits](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/339.jpg)
Aplicaciones: son diferentes herramientas que presenta SAP para realizar mejoras, modificaciones o agregados a un programa estándar del sistema.
Las Aplicaciones se generan y codifican en módulos aparte del código estándar, con lo cual no se necesita modificar el estándar, manteniendo la funcionalidad original y el buen funcionamiento.
Las principales Ventajas que presentan las Aplicaciones son:
- Permiten modificar ciertos programas para adaptarlos a necesidades particulares de la empresa, agregando nuevas características a las existentes.
- Permite realizar mejoras a un programa si modificar el código original del mismo, manteniendo el buen funcionamiento y las características que tenia.
- Los cambios toman efecto con sólo transportar los nuevos objetos.
Las principales desventajas que presentan las aplicaciones son:
- No siempre se pueden hacer todas las modificaciones de manera satisfactoria, ya que las mayoría de las aplicaciones están determinadas para una determinada tarea y momento dentro de la ejecución de un programa.
- No todos los programa estándares están preparados todos los tipos de aplicaciones.
En SAP existen varios tipos de aplicaciones que son utilizados de acuerdo al tipo de mejor o requerimiento que se quiera desarrollar.
Las aplicaciones más importantes son :
- User Exits
- Customer Exits o Exits de cliente
- KeyWor Exits
- Field Exits o Exits de campo
- Estuctura Append
- Badis
- Enhancements
- Menú Exits
User Exits: es una subrutina dentro de un programa estándar ABAP que está hueca, sin código, está allí para que el usuario escriba su propio código fuente que le permita realizar tareas especificas que no están prevista por SAP.
Son las primeras aplicaciones que introdujo SAP.
Son propias del modulo de SAP SD de Ventas y Distribución, no existen en otro modulo de SAP.
Están implementados en la forma de subrutinas.
Todos los User Exit están nombrados por SAP como USEREXIT_XXXXXXXX.
E principal problema que presentan está en encontrar cuál es el User Exit correcto. Una vez que lo encontramos debemos verificar que el mismo sirve para nuestro propósito.
El código ABAP que se insertará dentro del User Exit puede encontrarse dentro de un INCLUDE que comenzara con Z o sino suelto.
(Transacción VA02: utilizamos para modificar los pedidos de ventas).
Ciertas aplicaciones del módulo SD todavía utilizan este tipo de aplicaciones pero esta practica no se está utilizando para nuevas extensiones al código ABAP. En su lugar se utilizan el resto de los tipos de aplicaciones disponible, aunque vale tener en cuenta que los User Exits serán mantenidos por SAP en las nuevas versiones del sistema.
Los Customer Exits: tambien llamados Exit de Cliente es un punto 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 funciones.
Algunos programas estándares tienen dentro de su código llamadas a módulos de funciones que pueden ser modificados por el programa ABAP.
Los Customer Exits son llamado 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 funciones que está asociado al programa.
En la tabla base de datos estándar MODSAP se encuentra todos lo módulos de funciones que se utilizan en los Extis de cliente.
Los módulos de funciones tienen una nomenclatura estándar: (EXIT_<nombre del programa>_<número de función>).
Para trabajar con Customer Exits vamos a utilizar principalmente dos transacciones que son:
- SMOD: para administrar las aplicaciones.
- CMOD: para la gestión de proyectos de Ampliaciones.
Los pasos para implementar un Customer Exit.
Primeramente vamos a dirigirnos a la transacción SMOD, que es la que maneja las aplicaciones en SAP. en esta transacción se debe completar el nombre de la ampliación que contiene el módulo de funciones a utilizar por el Customer Exit.
Si no se conoce el nombre aún, entonces debemos dirigirnos a la transacción SE16, con la tabla base de datos MODSAP, en el campo MEMBER completa con el nombre del modulo de funciones a buscar ( Ejemplo EXIT_SAPMV45A_003) y el campo NAME nos dirá la aplicación que la contiene. Si tampoco se conoce el nombre del modulo de funciones entonces debemos buscar en el código del programa estándar las llamadas a las funciones de usuarios, que estarán indicadas por CALL CUSTOMER-FUNCTION 'XXX', donde 'XXX' es el número del Customer Exit que puede ir cambiando si presenta más de una llamada, es decir varias Customer Exit o Exits de cliente. Una vez que se tiene el nombre de la aplicación, es este ejemplo V45A0003, lo colocamos en el campo aplicación de la transacción SMOD y hacemos clic en Visualizar. En la siguiente pantalla hacemos clic en el botón Componentes (o habiendo seleccionado la opción Componente de la pantalla anterior) y se visualizara todos los módulos de funciones que contiene esta aplicación. En este caso para la aplicación V45A0003, existen dos módulos de funciones. Cada uno va a ser ejecutado en algún momento determinado de la ejecución del programa al cual pertenecen, en este caso SAPMV45A.
Una vez que ya se sabe qué módulo de funciones utilizar, se debe hacer doble clic sobre el mismo y se derivará a otra pantalla, en la cual se puede ver que objetos importan y exporta, como así también las tablas que importa y que pueden modificarse, las cuales se utilizarán en el código fuente.
En la solapa Cód.fte. se encuentra un Include Z que se utiliza para agregar el código del usuario. Si este Include no existe, al hacer doble clic sobre el mismo, se pedirá que le asigne una orden de transporte para poder generarlo. Una vez creado el Include 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 solapas Export, Modif. y Tablas. Una vez terminado 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 aplicaciones que se deseen.
Un proyecto de Ampliación asocia n Ampliación. Su activación afecta a todas las aplicaciones asociadas.
La transacción para acceder a los proyectos de Ampliación es la CMOD. Allí ingresamos el nombre del proyecto y hacemos clic en el botón Crear. Ahora hacemos clic en el botón Asignación ampliaciones que vamos a incluir en el proyecto. La pantalla de asignación de Ampliaciones es la que vemos a continuación. Allí introducimos las Aplicaciones y hacemos clic en el botón Componentes para visualizar los componentes de cada aplicación. En la pantalla de componentes vamos a activar la Ampliación haciendo clic en el botón de activación.
Cada uno de los componentes son los Exits de ampliación, es allí en donde se debe incorporar el código de validación o proceso a continuación con la ampliación pasará al color verde. Podemos anular la activación del Proyecto de ampliación haciendo clic en el botón para desactivar.
Como probar un Customer Exit?
Un punto complicado en la utilización de Customer Exits es ubicarlos y conocer el momento del proceso en el que ocurren los mismos. Todo esto para determinar que datos y 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 breakpoint 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 Javier Miguel Angel Barcelo, en su ámbito de estudios para la Carrera Consultor ABAP.
Javier Miguel Angel Barcelo
Profesión: Militar - Argentina - Legajo: DQ34X
✒️Autor de: 93 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
Certificación Académica de Javier Angel