✒️ABAP Las Badis
ABAP Las Badis
- BADIS
Nuevo tipo de extensión al sistema SAP, se basa en el uso de objectos ABAP para la implementación de validaciones y amplicaciones al código estándar de SAP, sin tener que modificar el código estándar.
Podremos definir filtros para la ejecucion de forma tal de poder tener diferentes procesos para, por ejemplo, diferentes paises. Esto permite usar Badis para realizar localizaciones del sistema.
Mediante Badis se pueden hacer aplicaciones para negocios específicos como petroleras, químicas, etc.
- TIPOS DE BADIS
- Badis clásicas
- Badis nuevas, conocidas como puntos de amplicación o Enhancement Spot
- VISTAS DE UNA BADI
Dos vistas: la vista de definición y la vista de implementación.
- DEFINICIÓN DE UNA BADI
Mediante la SE18 accedemos a la vista de definición de las Badis.
Configuración correspondiente a "Punto de ampliación" o "Enhancement Spot". Solapas:
- "Definiciones elem.punto ampl" donde veremos las configuraciones generales de la Badi.
- "Enhancem. Implementations" donde veremos si la Badi está implementada. Con doble click en "Interface" veremos cual es la interface asociada a la Badi y que métodos están asociados a la definición de la Badi. Con doble click sobre alguno de los métodos vemos sus parámetros de entrada y salida.
- IMPLEMENTACIÓN DE UNA BADI
Con la SE19 se accede a la implentación de las Badis.
Podemos ver los métodos disponibles en la implementación, ver su lógica y elegir utilizar dicha lógica estándar o crear una nueva.
- PASO A PASO EN LA CREACIÓN DE UNA IMPLEMENTACIÓN
Lo vamos a ver con un ejemplo. Implementamos una Badi que permita mostrar un mensaje cuando se están modificando los datos de dirección de un banco determinado mediante al transacción FI02.
Para ello, implementamos la Badi ADDRES_CHECK en el método IS_ACTIVE_FOR_COUNTRY, que permite ampliar la verificación del país.
Al acceder a la SE19, con la opción "Badi clásico", ponemos el nombre de la definición y botón "Crear Implementación". Luego introducimos el nombre que le damos a la implementación, por ej. ZADDRESS_CHECK.
En la siguiente pantalla ponemos el texto breve y generamos los filtros (botón con la cruz verde) con los que se va a ejecutar la Badi. Para ello, agregamos una nueva entrada en la sección "Valores de filtro", generando una nueva entrada para el código de país ES (es decir, la Badi a implementar sólo se ejecutará para el país ES).
Ahora introducimos el código en el método IS_ACTIVE_FOR_COUNTRY, para lo que accedemos a la solapa "Inteface" y hacemos doble click en el método.
Ventaja de las Badis: Con una Badi podemos tener diferentes implementaciones dependiendo del valor de los filtros, por ej, implementar una Badi con un proceso contable diferente dependiendo del país donde nos encontremos, para ello creamos un filtro con el país y diferentes implementaciones según el país. Una misma implementación la podemos asignar a varios paises.
Nota: La tabla de valores de filtro estará habilitada si en la implementación de la Badi hemos marcado la opción "Dependiente filtro".
Nota: Para modificar la implementación de una Badi primero hemos de desactivarla.
- MÉTODO PARA ENCONTRAR UNA BADI
Para encontrar los lugares donde existe una Badi podemos poner una BREAKPOINT de sesión dentro del método GET_INSTANCE de la clase CL_EXITHANDLER. Luego se ejecuta la transacción o programa donde queremos encontrar las Badi que tiene, al detenerse en el breakpoint, en la variable EXIT_NAME nos mostrará los nombres de las Badis que implementa al programa independientemente de que tenga o no implementación activa. (Se parará tantas veces como badis tengamos ya que el breakpoint se ha puesto en el momento que SAP verifica una definición de Badi).
Accedemos a una clase mediante la SE24
- OTROS MÉTODOS PARA ENCONTRAR BADIS
- Las Badis se encuentran registradas en las tablas: SXS_INTER, SXC_EXIT, SXC_ATTR, a las que SAP accede mediante las vistas V_EXT_IMP y V_EXT_ACT. El método para encontrar la Badi consiste en, usando la ST05 marcar "Table Buffer Trace" y botón "Activate Trace", ejecutar en otro modo la transacción sobre la que se desea encontrar la Badi. Volviendo a la ST05, pulsar "Deactivate Trace" y luego pulsar "Display Trace" donde se filtrará el trace con las vistas antes mencionadas. Pulsamos "Copy (F8)" Fill Operations: OPEN y "Enter". Como resultado se obtendrá con todas las "interface class names" comenzando por IF_EX + Nombre de la Badi.
- Desde la SE80, fijar breakpoint en el método ACT_IMPS_PER_FLT_VAL de la clase CL_BADI_FLT_DATA_TRANS_AND_BD justo después del select del encabezado con el comentario "read BADI attributes". Luego ejecutar la transacción que desea analizar. Por cada parada del breakpoint examinar los campos EXIT_NAME e INTERNAL.
- Mediante la SE93 obtener paquete o clase de desarrollo de la transacción que desea analizar. En la SE18, en la búsqueda ampliada, buscar filtrando por el paquete anteriormente encontrado y el sistema devolverá todas las Badis relacionadas a ese paquete.
- DIFERENCIAS ENTRE LAS BADIS Y LOS CUSTOMER EXITS
- Pueden existir varias implementaciones activas de una Badi pero sólo una de un Customer Exit.
- Customer Exit usa módulos de funciones y las Badis usan métodos de objetos que se disparan en determinados momentos de los procesos.
- Badis poseen arquitectura multicapa (SAP, partners, soluciones de clientes, localizaciones, etc), mientras que los Customer Exits son doble capa (SAP y soluciones de cliente).
 
 
 
Sobre el autor
Publicación académica de Ignacio Mart?n Bolumar, en su ámbito de estudios para la Carrera Consultor ABAP.
Ignacio Mart?n Bolumar
Profesión: Ingeniero Inform?tico - Espa?a - Legajo: ZL84Z
✒️Autor de: 94 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Ignacio Mart?n