✒️ABAP / Las Ampliaciones: los User Exits y los Customer Exits Por Juan Romero
ABAP Las Ampliaciones: los User Exits y los Customer Exits

Las Ampliaciones los User Exits y los Customer Exits.
Definición y propósito de las ampliaciones
- Las ampliaciones permiten realizar mejoras en aplicaciones relacionadas con programas estándar de sistemas, agregando funcionalidades sin modificar el código original.
- Ejemplos de mejoras: agregar campos a módulos y plantillas, nuevas opciones en menús, o modificar tablas de bases de datos.
- Se desarrollan aparte del código estándar para mantener la funcionalidad y el rendimiento original.
- Ventajas: adaptación a necesidades de la empresa y facilidad para transportar los nuevos objetos.
- Desventajas: limitación según la preparación de los programas y el tipo de ampliación disponible.
Tipos de ampliaciones en SAP
- Existen varios tipos, cada uno con sus particularidades: user exit, customer exit, queries, exit de campo, extensiones de formularios, enfiladre y views exit.
User exit
- Son subrutinas vacías presentes en programas estándar ABAP, listas para que el usuario agregue código propio para tareas no previstas por SAP.
- Suelen estar en forma de subrutinas y su principal dificultad es identificar el user exit adecuado para cada necesidad.
- Permiten agregar lógicas sin ingresar directamente a la base de datos de SAP.
- Aunque siguen existiendo, nuevas extensiones suelen priorizar otros métodos.
Customer exit (exit de cliente)
- Permiten ejecutar módulos de funciones propios desde programas estándar, facilitando la personalización sin modificar el código base.
- Los módulos están identificados y registrados en tablas estándar SAP.
- Ventajas: agregan funciones como validaciones o rutinas de control sin tocar el programa original.
- Desventajas: no siempre cubren todas las necesidades del programador y pueden afectar el rendimiento.
- Se gestionan mediante interfaces específicas para administración y procesos de ampliación.
Pasos para implementar y gestionar ampliaciones
- Revisión de transacciones y documentación necesarias para las ampliaciones estándar.
- Uso de tablas para definir y asociar módulos y nodos de funciones a los proyectos de ampliación.
- Creación y activación de proyectos de ampliación usando una infraestructura dedicada, asegurando afectar correctamente las inversiones asociadas.
- Uso de interfaces para seleccionar, insertar y activar componentes de la ampliación en proyectos, controlando su estado.
- Verificación y pruebas del cash flow neto durante el proceso de inversión; recomendaciones para probar y activar ampliaciones en sistemas reales.
Suggested Action Items
- Revisar el video complementario con reglas adicionales para la planificación de ampliaciones.
- Realizar pruebas de ampliaciones y cash flow neto para asegurar márgenes de seguridad adecuados en inversiones.
Uso de user exits SAP
Restricciones y uso de user exits
- Los huecos o user exits están ubicados en lugares determinados del sistema SAP.
- No es posible crear nuevos user exits; se debe trabajar únicamente con los existentes.
- Si ningún user exit se ajusta a los requerimientos, es necesario buscar otras alternativas de ampliación que SAP ofrece.
Implementación de código en exits
- El código ABAP se debe escribir en el include correspondiente (por ejemplo, zxbbau05) dentro del exit.
- Normalmente, el código implementado sirve para validar campos de entrada.
- Si se cumple una condición específica, se muestra un mensaje de error que impide el funcionamiento normal de la transacción.
- Si no se cumple la condición, el procesamiento continúa normalmente.
Cómo encontrar customer exits
Procedimiento para identificar customer exits en transacciones
- Se muestra cómo identificar los customer exits asociados a una transacción de SAP de manera sencilla.
- Se utiliza la transacción ME23N (gestión de materiales, módulo MM) como ejemplo práctico.
- El proceso consiste en navegar por el campo de comandos, ingresar a la transacción deseada y acceder al menú Sistema > Estatus.
- En la ventana de diálogo se identifica el nombre del programa asociado a la transacción y se ingresa para ver detalles.
- Desde el menú de atributos del programa, se identifica el nombre del paquete (por ejemplo, MM).
- Se usa la transacción SE84 para buscar en la carpeta Ampliaciones, dentro de Exits de Clientes, las ampliaciones vinculadas al paquete copiado.
- Al ejecutar la búsqueda se obtiene la lista de customer exits asociados a dicho paquete, que pueden estar ligados a distintas operaciones (visualización, modificación, creación).
- Al hacer doble clic en un exit, se visualizan los módulos de funciones disponibles y, dentro de estos, las posiciones donde se puede agregar código ABAP Z.
- Se explica que, si el exit aún no está creado, el sistema ofrece la opción de crearlo para personalizarlo.
Ejemplo con otra transacción (VA03)
- Se repite el procedimiento con la transacción VA03 (ventas y distribución, módulo SD) para visualizar pedidos de venta.
- Se accede nuevamente al menú Sistema > Estatus para identificar el programa y su paquete (en este caso, VA).
- Se utiliza la transacción SE84 (aunque se mencionó por error SE204) para buscar los exits de clientes asociados al paquete VA.
- El proceso para explorar los módulos de funciones y crear código Z se reitera como en el ejemplo anterior.
Consideraciones finales
- El método presentado es válido para cualquier transacción o paquete dentro de SAP para identificar los customer exits disponibles.
- Se recalca la utilidad y la facilidad del procedimiento para localizar los puntos de ampliación donde se puede agregar funcionalidad personalizada.
- Se concluye animando a continuar explorando y aprendiendo sobre este tipo de personalizaciones en SAP.
 
 
 
Sobre el autor
Publicación académica de Juan Ignacio Romero, en su ámbito de estudios para el Curso SAP ABAP Avanzado.
Juan Ignacio Romero
Profesión: Ing. Sistemas Computacionales - Mexico - Legajo: LJ26F
✒️Autor de: 138 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Juan Romero






Disponibilidad Laboral: FullTime


















