
Las Badis son un tipo avanzado de extensión del sistema SAP que permite realizar modificaciones al estándar para satisfacer requerimientos específicos del cliente sin necesidad de alterar el código fuente original. A diferencia de ampliaciones anteriores, las Badis se basan en la utilización de objetos ABAP para la implementación de validaciones y mejoras.
1. Arquitectura y Tipos de Badis
Una de las características más potentes de las Badis es su arquitectura multicapa, lo que permite que coexistan soluciones de SAP, de partners, localizaciones geográficas y soluciones de cliente o de industrias específicas en un mismo flujo. Técnicamente, se dividen en dos tipos:
• Badis Clásicas: Fueron las primeras en existir y se basan en módulos de funciones y clases.
• Badis Nuevas (Enhancement Spots): Incorporan las últimas tecnologías de SAP y forman parte del Enhancement Framework.
2. El Ciclo de Vida: Definición e Implementación
Para trabajar con Badis, debemos distinguir entre dos fases técnicas:
• Vista de Definición (Transacción SE18): Es donde se definen las interfaces y los métodos asociados a la Badi. Por lo general, SAP ya proporciona las definiciones estándar y raras veces el consultor debe crear una nueva. Aquí se pueden visualizar los parámetros de entrada y salida de cada método.
• Vista de Implementación (Transacción SE19): Es donde el desarrollador crea la lógica de negocio personalizada. Al implementar una Badi, se eligen los métodos disponibles y se introduce el código ABAP necesario dentro de ellos.
3. Uso de Filtros y Flexibilidad
Las Badis permiten definir filtros para la ejecución, lo que otorga una gran flexibilidad. Por ejemplo, se puede implementar la Badi ADDRESS_CHECK y configurar un filtro para que el código solo se ejecute cuando el país sea "AR" (Argentina). Esto evita que la lógica personalizada afecte a otros procesos globales de la compañía.
4. Cómo encontrar una Badi en un proceso estándar
Como consultor senior, un recurso indispensable para el debugging es saber localizar los puntos de ampliación. Para encontrar qué Badis se disparan en una transacción, se puede seguir este procedimiento:
1. Acceder a la transacción SE24 (Class Builder).
2. Colocar un breakpoint de sesión en el método GET_INSTANCE de la clase estándar CL_EXITHANDLER.
3. Ejecutar la transacción deseada; el programa se detendrá y la variable EXIT_NAME mostrará el nombre técnico de las Badis disponibles en ese punto exacto del proceso.
5. Diferencias clave con los Customer Exits
Es fundamental para un arquitecto ABAP entender por qué preferir una Badi sobre un Customer Exit tradicional:
• Multiplicidad: Pueden existir varias implementaciones activas de una misma Badi en el sistema, mientras que los Customer Exits solo permiten una única implementación.
• Tecnología: Las Badis utilizan métodos de objetos, mientras que los Customer Exits dependen de módulos de funciones.
• Capas: Las Badis admiten una arquitectura multicapa, mientras que los Customer Exits solo manejan dos capas (SAP y cliente).