Вы находитесь на странице: 1из 7

Qu es una BADI ?

Las BADIs (Bussiness Ad-ins) son unas herramienta de programacin abap


orientada a objetos que se utilizan en sap para implementar validaciones y
ampliaciones en el cdigo standard de sap en versiones a partir de la 4.6c

Es decir sirven para acomodar los requerimientos especficos de un cliente a las


transacciones estndar de sap. Para los que acaban de adentrase en sap vamos a
explicar esto un poco ms el resto se puede saltar el siguiente prrafo.
El cdigo generado por SAP en sus transacciones estndar (para realizar un pedido,)
no se puede modificar (salvo para implementar un parche de SAP ), ya que se perdera
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 estn las ampliaciones (BADIs, user
exits, field exits) que al fin y al cabo no son ms que fragmentos de cdigo que me
permite SAP meter dentro de su cdigo estndar para realizar ciertas operaciones a
medida, en este caso meter la informacin que necesito en una tabla cuando se crea el
pedido en concreto.
Bsicamente cumplen la misma funcin que las USER EXITS y las FIELD EXITS amen
de algunas diferencias que vamos a exponer.
No las confundamos con las BAPIs que de una forma llana y sencilla podramos decir
que son simplemente funciones abap que pueden consultarse desde la transaccin
BAPI y llamadas desde otros sistemas y que realizan funciones concretar con los
parmetros 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 transaccin CMOD, entonces no puedes volver a asignarlo a otro
proyecto. Es decir varios programadores pueden implementar la misma BADI
independientemente.

Las BADIs son mucho ms moldeables a las necesidades del programador en


cuento a que podemos definir los puntos de salida, junto con la lgica de

programacin que necesitemos. Es decir posee todas las propiedades de una


programacin orientada a objetos.
Como encontrar la BADI que necesitamos
Existen varios mtodos para encontrar la BADI que necesitamos pero nosotros vamos a
explicar un mtodo basado en la transaccin ST05(Performance Analysis).
Esta tcnica de anlisis se basa en el echo de que todas las BADISs estn 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) sern la base de
nuestro anlisis.
EJEMPLO:
Supongamos que quiero saber que BADIS son llamadas en la transaccin Maintain
Business Partners cdigo BT
PASOS:

1.- Primero chequeamos que ningn otro usuario (T:SM04) o jobs en fondo (T: SM50)
estn usando el mismo usuario que t.

2.- Nos vamos a la transaccin ST05 (Performance Analysis) y marcamos el flag


"Buffer trace", despus pulsamos el botn Activate Trace , para activar el Trace.

3.- Inmediatamente despus ya que el sistema est ya Grabando nos vamos a la


transaccin BT que queremos analizar y pulsamos el boton "Organization" completando
los campos con los siguientes datos de prueba:

Al finalizar pulsamos el boton salvar.

4.- Volvemos a la ventana donde tenamos abierta la ST05 y pulsamos el botn

"Deactivate Trace" para finalizar el trace y pulsamos sobre el botn "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 botn "Copy (F8)" , Fill Operations: OPEN y pulsamos el botn "Enter"
ANALISIS DE LOS RESULTADOS
Obtendremos un listado parecido a este que interpretaremos de la siguiente manera:

Todas las interface class names de las vista V_EXT_IMP comienzan con IF_EX_.
Este es el prefijo estndar de Sap para las BAdI class interfaces . El nombre de la
BAdI est despus de este IF_EX_.
Es decir el nombre de la BADi
para IF_EX_ADDR_LANGU_TO_VERS es ADDR_LANGU_TO_VERS.

En la transaccin SE18 puedes ver la definicin de la BADI.

Aconsejamos durante la realizacin del Trace no ejecutar ninguna otra transaccin o


comando que no sean los propios de anlisis si queremos obtener unos resultados lo
ms limpios posibles. Bien pues ya podis realizar una funcin que propiamente es de
analista

