Las BADI’s (Bussiness Ad-ins) son unas herramienta de programación abap orientada a objetos que se utilizan en sap para implementar validaciones y ampliaciones en el código standard de sap en versiones a partir de la 4.6c
La transacción SE18 se accede a la vits a de definición de las BADI
La transacción SE19 implementa la BADI
Las Badi's ajustan los requerimientos específicos de un cliente a las transacciones estándar de sap.
El código generado por SAP en sus transacciones estándar (para realizar un pedido,…) no se puede modificar (salvo para implementar un parche de SAP ), ya que se perdería el soporte que este ofrece a su producto. Pero pongamos que cuando termino de hacer un pedido de comprar por ME21N necesito guardar ciertos datos de este pedido en una tabla ZPEDIDOS que yo he creado. Pues para esto están las ampliaciones (BADI’s, user exits, field exits) que al fin y al cabo no son más que fragmentos de código que me permite SAP meter dentro de su código estándar para realizar ciertas operaciones a medida, en este caso meter la información que necesito en una tabla cuando se crea el pedido en concreto.
Básicamente cumplen la misma función que las USER EXITS y las FIELD EXITS amen de algunas diferencias que vamos a exponer.
No las confundamos con las BAPI’s que de una forma llana y sencilla podríamos decir que son simplemente funciones abap que pueden consultarse desde la transacción BAPI y llamadas desde otros sistemas y que realizan funciones concretar con los parámetros que se les pasa como crear pedidos, modificarlos, crear documentos de material, ….
Diferencia entre BADI y las USER EXITS
BADI se puede utilizar todas las veces que quieras, donde las users exits solo se pueden usar una sola vez. Ejemplo: Si asignas una user-exit a un proyecto usando la transacción CMOD, entonces no puedes volver a asignarlo a otro proyecto. Es decir varios programadores pueden implementar la misma BADI independientemente.
Las BADI’s son mucho más moldeables a las necesidades del programador en cuento a que podemos definir los puntos de salida, junto con la lógica de programación que necesitemos. Es decir posee todas las propiedades de una programación orientada a objetos.
Como encontrar la BADI que necesitamos
Existen varios métodos para encontrar la BADI que necesitamos pero nosotros vamos a explicar un método basado en la transacción ST05 (Performance Analysis).
Esta técnica de análisis se basa en el echo de que todas las BADIS’s están registradas en tablas de SAP. Por lo que en cada llamada a una Badi el sistema pasa por estas tablas. Las tablas de las BADIS son las siguientes SXS_INTER, SXC_EXIT, SXC_CLASS y SXC_ATTR. A estas tablas Sap siempre accede mediante las vistas V_EXT_IMP y V_EXT_ACT. Por lo que estas vistas (T: SE11) serán la base de nuestro análisis.