Las BAdIs (Business Add-Ins) son una 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.

A la pregunta “¿Qué son las BAdIs de SAP?“, diríamos que son la manera que da SAP de acomodar los requerimientos específicos de un cliente a sus transacciones estándar, que de no ser por las ampliaciones (las BAdIs son las más actuales, pero previamente se utilizaron las user exits y los field exits), habría que modificar el propio código de SAP. Esto último no es conveniente en prácticamente ningún caso, porque se pierde el soporte que SAP ofrece a sus productos.

Imaginemos, por ejemplo, que cada vez que damos de alta a un empleado por la transacción PA40 necesitamos guardar algunos de los datos del mismo en una tabla transparente ZEMPLE que hemos creado nosotros. Para casos como éste existen las ampliaciones, que, al fin y al cabo, no son más que fragmentos de código que SAP nos deja introducir dentro de su código estándar para realizar ciertas operaciones a medida; en este caso, introducir la información que se necesita en una tabla cuando se da de alta al empleado.

BAdIs y USER EXIT

Como hemos dicho previamente, las BAdIs no son la única forma de ampliación que tenemos en SAP, pero sí la más recomendable utilizar por varios motivos:

  • Las BAdIs son las nuevas ampliaciones de SAP, las que recomienda utilizar, y al estar basadas en la programación orientada a objetos dan más opciones que las user exits (o Customer Exits).
  • Las BAdIs se pueden implementar tantas veces como se quieran, mientras que las user exit son únicas, así, diferentes programadores pueden trabajar en diferentes proyectos e implementar la misma BAdI de una forma independiente.
  • Las BAdIs están basadas en una infraestructura multinivel (SAP, versión de país, socio, cliente, …) mientras que en las user exit solo tiene dos niveles (SAP, cliente). Gracias a esto podemos crear BAdIs a cualquier nivel de esa infraestructura.

Buscar la BAdI adecuada

Una de los mayores problemas al trabajar con Business Add-Ins, es saber cuál tenemos que utilizar en cada caso, y para ello proponemos a continuación dos técnicas distintas.

TRANSACCIÓN ST05 – Performance Analysis

Una de las más comunes es utilizar la transacción ST05 que nos permite crear trazas en tramos de ejecución. Utilizando esta transacción, y teniendo en cuenta que SAP siempre utiliza las vistas V_EXT_IMP y V_EXT_ACT cuando accede a las BAdIs, podremos saber cuáles se llaman en nuestro proceso. Los pasos a seguir son los siguientes:

  1. Accedemos a la transacción ST05
  2. Nos aseguramos de que la opción “Table Buffer Trace” (“Buffer Trace” dependiendo de la versión de Netweaver) está marcada y Activamos la traza
  3. Ejecutamos el proceso que queremos adaptar
  4. Desactivamos la traza y mostramos los resultados
  5. Filtramos los resultados para mostrar únicamente los relacionados con las vistas V_EXT_IMP y V_EXT_ACT

*Es importante que no ejecutemos ninguna otra transacción mientras la traza esté activa si queremos que los resultados sean más fáciles de analizar.

Si uno de los resultados empieza por “IF_EX_”, el nombre de la BAdI será lo que esté a continuación, ya que esta primera parte común hace referencia a la Interface.

Una vez hecho esto, tendremos un listado de BAdIs que pueden servirnos, aunque tendremos que analizarlas una a una para encontrar la adecuada. Para analizarlas, accederemos a la transacción SE18 – Definición de BAdIs que explicaremos a continuación.

Transacción SE18 – Definición de BAdIs

Otra opción es hacer uso de la ayuda de búsqueda de la propia transacción SE18. Para ello, basta con acceder a la transacción, abrir el matchcode y seleccionar la opción “Aplicaciones SAP” que nos mostrará un árbol donde podremos buscar la BAdI navegando por los componentes del sistema.

BAdI, transacción SE18, matchcode

Implementar una BAdI

El proceso de implementación de una BAdI tiene dos pasos. El primero es mirar la definición de la misma, para saber los métodos de los que disponemos y qué parámetros tiene cada uno de ellos.

Este paso lo haremos en la transacción SE18, donde, introduciendo el nombre de la BAdI, tendremos acceso a toda su información. Lo que nos interesa es la última pestaña, y más concretamente, la parte de “Interface”. Aquí veremos los métodos y podremos navegar por los diferentes objetos dentro del generador de clases (SE24).

Cuando ya tenemos clara la BAdI que queremos implementar, accedemos a la transacción SE19 para el siguiente paso: la implementación.

BAdI-Builder, transacción SE19

Como se puede ver en la imagen, tenemos dos partes bien diferenciadas. La parte de abajo será la primera que utilicemos, puesto que lo primero es crear la ampliación. Indicando la BAdI que queremos implementar se nos pedirán los nombres de la implementación y la clase a crear. Normalmente se suele añadir un prefijo (que empiece por Z) al nombre original, para que sea fácil relacionar la implementación con la propia definición.

Cuando todo se haya creado, ya podremos programar cada uno de los métodos que necesitamos para nuestro desarrollo. A partir de ahora, cada vez que queramos modificar la implementación, podremos volver a la pantalla inicial de la transacción SE19 y utilizar el bloque superior.

Para finalizar, es muy importante acordarse de activar la implementación para que se ejecute. No solo activar el objeto en SAP, como con todos los que creamos, sino marcar el check de “Implementación está activa” en la SE19 para que la tenga en cuenta en tiempo de ejecución.

Ahora que ya sabes qué son las BAdIs de SAP y cómo implementarlas, sólo tienes que aplicarlas en tus procesos.