✒️ABAP Las Ampliaciones: los User Exits y los Customer Exits
ABAP Las Ampliaciones: los User Exits y los Customer Exits
1. AMPLIACIÓN
Son diferentes herramientas que proporciona SAP para realizar mejoras, modificaciones o agregados de un programa estándar del sistema
Algunos programas están preparados para agregarles funcionalidad nueva. En algunos casos se puede validar campos de alguna dynpro o agregar campos a una pantalla o agregar una nueva opción dentro de un menú o agregar campos a tablas estándares
Las ampliaciones se generan en módulos aparte del código estándar. Así no necesitamos modificar el código estándar y mantenemos la funcionalidad original
Ventajas:
- Permiten adaptar ciertos programas a las necesidades particulares de la empresa
- Permiten realizar mejoras en 1 programa sin modificar el código original, manteniendo el buen funcionamiento y sus características
- Los cambios tienen efecto al transportar los nuevos objetos
Desventajas:
- No siempre se pueden hacer todas las modificaciones de manera satisfactoria, por cómo están preparadas la ampliaciones
- 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, Enhancements y Menú exits.
2. USER EXITS
Es una subrutina definida dentro de un programa estándar que está hueca (sin código). Está allí preparada para que el usuario ponga su propio código fuente para realizar tareas específicas no previstas por SAP. Son las primeras ampliaciones que introdujo SAP.
Son propias del módulo SD (Ventas y Distribución). No existen en otros módulos de SAP.
Se implementan en forma de subrutinas. Se nombran como FORM USEREXIT_xxxxxxxx.
El principal problema: encontrar el User exit correcto.
El código ABAP insertado en el User Exit puede ir suelto o dentro de un Include Z.
Ejemplo: tr. VA02 (modificar pedidos de venta), programa estándar MV45AFZZ, User Exit: Form USEREXIT_READ_DOCUMENT
Aunque todavía se usan User Exits en el módulo SD, SAP no los usa para nuevas extensiones al código SAP aunque serán mantenidos en nuevas versiones.
3. CUSTOMER EXITS
Es un punto dentro de un programa donde se puede llamar a un programa propio; se invoca a un módulo de función que puede ser modificado por el programador. Son llamados dentro de los programas estándar a través de un número (terminación del nombre del módulo).
En la tabla MODSAP están todos los módulos de función que se usan en los Customer Exits. La tabla MODSAP guarda todas las ampliaciones existentes en el Sistema SAP, guardando:
- Nombre de la ampliación
- Tipo: E (Exit de funciones), S (imágenes), T (Tablas) y C (Código GUI)
- Nombre del objeto SAP: Programa, módulo de función,.. que se modifica
Nomenclatura estándar de los módulos de función: EXIT_<nombrePrograma>_<númDeFunción> (P.ej: EXIT_SAPMV45A_003)
La llamada a un exit de un módulo de función se implenta así: CALL CUSTOMER-FUNCION <3 dígitos> (P.ej. CALL CUSTOMER-FUNCTION '100')
Ventajas de un Customer Exit:
- Es una buena herramienta para agregar funcionalidad nueva (validación, 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 , sin tocar el programa original.
Desventajas de un Customer Exit:
- No siempre se ajusta a las necesidades del programador: los objetos que importa o exporta son fijos y pueden no ser todos los requeridos
- No existe una búsqueda de Customer Exit por programa. Para buscarlos hay que realizar una búsqueda del string 'CALL CUSTOMER-FUNCTION' dentro del programa de control estándar
Para trabajar con Customer Exits usaremos 2 transacciones:
- SMOD: Administrar las ampliaciones
- CMOD: Gestionar los Proyectos de Ampliaciones
4. PASOS PARA REALIZAR UN CUSTOMER EXIT
Pasos para implementar un Customer Exit:
- Desde la tr. SMOD, completamos el nombre de la ampliación que contiene el módulo de función a usar por el Customer Exit. Si no se conoce el nombre, el campo NAME de la tabla MODSAP nos lo dirá, poniendo el módulo de función (p.ej. EXIT_SAPMV45A_003) en el campo MEMBER. Si no conocemos el módulo de función, hay que buscar las llamadas a funciones de usuario (CALL CUSTUMER-FUNCTION '001' -ejemplo-) en el código del programa estándar
- Tras conseguir el nombre de la ampliación (en el ejemplo, V45A0003), lo ingresamos en la tr SMOD y pulsamos Visualizar. A continuación pulsamos el botón Componentes y veremos todos los módulos de funciones que contiene esta ampliación
- Una vez sabemos el módulo de función a usar, hacemos doble click sobre él y podremos ver qué objetos importa y exporta, qué tablas importa y pueden modificarse.
- En la solapa Código Fuente, se halla un Include Z que se usa para agregar código de usuario. En las últimas versiones el include comienza por ZX.
- Si el include no existe, al hacer doble click, se pedirá al usuario que le asigne una orden de transporte
- Una vez creado el include, ya se puede generar código ABAP usando los objetos de las solapas Import, Modific y Tablas; y devolviendo resultados modificando los objetos de las solapas Export, Modific. y Tablas
- Una vez terminada la codificación, debemos activar la ampliación e incluirla en un Proyecto. Los proyectos se crean desde la tr. CMOD. Allí generaremos un proyecto Z que incluya las ampliaciones
La activación o desactivación de un Proyecto de Ampliación afecta a todas las ampliaciones asociadas. Tras crear el Proyecto, presionamos el botón Asignación ampliación para asignarla/s al proyecto actual. Si pulsamos el botón Componentes (Exits de ampliación) veremos los componentes de cada ampliación. Desde esta pantalla, activaremos la ampliación
5. ¿CÓMO PROBAR UN CUSTOMER EXIT?
Resulta complicado ubicar los Customer Exits y saber el momento del proceso en el que ocurren. Para saber qué datos y qué se puede hacer en ese momento.
Para saberlo, lo más efectivo es crear un Proyecto de Ampliación; asignar la ampliación, activarla y luego colocar un BreakPoint en el módulo de funciones para saber los datos de que disponemos y el punto exacto del proceso
 
 
 
Sobre el autor
Publicación académica de David Campillo Martinez, en su ámbito de estudios para la Carrera Consultor ABAP.
David Campillo Martinez
Profesión: Administrador de Sistemas - España - Legajo: PC32Z
✒️Autor de: 56 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de David Campillo