![](/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/317.jpg)
AMPLIACIONES
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.
Las ampliaciones se generan y codifican en módulos aparte del código estándar, con lo cual no se necesita modificarlo, manteniendo la funcionalidad original y el buen funcionamiento.
Las principales ventajas que presentan las ampliaciones son:
-> 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.
Las principales desventajas que presentan las ampliaciones son:
-> 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.
Las más importantes son:
-> USER EXITS
-> CUSTOMER EXITS o EXITS DE CLIENTE
->KEYWORD EXITS
-> FIELD EXITS o EXITS DE CAMPO
-> ESTRUCTURAS APPEND
-> BADIS
-> ENHANCEMENTS
-> MENÚ EXITS
QUÉ ES UN USER EXIT
Es una subrutina definida dentro de un programa estándar ABAP que está huaca, es decir sin código, está allí para que el usuario ponga su propio código fuente que le permita realizar tareas especificas que no están previstas en SAP.
Son las primeras ampliaciones que introdujo SAP.
Son propias del módulo de SAP SD de ventas y distribución, no existen otros módulos de SAP.
Están implementados en la forma de subrutinas.
Todos los USER EXIT están nombrados por SAP como USEREXIT_XXXX.
FORM USEREXIT_XXXXXX
->
->
->
ENDFORM.
El principal problema que presentan está en encontrar el USER EXIT correcto. Una vez que lo encontremos deberemos verificar que el mismo sirva para nuestro propósito.
El código ABAP que insertará dentro del USER EXIT puede colocarse dentro de un INCLUDE que comenzará con Z o sino suelto.
Nota: 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.
TRANSACCIÓN VA02
TRANSACCIÓN ESTÁNDAR VA02 PARA MODIFICAR LOS PEDIDOS DE VENTAS.
Ciertas aplicaciones del módulo SD todavía utilizan este tipo de ampliaciones pero esta práctica no se esta utilizando para nuevas extensiones al código SAP.
En su lugar se utilizan el resto de los tipos de ampliaciones disponibles, aunque vale tener en cuenta que los USER EXITS serán mantenidos por SAP en las nuevas versiones del sistema.
CUSTOMER EXIT
También llamado EXIT DE CLIENTE es un punto dentro de un programa donde se puede llamar a un programa propio.
Se ejecutan desde un programa estándar haciendo una validació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 User Exit son llamados son llamados 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 función que esta asociada al programa.
En la tabla MODSAP se encuentra todos los módulos de función que se utilizan en los User Exit.
NOTA: La tabla de los datos estándar MODSAP almacena todas las ampliaciones existentes en el sistema SAP.
DE cada ampliación se guarda, el nombre de la ampliación el tipo de componente que puede ser "E" para EXIT de funciones, "S" para imágenes, "T" para tablas, "C" para código GUI y finalmente el nombre del objeto de SAP que se modifica.
Los módulos de función tienen una nomenclatura estándar:
EXIT_<nombre del programa>_<número de función>.
Ejemplo:
EXIT_SAPMV45A_003
La llamada de un Exit de un modulo de función es implementada de la siguiente forma en un programa estándar de SAP:
CALL CUSTOMER-FUCTION < 3 DÍGITOS >
Las principales ventajas que presenta un CUSTOMER EXITS son:
-> 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.
Para trabajar con CUSTOMER EXITS vamos a utilizar principalmente dos transacciones que son:
SMOD:
Para administrar las ampliaciones.
CMOD:
Para gestión de proyectos de ampliaciones.
PASOS PARA REALIZAR UN CUSTOMER EXIT
Primeramente vamos a dirigirnos a la transacción SMOD, que es la que maneja las ampliaciones en SAP. En esta transacción se debe completar 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 nombre del 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, debe buscarse en el código del programa estándar las llamadas a funciones de usuario, que estarán indicadas por CALL CUSTOMERFUNCTION ‘001’, donde el número del final puede ir cambiando si presenta más de una llamada, es decir varios customer exit o exits de cliente.
Una vez que se tiene el nombre de la ampliación, , lo colocamos en el campo Ampliación de la transacción SMOD y presionamos Visualizar.
En la opción de componentes de la pantalla se visualizarán todos los módulos de funciones que contiene esta ampliación.
Una vez que ya se sabe qué modulo de función usar se debe hacer doble clic sobre el mismo y se derivará a otra pantalla, en la cual se puede ver qué objetos importa y exporta esta función, 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
Nota: Ene las ultimas versiones de SAP el include comienza con ZX y si no se utilizo anteriormente deberemos crearlo ya que no existirá.
CÓMO 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 que 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 Diego Armando De Santiago Castanon, en su ámbito de estudios para la Carrera Consultor ABAP.
Diego Armando De Santiago Castanon
Profesión: Ingenieria en Sistemas Computaciona - Mexico - Legajo: CQ90U
✒️Autor de: 63 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Diego De