3.6. - Badis
3.6.1. - ¿Qué son las Badis?
Son un nuevo tipo de extensión al sistema SAP, basado en la utilización de objetos ABAP para la implementación de validaciones al código estándar de SAP, sin tener que modificar el código estándar.
Mediante las Badis, se pueden realizar modificaciones al estándar de modo de poder satisfacer los requerimientos del cliente. Se podrán definir los filtros para la ejecución de forma tal de poder tener diferentes procesos para, por ejemplo, países diferentes. Esto le permite a SAP poder utilizar las Badis para realizar localizaciones del sistema. Por eso, el sistema estándar ya incluye varias implementaciones de Badis.
Únicamente se implementan en el código estándar de SAP, ya que el código Z puede ser modificado sin inconvenientes por cualquier programador.
3.6.2. - Tipos de Badis
Existen dos tipos de Badis.
1. Badis clásicas
a. Son las primeras que existieron
b.
2. Badis nuevas
a. También se conocen como “Puntos de ampliación o Enhancement spot” que incorporan las últimas tecnologías de SAP.
b.
3.6.3. - Vistas de una Badi
Las Badis tienen dos vistas, la vista de definición y la vista de implementación. La definición de las Badis viene definida en el sistema estándar y muy pocas veces será necesario crear una nueva definición.
3.6.4. - Definición de una Badi
Mediante la transacción SE18, se accede a la vista de definición de las Badis.
La configuración correspondiente a un “Punto de ampliación o Enhancement sport” se realiza en las pestañas del Badi. En la pestaña “Definiciones elem.punto ampl” se verán las configuraciones generales de la Badi.
En la pestaña “Enhancem.Implementations”, se verá si la Badi está implementada.
Si se pulsa dos veces en “Interface”, se verá cual es la interface asociada a la Badi y qué métodos están asociados a la definición de la Badi.
Si se pulsa dos veces sobre un método, se verán los parámetros de entrada y salida del método.
3.6.5. - Implementación de una Badi
A través de la transacción SE19, se accede a la implementación de las Badis.
Se podrán ver los métodos disponibles en la implementación.
Si se pulsa dos veces en los métodos, se podrá ver la lógica asociada a ellos, por lo tanto se podrá elegir entre utilizar dicha lógica estándar o crear una nueva.
3.6.6. - Paso a paso en la creación de una implementación
En el ejemplo, se va a implementar una Badi que permita mostrar un mensaje cuando se están modificando los datos de dirección de un banco determinado, mediante la transacción FI02.
Para ello, se implementará la Badi “ADDRESS_CHECK” en el método “IS_ACTIVE_FOR_COUNTRY”, el cual permite ampliar la validación del país.
El primer paso será acceder a la transacción SE19, marcando “Badi clásico”, completando el nombre de la definición y pulsando el botón de “Crear implementación”.
Después, se introduce el nombre de la implementación, que será “ZADDRESS_CHECK” y se pulsa continuar.
En la siguiente pantalla, se introduce un texto breve para la implementación. También, hay que generar los filtros con los cuales se va a ejecutar la Badi.
Una de las grandes ventajas que presentan las Badis, es la posibilidad de tener diferentes implementaciones de la misma Badi en base a los valores de los filtros.
Un ejemplo sería la implementación de una Badi que tiene relación con un proceso contable particular de una empresa multinacional, el cual es diferente según el país de donde se encuentre. Se podría realizar una implementación diferente para cada país creando un filtro por código de país en la Badi y asignar el desarrollo de cada implementación a un programador diferente o al equipo de programación de cada país. En caso que dos países realicen el proceso contable de igual forma, se podrá asignar la misma implementación a diferentes valores de los filtros.
Se añade una nueva entrada en la sección “Valores de filtro”.
Generando una nueva entrada para el código de país AR. Es decir, la Badi a implementar solo se ejecutará si el país es AR. Habrá que guardar los cambios.
La tabla de valores de filtro está habilitada debido a que en la implementación de la Badi está marcada la opción “Dependiente filtro”.
Ahora, se introduce el código en el método “IS_ACTIVE_FOR_COUNTRY”. Para ello, hay que acceder a la pestaña “Interface” y pulsar dos vece en el método.
Para modificar la implementación de una Badi activa, primero hay que desactivarla.
Dentro del método, se introduce el código ABAP. Para generar el mensaje en pantalla, se utiliza la función “POPUP_TO_INFORM”.
Por último, se guarda y se activa la implementación Badi.
Para probar cómo funciona la implementación, se accede a la transacción FI02, se introduce el país del banco “AR”, la clave del banco “014” y se pulsa enter.
En la siguiente pantalla, se selecciona el botón “Dirección o Address”.
Después, en el campo “País” hay que elegir “AR” y pulsar aceptar.
Por último, se verá el mensaje en pantalla.
3.6.7. - Método para encontrar una Badi
Para encontrar los lugares donde existe una Badi, se puede usar el siguiente método, poner un breakpoint de sesión dentro del método “GET_INSTANCE” de la clase “CL_EXITHANDLER”. Para acceder a una clase, se utilizará el “Class builder”, que es la transacción SE24.
Luego, se ejecuta la transacción o programa que se quiere verificar y el programa se detendrá en el breakpoint. En la variable “EXIT_NAME” se mostrarán los nombres de las Badis que implementa el programa.
Este método puede bastante pesado, ya que detiene muchas veces la ejecución, pero asegura que si una Badi existe, se detendrá en ese punto. Lo que se está realizando es poner un breakpoint en el momento en que SAP verifica si una definición de Badi tiene alguna implementación activa, por lo tanto, aunque no exista ninguna implementación activa para esa Badi particular, el método detectará que existe una Badi en ese punto.
3.6.8. - Diferencias entre las Badis y los customer exits
1. Pueden existir varias implementaciones activas en el mismo sistema de una Badi, pero solo una de un customer exit.
2. Mientras que los customer exits utilizan módulos de funciones, las Badis utilizan métodos de objetos que se lanzan en determinados momentos del proceso.
3. Las Badis poseen una arquitectura multicapa (SAP, partners, soluciones de clientes, localizaciones, soluciones específicas para industrias, etc), mientras que los customer exits son doble capa (SAP y soluciones de cliente).