✒️ABAP Las Ampliaciones: los User Exits y los Customer Exits
ABAP Las Ampliaciones: los User Exits y los Customer Exits
AMPLIACIONES: User Exits y Customer Exits
Què es una ampliaciòn.- 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 una pantalla 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 codificar en mòdulos aparte del còdigo estàndar, con lo cual no se necesita modificarlo, manteniendo la funcionalidad original y el buen funcionamiento.
- Ventajas:
- 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 tenìa.
- Los cambios toman efecto con sòlo transportar los nuevos objetos.
Desventajas:
- 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.
- User Exits
- Customer Exits o Exits de Clientes
- KeyWord Exits
- Field Exits o Exits de campos
- Estructuras Append
- Badis
- Enhancements.
- Menù Exits
2.- User Exits: Es una subrutina definida dentro de un programa estàndar ABAP que no tiene 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 implementadas en forma de subrutinas.
Todos los User Exit estàn nombrados por SAP como USEREXIT_XXXXXXXX
FORM USEREXIT_XXXXXXXX.
Senetencias.
ENDFORM.
El principal problema que presenta està en encontrar el User Exit correcto. Una vez que los encontramos debermos verificar que el mismo sirva para nuestro propòsito.
El còdigo ABAP que se insertarà dentro del User Exit, puede colocarse dentro de un INCLUDE que comenzarà con Z o signo 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".
Por ejemplo, en el programa estàndar MV45AFZZ, se encuentra el siguiente User Exit que es utilizado por la transacciòn VA02 cada vez que lee un documento.
FORM USEREXIT_READ_DOCUMENT.- Puede ser usado para leer datos en tablas adicionales, cuando el programa lee un documento de ventas.
Esta forma es llamada al final de la forma BELEG_LESEN.
"La transacciòn VA02, se utiliza para modificar los pedidos de venas."
Ciertas aplicaciones del mòdulo SD todavìa utilizan este tipo de ampliaciones pero està 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 se debe tener en cuenta que los User Exits seràn mantenidos por SAP en las nuevas versiones del sistema.
No se pueden generar nuevos User Exit, solamente se pueden trabajar con los ya existentes, Si no existe algùn User Exit que se ajuste a nuestro requerimiento, deberemos buscar otra soluciòn.dentro de las demàs soluciones de ampliaciòn.
3.- Customer Exits. Es un punto dentro de un programa estàndar en donde se puede llamar a un programa propio.
Se ejecutan desde un programa estàndar haciendo 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 programador.
Los Customer Exit son llamados dentro de los programas estàndares a travès de un nùmero
Este nùmero es la terminaiò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 del cliente.
De cada ampliaciòn se guarda el nombre de la ampliaciòn, el tìpo de componente que puede ser "E" para funciones Exit, "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.
La nomenclatura es la siguiente:
EXIT_nombre.del.programa_nùmero.funciòn.
La llamada a un exit de un mòdulo de funciòn es implementada de la siguiente forma en un programa estàndar de SAP.
CALL CUSTOMER-FUNCTION '3_dìgitos.'
CALL CUSTOMER-FUNCTION '100'.
EXPORTING
TABLES
CHANGING
Cada uno de estos mòdulos es llamado por el proceso estàndar en ciertos momentos y ellos tienen por defecto algunos paràmetros que son los disponibles dentro de la ampliaciòn.
Ventajas de Customer Exit:
- El Customer Exit 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
Desventajas de Customer Exit:
- 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 claraciòn amplia de su utilizaciòn, para buscarlos hay que realizar una bùsqueda del string CALL 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 Customer Exit se utilizan dos transacciones: SMOD y CMOD.
SMOD.- Para administrar las ampliaciones.
CMOD.- Para gestionar proyectos de ampliaciones.
4.- Pasos para realizar un Customer Exit.
A travès de la transacciòn SMOD, se completa el nombre de la ampliaciòn que contiene el mòdulo de funciòn a utilizar por el Customer Exit.
Si no se conoce el nombre aùn, hay que ir a la transacciòn SE16, con la tabla MODSAP, en el campo MEMBER completar con el mòdulo de funciòn a buscar (Ejemplo EXIT_SAPMV45A_003) y el campo NAME nos dirà la ampliaciòn que la contiene.
Si tampoco se conoce el mòdulo de funciòn especìfico, se debe buscar 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 del final puede ir cambiando si presenta màs de una llamada, es decir varios customer exit.
Una vez que se tiene el nombre de la ampliaciòn, en este ejemplo V45A0003, lo colocamos en el campo Ampliaciòn de la transacciòn SMOD y presionamos Visualizar.
En la siguiente pantalla presionamos el botòn "Componentes" (o habiendo seleccionado la opciòn Componentes de la pantalla anterior) y se visualizaràn todos los mòdulos de funciones que contiene esta ampliaciòn.
En este caso existen 2 mòdulos de funciòn, Cada uno va a ser ejecutado en algùn momento determinado de la ejecuciòn del programa al cual pertenecen, en este caso SAPPMV45A.
Una vez que ya se sabe què mòdulo de funciòn usar, se debe hacer doble click sobre el mismo y se derivarà a otra pantalla en la cual se puede ver que objetos importa y exporta esta funciòn, como asì tambièn las tabla 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.""
"En la ùtlimas versiones de SAP el include comienza con zx y si no se utilizò anteriormente, debemos crearlo."
Si este include no existe, al hacer doble click sobre el mismo, se pedirà al usuario que le asigne una orden de transporte para poder generarlo.
Una vez creado es posible generar còdigo ABAP utilizando todos los objetos que en la solapa de "Import, Modific." y "Tablas", pudiendo devolver resultados modificando los objetos que se encuentran en las solapas "Export, Modif y Tablas".
En general el còdigo que se ingresa dentro de los exits, corresponderà a validaciones de los campos de entrada, encaso de incumplirse una condiciòn determinada, se desplegarà en la pantalla un mensaje de error, caso contrario se continuarà 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 Customer Exit, 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ì ingresamos 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.
Ahora presionamos el notòn "Asignaciòn ampliaciòn", para asignar las ampliaciones que vamos a incluir.
En esta pantalla, 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ì 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 pasarà al color verde.
Se puede anular la activaciòn del proyecto de ampliaciòn, presionando el botòn relacionado,
"Importante, si el Exit no està activo, la llamada a esta funciòn no tendrà efecto alguno".
5.- Còmo probar un Custome 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 que particularmente, se puede realizar en ese momento.
Para realizar esta invetigaciò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 Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta