✒️ABAP Las Ampliaciones: los User Exits y los Customer Exits
ABAP Las Ampliaciones: los User Exits y los Customer Exits
1° Ampliaciones: User Exits y Customer Exits
1- Qué es una Ampliación?
Son herramientas que presenta SAP para realizar mejoras, modificaciones o agregados a algunos programas estándares del sistema que están preparados para agregarles una funcionalidad nueva a la existente.
- Validar campos de una Dynpro
- Agregar campos a una Pantalla con código ABAP para tratarlos
- Agregar una Opción a un Menú
- Agregar campos a una Tabla estándar
Las Ampliaciones se generan y codifican en módulos aparte del código estándar, por lo que no se necesita modificarlo, manteniendo la funcionalidad original.
- VENTAJAS
- Permiten adaptar programas a necesidades de la empresa, agregando características a las existentes
- Permiten realizar mejoras manteniendo el buen funcionamiento y sus características
- Los cambios toman efecto con sólo transportar los nuevos objetos
- DESVENTAJAS
- No siempre se pueden hacer todas las modificaciones de forma 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.
- TIPOS DE AMPLIACIONES:
User Exits, Customer Exits, Keyword Exits, Field Exits, Estructuras Append, Badis, Enhancement, Menú Exits.
2- User Exits
Es una subrutina definida dentro de un programa estándar que está hueca (sin código), para que el usuarios ponga su propio código fuente para realizar tareas no previstas por SAP.
- Son las primeras ampliaciones de SAP
- Son propias del Módulo SD (Ventas y Distribución) y no existen en otros módulos. Actualmente se utilizan los otros tipos, aunque se mantengan en las nuevas versiones de SAP.
- Están implementadas en forma de subrutinas.
- Su formato es
- FORM USEREXIT_XXXXXXXX.
- ......
- ......
- ENDFORM.
- El principal problema es encontrar el adecuado para el propósito buscado
- El código ABAP a insertar puede estar suelto o dentro de un INCLUDE que comenzará con Z.
3- Customer Exit
Es un punto dentro de un programa estándar en donde se puede llamar a un programa propio, ejecutando una invocación a un Módulo de Función que puede ser modificado por el programador. Son llamados a través de un número el cual es la terminación del Nombre del Módulo de Función que está asociado al programa estándar.
NOTA: En la Tabla MODSAP se encuentran todos los Módulos de Función que se utilizan en los Customer Exits. De cada ampliación guarda: el Nombre de la Ampliación, el Tipo de Componente (E para Exit de Funciones; S para imágenes, T para Tablas y C para Código GUI) y el Nombre del Objeto SAP que se modifica (Programa, Módulo de Función, etc.).
Nomenclatura: EXIT_<nombre del programa>_<número de función>.
Por ejemplo: EXIT_SAPMV45A_003.
La llamada sería: CALL CUSTOMER-FUNCTION '003'
EXPORTING
......
Cada uno de estos módulos es llamado por el proceso estándar en ciertos momentos y tienen establecidos algunos parámetros por defecto que son los disponibles dentro de la ampliación.
- VENTAJAS
- Permite agregar nueva funcionalidad como puede ser una Validación o Rutinas de Control.
- Para Transportarlos y Activarlos alcanza con el INCLUDE nuevo sin tocar el programa original.
- DESVENTAJAS
- No siempre se ajusta a las necesidades del programador ya que los objetos que Importa o Exporta son fijos y pueden no ser todos los que se requiere.
- No existe una Búsqueda por programa con una Aclaración Amplia de su utilización. Para buscarlos se debe ubicar el CALL dentro del programa estándar y su funcionamiento se prueba sin saber si es el que se buscaba.
- Transacciones Aosiadas
- SMOD: Para Administrar las Ampliaciones
- CMOD: Para la Gestión de Proyectos de Ampliaciones
4- Pasos para Realizar un Customer Exit
- Búsqueda del Nombre de la Ampliación para Ingresar a la Trx SMOD
- Si se conoce el Nombre de la Ampliación (p.ej. V45A0003) se lo ingresa en el campo Ampliación
- Si solo se conoce el Nombre del Módulo (p.ej. EXIT_SAPMV45A_003), se accede a la Trx SE16 y en la Tabla MODSAP se busca colocándolo en MEMBER y nos devolverá en Name su nombre.
- Si solo se conoce el Nombre del Programa (p.ej. SAPMV45A), se deberá buscar en el código ABAP las llamadas CALL CUSTOMER-FUNCTION para saber todas las Ampliaciones que tiene previstas.
- Teniendo el Nombre de la Ampliación
- Se lo ingresa en Ampliación y se presiona Visualizar
- En esta pantalla se observan Datos Generales de la Ampliación
- Presionando Componentes nos aparece una pantalla con el Nombre de los Módulos existentes
- Haciendo doble click sobre alguno de ellos, veremos una pantalla, en la cual se puede ver
- - Objetos que se Importan
- - Objetos que se Exportan
- - Tablas que Importa y que pueden modificarse
- - Código Fuente donde se observa un INCLUDE Z (en las nuevas versiones de SAP comienza con ZX) que será dentro del cual se podrá desarrollar la nueva funcionalidad. Si el INCLUDE no existe habrá que crearlo.
- Una vez creado, se genera el código ABAP necesario utilizando los objetos de Import, Modif. y Tablas, pudiendo devolver resultados modificando los objetos de Export, Modif. y Tablas.
- Una vez terminada la codificación, la Ampliación debe Activarse e Incluirse en un Proyecto Z, los cuales son creados en la Trx CMOD y pueden contener todas las ampliaciones que se desee.
- Proyecto de Ampliación
- Asocia n ampliaciones
- Su Activación o Desactivación afecta a todas las ampliaciones asociadas
- Accediendo a la Trx CMOD se ingresa el Nombre del Proyecto y se presiona Crear
- Presionando el botón Asignación ampliación, se nos presentará una pantalla donde incluiremos las ampliaciones de este proyecto
- Presionando el botón Componentes podremos ver los componentes de cada ampliación.
- Y en esta pantalla Activamos la Ampliación. Una vez activado pasará al color verde.
- Se puede Anular la Activación presionando el botón Desactivar.
5- Cómo Probar un Customer Exit?
Debido a la complicación que resulta ubicarlos y conocer el momento del proceso en que ocurren los mismos, para determinar con cuales datos y que tratamientos se le pueden dar, lo más conveniente es colocar un BreakPoint en el Módulo de Funciones y observar durante el proceso los detalles necesarios.
 
 
 
Sobre el autor
Publicación académica de Victor Norberto Levi, en su ámbito de estudios para la Carrera Consultor ABAP.
Victor Norberto Levi
Profesión: Analista Programador - Argentina - Legajo: VT17H
✒️Autor de: 111 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Victor Levi