✒️ABAP Las Badis
ABAP Las Badis
Unidad 3: Ampliaciones y Notas en SAP.
Lección 6: Badis.
1.- Que son las BADIS?
Es un tipo de extensión del sistema SAP, basado en el uso de objetos ABAP para implementar validaciones y ampliaciones al código estándar de SAP sin tener que tocar el código estándar.
Las BADIS permiten definir filtros de manera que se ejecuten distintos procesos en función del valor del mismo. Esto por ejemplo permite la localización del sistema por lo cual el estándar ya cuenta con varias implimentaciones de una misma BADI. Así mismo mediante distintas implementaciones de una misma BADI puden hacerse aplicaciones específicas para diferentes sectores.
Las BADIS como cualquier otra técnica de ampliación afecta solo al estándar SAP. Los objetos de usuario, objetos Z son modificables en cualquier momento con solo disponer de la correspondiente clave de desarrollador.
2.- Tipos de BADIS.
Existen dos tipos de BADIS:
- BADIS Clásicas. Son las más antiguas.
- BADIS Nuevas. Conocidas como Puntos de ampliación o Enhancement Spot. Estas incorporan las últimas tecnologías ofrecidas por SAP.
3.- Vistas de una BADI.
Las BADIS tienen dos vistas:
- Vista de definición
- Vista de implementación.
La vista de definición ya esta por defecto en el estándar. Muy pocas veces se requerirá dar una nueva definición a una BADI.
4.- Definición de una BADI.
Para acceder a la definición de BADIS iremos a la transacción SE18. Con el nombre de la BADI podremos visualizar su definición.
La configuración de una BADI nueva o Punto de ampliación tiene varias pestañas:
- Definiciones elem. punto ampl. Veremos las configuraciones generales de la BADI.
- Enhancement Implementation Veremos si la BADI tiene alguna implementación.
- Con doble clic sobre Interface veremos la interfaz asociada a la BADI y los métodos asociados a su definición.
Haciendo clic sobre un método podremos ver los parámetros de entrada y salida del mismo.
5.- Implementación de una BADI.
La implementación de una BADI se realiza mediante la transacción SE19. Mediante esta transacción accederemos a las implementaciones existentes de una BADI.
Podemos ver los métodos implementados y haciendo doble click sobre ellos la lógica asociada a los mismos. Podremos por tanto utilizarla o crear una lógica nueva.
6.- Creación paso a paso de una implementación.
En este caso implementaremos un BADI clasico:
- Accedemos a la transacción SE19. Marcamos Badi clásico en informamos el nombre de la definición de la Badi. Pulsamos el botón Crear implementación.
- En la siguiente pantalla informamos el nombre de la implementación y confirmamos.
- Aparece una nueva pantalla en la que informaremos un texto breve. Si procede también generaremos los filtros con los que se ejecutará la Badi. Para ello se agregará una nueva entrada, en la sección valores de filtro.
Informaremos un valor al filtro de manera que la badi a implementar, solo se ejecutará si se cumple la condición del filtro. La tabla de valores de filtro está habilitada porque en la implementación está marcado el flag dependiente de filtro e informado el tipo del mismo.
- Ahora introduciremos el código en el método que corresponda. Para ello iremos a la pestaña interfaz y haremos doble clic sobre el nombre del método. Introducimos el código ABAP que se requiera.
- Como último paso guardamos y activamos la implementación.
Importante: Para poder modificar la implementación de una Badi activa primero debemos desactivarla.
Para poder probar la implementación accedemos a la transacción sobre la que actúa la BADI y en allí donde corresponda informamos el valor que cumple la condición del filtro y validamos que lo implementado funciona correctamente.
7.- Método para encontrar una BADI.
Vamos paso a paso:
- Vamos a la transacción SE24. Fijamos un breakpoint de sesión dentro del método GET_INSTANCE de la clase CL_EXITHANDLER. El breakpoint se fjara en la llamada al metodo GET_CLASS_NAME_BY_INTERFACE de la clase.
- Ejecutamos la transacción o programa que queremos verificar que se detendrá en el breakpoint. La variable Exit_Name mostrará los nombre de las Badis implementadas por el programa.
El problema de este método es que es engorroso en tanto en cuanto la ejecución puede detenerse muchas veces. Ahora bien asegura que si una badi existe se detendrá en ese punto. El programa se detendrá en ese punto aunque no existe ninguna implementación activa de la misma.
8.- Diferencias entre BADIS y Customer Exits.
- Pueden existir varias implimentaciones activas en el mismo sistema de una Badi pero solo una Customer Exit.
- Los Customer Exits utilizan módulos de funciones, 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 específicas para industrias, etc) mientras que los Customer Exits son de doble capa (SAP, soluciones de cliente)
Hay mas métodos para encontrar BADIS que se describen en un documento adjunto.
 
 
 
Sobre el autor
Publicación académica de Francisco Compte Sanchez, en su ámbito de estudios para la Carrera Consultor ABAP.
Francisco Compte Sanchez
Profesión: Sap Business&integration Architect - España - Legajo: QQ38S
✒️Autor de: 105 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Consultor sap mm y sd con algún conocimiento abap a nivel de debug. quiero consolidar conocimientos técnicos para reforzar mi perfil profesional.
Certificación Académica de Francisco Compte