BADIs Manual Business Add-Ins
BADIs Manual Business Add-Ins
BADIs Manual Business Add-Ins
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
Es decir sirven para acomodar los requerimientos específicos de un cliente a las transacciones
estándar de sap. Para los que acaban de adentrase en sap vamos a explicar esto un poco más
el resto se puede saltar el siguiente párrafo.
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, ….
• 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.
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.
EJEMPLO:
Supongamos que quiero saber que BADIS son llamadas en la transacción “Maintain Business
Partners” código BT
PASOS:
1.- Primero chequeamos que ningún otro usuario (T:SM04) o jobs en fondo (T: SM50) están
usando el mismo usuario que tú.
2.- Nos vamos a la transacción ST05 (Performance Analysis) y marcamos el flag "Buffer trace",
después pulsamos el botón “Activate Trace “, para activar el Trace.
3.- Inmediatamente después ya que el sistema está ya “Grabando” nos vamos a la transacción
BT que queremos analizar y pulsamos el boton "Organization" completando los campos con los
siguientes datos de prueba:
4.- Volvemos a la ventana donde teníamos abierta la ST05 y pulsamos el botón "Deactivate
Trace" para finalizar el trace y pulsamos sobre el botón "Display Trace", entonces el popup "Set
Restrictions for Displaying Trace" aparecerá.
5.- Ahora vamos a filtrar el Trace con los objetos: V_EXT_IMP y V_EXT_ACT. Que son
nuestras vistas.
Pulsamos el botón "Copy (F8)" , Fill Operations: OPEN y pulsamos el botón "Enter"
ANALISIS DE LOS RESULTADOS
Todas las “interface class names” de las vista V_EXT_IMP comienzan con IF_EX_. Este es el
prefijo estándar de Sap para las “ BAdI class interfaces “. El nombre de la BAdI está después de
este IF_EX_.
Es decir el nombre de la BADi para IF_EX_ADDR_LANGU_TO_VERS es
ADDR_LANGU_TO_VERS.
Aconsejamos durante la realización del Trace no ejecutar ninguna otra transacción o comando
que no sean los propios de análisis si queremos obtener unos resultados lo más limpios
posibles. Bien pues ya podéis realizar una función que propiamente es de analista .
No obstante podemos ver una lista de las BADI’s disponibles haciendo lo siguiente:
- Vamos a la Transacción SE18
- Pulsamos F4 para desplegar el matchcode
- Hacemos click en el icono “Sistema de información”
- Aumentamos el campo “Cant. Máxima aciertos” a 999999
Hacemos click en OK.
Las transacciones con las que vamos a trabajar con las BADI’s son las:
Por lo tanto:
Si no no funcionara.
Aumento de programas estándar de
manera rápida y fácil
Negocios a través de Add-Ins (Badis):
Una guía para los desarrolladores de SAP y Consultores
Por Rehan Zaidi, Siemens Pakistán
Nota del editor: Algunos de los aspectos más atractivos de SAP ® son su modularidad y
"configure-capacidad". SAP de la empresa solución permite una gran flexibilidad en la
aplicación, así como un montón de adaptación a las necesidades específicas de la empresa. Uno
de los últimos de la SAP ofertas en las herramientas y técnicas de escenario es el concepto de
Business Add-Ins, o Badis. ABAP "hombre de la hora" Rehan Zaidi utiliza este Libro Blanco para
explicar exactamente en qué negocio Add-Ins son, y cómo se les llama en los programas de
ABAP.
Introducción
Una de las principales fuerzas de SAP es la capacidad de adaptar su módulo estándar de los
programas de acuerdo a los requisitos específicos del cliente. Una de las últimas técnicas de
personalización disponibles es el uso de Business Add-Ins. Esta técnica utiliza la tecnología más
reciente y conceptos, y ha sido utilizada por SAP en la mayoría de sus módulos. Por otra parte,
debido a las numerosas ventajas que proporciona, el aprendizaje de los fundamentos de esta
técnica es esencial para los desarrolladores de SAP y los consultores.
El objetivo de este documento es proporcionar una descripción de las medidas necesarias en la
adaptación de los programas que utilizan BADI. Estas son algunas de las preguntas que este
documento se ocupará de:
• ¿Cuáles son Business Add-Ins (BADIS) y cómo se llama en los programas de ABAP?
• ¿Cuáles son algunos de los beneficios que proporcionan a los consultores y los usuarios?
• ¿Qué pasos son necesarios para mejorar el estándar de los programas que emplean esta
funcionalidad?
Empezaré con una visión de conjunto de Badis (Business Add-Ins) y su relación con el orientado
a objetos conceptos. Voy a discutir en detalle los pasos necesarios en la aplicación de un típico
negocio Add-In. Por último, voy a utilizar un ejemplo extraído de un fácil para todos compañía
escenario para ilustrar mis puntos de vista. Voy a incluir consejos aprendidos de mi experiencia
personal y la observación.
Este documento está destinado principalmente para desarrolladores de SAP, pero también
puede ser de interés para los usuarios de SAP. Voy a asumir que el lector está familiarizado con
conceptos básicos de ABAP y que tiene ciertos conocimientos de programación orientada a
objetos dentro de un entorno SAP. Para obtener más información, consulte la documentación
de SAP http://help.sap.com/. Aunque las capturas de pantalla han sido tomadas de la versión
4.6, los consejos mencionados son pertinentes para su posterior así como las emisiones.
Transacción SE18
Usted puede utilizar la transacción SE18 para mostrar una lista de las Badis, así como para ver
los atributos y la estructura de una BADI. Con el fin de buscar una BADI en su área funcional,
llame a la transacción SE18. La pantalla principal para la transacción SE18 aparece como se
muestra en la Figura 1.
Figura 1:
Navegar a través de este árbol con el fin de encontrar la zona (y, por tanto, la BADI), en la que
usted está interesado.
Usted también puede crear nuevas (o la pantalla actual) BADI definiciones a través de esta
transacción. Con el fin de mostrar los atributos y la estructura de un SAP-siempre BADI,
introduzca el nombre BADI en el campo correspondiente en la pantalla principal de la
transacción SE18, y haga clic en Mostrar. La pantalla aparece, como se muestra en la Figura 2.
Atributos de la ficha muestra los datos generales y el tipo de BADI en cuestión. Los datos
generales muestran los Negocios Add-In de clase, mientras que el Tipo especifica si el Add-In
es de uso múltiple y / o dependientes de filtros.
Es una buena idea para que usted se familiarice con la estructura de los programas BADI. Los
programas (ya sea estándar o personalizado construido) que incorporan la funcionalidad BADI
incluir algo común un bloque de código. Un ejemplo se muestra en Figure.5
La instancia de la clase BADI puede entonces ser usado para llamar al método aplicado BADI.
Por último, la BADI método se llama. Este método contiene la lógica mejora pertinentes para el
cliente o el país en cuestión (vamos a discutir esto en detalle en la próxima sección).
Hay unos pocos pasos necesarios para poner en práctica una BADI.
Esto muestra el nombre de la clase que se generarán como resultado de la aplicación. Usted
puede cambiar la clase si lo desea. La interfaz también contiene el nombre de la BADI método.
El valor del filtro (s) campo (en este caso) está disponible para la entrada, como se muestra en
la Figura 9.
Este es el área donde usted puede escribir el código que le gustaría que se ejecutará cuando la
BADI método se llama (véase Figura 10).
Este código incorpora la mejora lógica y es ejecutado por el programa de aplicación a la BADI
método de llamada.
La mayoría de las sentencias ABAP son aplicables en este caso. Sin embargo, desde la BADI
tecnología se basa en ABAP Objects, En ABAP algunas desarrollos no están permitidas.
La mejora se puede lograr escribiendo código que asigna valores adecuados a la evolución de
los parámetros y la exportación del método.
Como ya se ha mencionado, el primer paso es crear la aplicación. Una aplicación con el nombre
ZACHA fue creado, como se muestra en la Figura 11.
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.
EJEMPLO:
Supongamos que quiero saber que BADIS son llamadas en la transacción “Maintain Business
Partners” código BT
PASOS:
1.- Primero chequeamos que ningún otro usuario (T:SM04) o jobs en fondo (T: SM50) están
usando el mismo usuario que tú.
2.- Nos vamos a la transacción ST05 (Performance Analysis) y marcamos el flag "Buffer trace",
después pulsamos el botón “Activate Trace “, para activar el Trace.
3.- Inmediatamente después ya que el sistema está ya “Grabando” nos vamos a la transacción
BT que queremos analizar y pulsamos el boton "Organization" completando los campos con los
siguientes datos de prueba:
4.- Volvemos a la ventana donde teníamos abierta la ST05 y pulsamos el botón "Deactivate
Trace" para finalizar el trace y pulsamos sobre el botón "Display Trace", entonces el popup "Set
Restrictions for Displaying Trace" aparecerá.
5.- Ahora vamos a filtrar el Trace con los objetos: V_EXT_IMP y V_EXT_ACT. Que son
nuestras vistas.
Pulsamos el botón "Copy (F8)" , Fill Operations: OPEN y pulsamos el botón "Enter"
Todas las “interface class names” de las vista V_EXT_IMP comienzan con IF_EX_. Este es el
prefijo estándar de Sap para las “ BAdI class interfaces “. El nombre de la BAdI está después de
este IF_EX_.
Es decir el nombre de la BADi para IF_EX_ADDR_LANGU_TO_VERS es
ADDR_LANGU_TO_VERS.
No obstante podemos ver una lista de las BADI’s disponibles haciendo lo siguiente:
- Vamos a la Transacción SE18
- Pulsamos F4 para desplegar el matchcode
- Hacemos click en el icono “Sistema de información”
- Aumentamos el campo “Cant. Máxima aciertos” a 999999
Hacemos click en OK.
Las transacciones con las que vamos a trabajar con las BADI’s son las:
Por lo tanto:
Para hallar detalles de cada método hacer doble click sobre cada uno, por
ejemplo
Doble click sobre GET_DATA
Click en parametros
Aparece como parámetro RE_DATA de tipo MEPOHEADER
Si se hace click sobre MEPOHEADER se vera que es una estructura de datos de
cabecera.
Si no no funcionara.
Bueno, espero que todo esto os sea de ayuda, ya que son varios los miembros de esta
comunidad los que han realizado varias preguntas al respecto.
Otro modo de encontrar las badis que se ejecutan en un proceso / transaccion, es el siguiente:
Ahora ejecutamos el proceso/transaccion, del cual deseamos averiguar las BADIS que se
instancian, y al haber colocado el BREAK en el metodo anterior, cada vez se intente instanciar
la BADI pasara por dicho punto y el nombre de la BADI la tendremos en el parametro
"exit_name" (que cambia este metodo).
Saludos.
Para localizar una BADI:
3.- En la transaccion SE19 marcamos el radiobutton badi clasico del bloque Crear
Implementacion, introducimos el valor del campo EXITNAME y le damos al boton Implement.
(crear implementacion)
4.- Tenemos que asignar un nombre Z a la implementacion de la clase, despues colocamos una
descripcion y en la pestaña de interface nos vendran todos los metodos que tenemos
disponibles, donde haciendo doble click podamos introducir el codigo deseado
ENHANCEMENTS
Las user-exits y badis se estan sustituyendo por enhancements que son fragmentos de codigo
estandar en los que podemos introducir nuestro codigo
1.- Nos posicionaremos en el include donde este el codigo que deseamos ampliar y pulsaremos
el boton de activar ampliaciones (es un botoncito que aparece como una especie de espiral o
bien pulsar SHIFT + F4)
2.- Una vez pulsado el boton de ampliar veremos que la pantalla de codigo se pone blanca y
con las letras en gris (como cuando aplicamos una nota manualmente), nos iremosa donde este
nuestro punto de ampliacion y si por ejemplo pone ENHANCEMENT-POINT SAPLMIGO_01
SPOTS ES_SAPLMIGO STATIC. pincharemos con el boton derecho en donde pone
ES_SAPLMIGO y seleccionaremos Ampliaciones->Crear
3.- Asignaremos un nombre a la clase que implementamos y luego nos aparecera un fragmento
de codigo donde podremos introducir lo que deseemos
BADIS
Para ver una lista completa de los BADIs disponibles se deben seguir los
sigientes pasos:
Transaccion SE18
F4
Click en icono “Sistema de informacion”
Aumentar el campo “Cant. Maxima aciertos” a 999999
Click en OK.
Por lo tanto:
------------
SE18
ME_PROCESS_PO_CUST estamos trabajando en este grupo de badi (ME21N)
Click en visualizar
Click en la solapa Interfase
Doble click en CLOSE
Click en la solapa Parameters, en este caso vemos a IM_HEADER.
En tipo de referencia vemos que su tipo es IF_PURCHASE_ORDER_MM
Para hallar detalles de cada metodo hacer doble click sobre cada uno, por
ejemplo
Doble click sobre GET_DATA
Click en parametros
Aparece como parametro RE_DATA de tipo MEPOHEADER
Si se hace click sobre MEPOHEADER se vera que es una estructura de datos de
cabecera.
SE19
Click en Crear
Darle el nombre Implementacion, por ejemplo ME_PROCESS_PO_CUST
Luego pide nombre Definicion, es la misma ME_PROCESS_PO_CUST
Paquete es AM2P
Pide la orden de transporte
Click en salvar
Pide una clave SAP de modificacion de objeto estandar.
Pide un comentario, habitualmente igual al de la orden de transporte.
Click en Salvar
Click en Activar y marcar todo para que se recompile completamente
SE19
ME_PROCESS_PO_CUST
Click en Modificar
Click en solapa interfase
Doble click sobre CLOSE
Introducir la clave
Editar el texto del codigo fuente.
SE19
Click en el menu superior Implementacion
Click en activar.
Si no no funcionara !!!