BADI's - Business Add In's

Las BADI's (Business ADd Ins) son un nuevo tipo de extensión al sistema SAP basado en ABAP Objetcs. El objetivo de los mismos es cumplir con los requerimientos del cliente permitiendo agregar nuevas funcionalidades dentro del código estándar de SAP.

De la misma manera que con los User Exit's, las BADI's tienen dos vistas: la de definición y la de implementación. Mediante la transacción SE18 accedemos a la Definición de las BADI's. Allí se puede ver las características de la misma: parámetros de entrada, salida, tipo de BADI, etc. En la Implementación de la BADI, a la que se accede mediante la transacción SE19, se pueden ver todas las implementaciones que existan de una BADI determinada.

La definición de las BADI's viene definida en el sistema estándar (muy pocas veces es necesario crear una nueva definición para una BADI). En la definición se indica si la BADI es de implementación simple (se puede utilizar sólo una vez, como los User Exits) o múltiple (pueden existir varias implementaciones activas de la misma BADI en el mismo sistema). Además, se pueden definir filtros para la ejecución de la misma permitiendo de esta forma tener diferentes procesos para, por ejemplo, países diferentes. Esto le permite a SAP poder utilizar las BADI's para realizar localizaciones del sistema; por eso es que el sistema estándar ya incluye varias implementaciones de BADI's.

Mediante las implementaciones de BADI's también se pueden hacer aplicaciones para negocios específicos (papeleras, petroleras, químicas, etc). Esto hace que las BADI's sean muy útiles. Esto es así porque a diferencia de los User Exits las BADI's poseen una arquitectura Multicapa (SAP, partners, soluciones de clientes, localizaciones, soluciones específicas para industrias, etc); los User Exits son doble capa únicamente (SAP y soluciones de cliente).

Método para encontrar BADI's

Para encontrar los lugares en donde existe una BADI, se puede usar el siguiente método:

Poner un BREAK-POINT de sesión dentro del método GET_INSTANCE de la clase CL_EXIT_HANDLER (transacción SE24). Luego se ejecuta la transacción o programa que queremos verificar y el programa se detenga en el BREAK-POINT, en la variable exit_name se muestran los nombres de las BADI's que implementa el programa. Este método puede resultar engorroso porque se detiene muchas veces la ejecución, pero nos aseguramos que si una BADI existe se detendrá en ese punto. Lo que estamos haciendo es poner un BREAK-POINT 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.
Si este método no les es práctico utilizando este código se pueden crear un programa que buscar todo tipo de extensiones.

En este link pueden descargar un PDF de cómo implementar una BADI (en inglés - Sitio Externo).