QUE SON LAS BADIS
Es un tipo de extensión al sistema SAP, que se basa en objetos Abap para la implementación de validaciones y ampliaciones al código estándar de SAP, sin tener que modificar el código estándar.
Las badis únicamente se implementan en el código estándar de SAP no en el código Z.
TIPOS DE BADIS
BADIS CLASICAS
Son las primeras que existieron
BADIS NUEVAS
Se les conoce también como puntos de ampliación (ENHANCEMENT SPOT)
VISTAS DE UNA BADI
Tienen dos vistas:
- Vista de definición (viene definida en el sistema estándar y pocas veces se necesita crear una nueva)
- Vista de implementación
DEFINICION DE UNA BADI
Mediante la transacción SE18 se accede a la vista de definición
La configuración correspondiente a los puntos de ampliación se puede ver en la pestaña Definiciones elem.punto ampl., donde podemos ver las configuraciones generales de la Badi.
En la pestaña Enhancem.Implementations podemos ver si la Badi se encuentra implementada.
En la pestaña de la definición de los puntos de ampliación, dándole doble clic en la Interface podemos ver cuál es la asociada a la Badi y cuantos métodos están asociados a la definición de la Badi.
Si se hace doble clic en un método de la interface se pueden ver los parámetros I/O.
IMPLEMENTACION DE UNA BADI
A través de la transacción SE19 se accede a la implementación de las Badis
Si se hace doble clic en algún método se puede ver la lógica asociada, esto nos servirá para elegir si se usa dicha lógica estándar o se crea una nueva.
Una ventaja de las Badis es que permite tener diferentes implementaciones de la misma Badi en base a los valores que se den a los filtros. La tabla de valores de filtro está habilitada debido a que en la implementación de la Badi esta tildada la opción dependiente filtro.
Para introducir nuevo código en los métodos vamos a la pestaña Interface y se le da doble clic en el método. Para modificar una implementación de una Badi activa primero se debe desactivar.
METODO PARA ENCONTRAR UNA BADI
Para encontrar los lugares en donde existe una Badi se puede utilizar hacer lo siguiente:
- Colocar un Breakpoint en el método GET_INSTANCE de la clase CL_EXITHANDLER
- Luego se ejecuta la transacción o programa que se quiere modificar
- En la variable EXIT_NAME se mostraran los nombres de las Badis que se implementa en el programa
DIFERENCIAS ENTRE BADIS Y CUSTOMER EXITS
- Pueden existir varias implementaciones activas en el mismo sistema de una Badi, pero solo una de un Customer exit
- Los Customer exit utilizan módulos de funciones, mientras que las Badis utilizan métodos de objetos que se disparan en determinados momentos de los procesos
- Las Badis poseen una arquitectura Multicapa (SAP, partners, soluciones de clientes, localizaciones, soluciones especificas, etc) y los Customer Exit son doble capa (SAP y soluciones de cliente)