✒️ABAP Las Ampliaciones: los User Exits y los Customer Exits
ABAP Las Ampliaciones: los User Exits y los Customer Exits
¿Qué son las ampliaciones en SAP?
Como muchos sabemos, SAP es un sistema que no permite la modificación de los programas-transacciones estándar. Sin embargo, ocasionalmente se requiere adaptar las funcionalidades estándar a requerimientos específicos del cliente.
Para ello, SAP permite ciertas herramientas para realizar “modificaciones controladas” a los programas estándar.
Más que modificaciones, se tratan más bien de “ampliaciones”, ya que lo que se nos permite hacer, es añadirles funcionalidades a las ya existentes, como por ejemplo, alguna validación adicional a un pedido de ventas, específica del cliente, que no esté contemplada en el estándar de SAP.
Actualmente, existen 3 tipos de ampliaciones permitidas en SAP:
USEREXIT’s: Son subrutinas vacías existentes en los programas estándar, las cuales se pueden activar y escribir el código adicional que requerimos añadir; estas subrutinas responden a determinados eventos del proceso estándar, por lo que debemos ubicar cual es el userexit que corresponde al apartado de la transacción que queremos modificar, por ejemplo, si nos piden validar que el monto de un pedido no exceda una cantidad determinada al momento de crearlo, debemos encontrar que USEREXITS se activan al momento de pulsar el botón “Guardar”, o lo que es lo mismo, cuando se invoca el evento “guardar pedido”. Estas subrutinas cuentan con ciertas tablas y estructuras internas con la información relevante obtenida por el proceso estándar, en este ejemplo, la información del pedido que se pretende crear.
No es posible generar nuevos UserExit, sólo se pueden trabajar con los ya existentes
CUSTOMER-EXIT: En algunos puntos del código estándar, hay llamadas del tipo CALL CUSTOMER-FUNCTION <número>. Estas rutinas se editarán con la transacción CMOD.
BADI’S: Son ampliaciones que funcionan bajo la filosofía de programación orientada a objetos, es decir, mediante clases y métodos, son invocados dentro del estándar con CALL METHOD, creadas a través de la transacción SE18 e implementadas por la SE19.
Las BADI’s se definen mediante la SE18, donde se debe especificar lo siguiente:
Definición de la interfaz: métodos y parámetros que contendrá la clase a implementar.
Tipo de implementación: se puede crear una BADI simple (permite una sola implementación activa) o múltiple (permitir varias invocaciones desde diferentes programas).
Luego, para implementar la BADI recién creada, o cualquier otra existente en el sistema, o bien utilizar alguna de las distintas implementaciones de BADI’s existentes, se debe utilizar la transacción SE19.
Las BADI’s se pueden implementar más de una vez, a diferencia de los USEREXITS, que solo permiten una implementación; esto es porque un USEREXIT es un perform dentro de un programa estándar, por lo que solo puede ser invocado por dicho programa, en cambio las BADI’s son interfaces de clases, cuyos métodos pueden ser invocados desde diferentes programas.
En resumen, los USEREXITS son performs dentro del código estándar, los CUSTOMER-EXIT son funciones, y las BADI’s son interfaces.
 
 
 
Sobre el autor
Publicación académica de Daniel Martinez Chaer, en su ámbito de estudios para la Carrera Consultor ABAP.
Daniel Martinez Chaer
Profesión: Analista Programador - Uruguay - Legajo: SK29Z
✒️Autor de: 76 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Con experiencia en sap fi y mm, migración desde sistema legacy, extracción de datos de la base oracle sap y generación de reportes.
Certificación Académica de Daniel Martinez