No obstante podemos ver una lista de las BADIs disponibles haciendo lo siguiente:
- Vamos a la Transaccin SE18
- Pulsamos F4 para desplegar el matchcode
- Hacemos click en el icono Sistema de informacin
- Aumentamos el campo Cant. Mxima aciertos a 999999
Hacemos click en OK.
Se nos listar de esta forma las BADIS disponibles.

Como Implementar una BADI


Las transacciones con las que vamos a trabajar con las BADIs son las:
SE18 Definicin de BADIS
SE19 Implementacin de BADIS
Supongamos que hemos elegido la BADI ME_PROCESS_PO_CUST y su mtodo
CLOSE que cubren necesidades especificas de la creacin y modificacin de pedidos de
materiales, transacciones ME21N y ME22N.
Por lo tanto:
Obtener la informacin relevante de BADIs realizando los siguientes pasos:
- Vamos a la transaccin SE18 con la BADI 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
Hallar los mtodos disponibles para cada parmetro:

Supongamos que hemos elegido ME_PROCESS_PO_CUST y dentro de el a POST


-

Vamos a la SE18 con la BADI ME_PROCESS_PO_CUST


Click en visualizar
Click en la solapa Interfase
Doble click en POST

Se presentan sus parmetros


Cada uno tiene un tipo de referencia
El primero es un simple tipo de datos EBELN
El segundo IM_HEADER en cambio es tipo IF_PURCHASE_ORDER_MM
Si se hace doble click sobre IM_HEADER aparecen los metodos disponibles.
.
.
.
CREATE_ITEM
GET_DATA
GET_PREVIOUS_DATA
.
.
Etc.
Para hallar detalles de cada mtodo hacer doble click sobre cada uno, por
ejemplo
Doble click sobre GET_DATA
Click en parametros
Aparece como parmetro RE_DATA de tipo MEPOHEADER
Si se hace click sobre MEPOHEADER se vera que es una estructura de datos de
cabecera.
Es importante saber que al principio la implementacin no esta definida, la
primera ves que se entra a SE19 hay que crear la implementacin con el mismo
nombre que ya existe en SE18.
Crear la Implementacin del BADI seleccionado
-

Vas a la Transaccin SE19


Click en Crear
Darle el nombre Implementacin, por ejemplo ME_PROCESS_PO_CUST
Luego pide nombre Definicin, es la misma ME_PROCESS_PO_CUST
Paquete es AM2P

Pide la orden de transporte


Click en salvar
Pide una clave SAP de modificacin de objeto estndar.
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

Modificar el cdigo fuente de la Implementacion

Vas a la Transaccin SE19 con la BADI ME_PROCESS_PO_CUST


Click en Modificar
Click en solapa interfase
Doble click sobre CLOSE
Introducir la clave
Editar el texto del cdigo fuente.

Importante, nunca olvides hacer la activacin formal:


- Vas a la Transaccin SE19 SE19
- Click en el men superior Implementacin
- Click en activar.
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.

Abap badis son un nuevo tipo de extensin al sistema SAP, basado en la


utilizacin de objetos ABAP para la implementacin de validaciones y
ampliaciones al cdigo estndar de SAP, sin tener que modificar el cdigo
estndar.
Mediante las Badis podremos realizar modificaciones al estndar de modo de
poder satisfacer los requerimientos del cliente.
Utilizando Badis podremos definir filtros para la ejecucin de forma tal de poder
tener diferentes procesos para, por ejemplo, pases diferentes.
Esto le permite a SAP poder utilizar las Badis para realizar localizaciones del
sistema; por eso es que el sistema estndar ya incluye varias implementaciones
de Badis.

Mediante las implementaciones de las Badis se pueden hacer aplicaciones para


negocios especficos como petroleras, papeleras, qumicas, etc.
Esto hace que las Badis sean muy tiles debido a que poseen una arquitectura
Multicapa (SAP, partners, soluciones de clientes, localizaciones, soluciones
especficas para industrias, etc).