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

Cmo encontrar e implementar BADIS en programacion ABAP

1 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

Encuentranos en Google+.

Home
Home

AS/400 System i

SAP Netweaver

Sobre Teknoda

SAP Netweaver

BLOGS

Encuestas

WORKSHOPS

Links SAP

Cmo encontrar e implementar BADIS en programacion ABAP

SAP Netweaver / ABAP


Lea en SAP Netweaver . . .

Desanudando Conceptos:
SAP HANA

si no HANA hoy, HANAr


maana
No hay newsletter, conferencia o evento
del ambiente ERP que en los ltimos
meses haya ahorrado detalles y
especulaciones sobre el nuevo paradigma:
SAP HANA.

En medio del marketing hype, es siempre


difcil para los que estamos en el ruedo
decodificar lo esencial de las nuevas
tecnologas, as que aqu va nuestro
aporte para ayudar a una cabal y
conceptual comprensin de SAP HANA.
LEER ESTE ARTICULO >>>>>

Notas tcnicas / Tips / Tutorials

Cmo encontrar e implementar BADIS en programacion ABAP


Tweet

Share

Conozca algunos mtodos de bsqueda de BADIS en


SAP y aprenda la manera de implementarlas
No importa cun abarcativo sea un software de gestin, las necesidades particulares de cada cliente y
los requisitos de los distintos escenarios de negocios, puede generar una necesidad de
"customizacin" del software que excede la parametrizacin. Sin embargo, en un sistema de
envergadura y misin crtica, esto no debera llevarse a cabo de cualquier manera. En el caso
particular de SAP, es sabido que no se permite modificar el cdigo fuente de un programa ABAP
standard.

Por ello, SAP proporciona recursos e instrumentos que permiten intromisiones "controladas" al cdigo,
a travs del concepto de ampliaciones o Enhancements. La idea es expandir la funcionalidad dentro
del sistema SAP para atender las necesidades adicionales del cliente, sin modificar el cdigo fuente
del programa standard.
Actualmente existen en SAP tres generaciones de ampliaciones:
Primera
generacin:
Segunda
generacin:
Tercera
generacin:
BADIs.

subrutinas vacas dentro de un programa estndar en las cuales se puede


agregar cdigo. El nombre de las mismas comienza con USEREXIT. Esta
modalidad implica modificar el estndar.

CUSTOMER-EXIT. En algunos lugares del cdigo estndar hay llamadas de


tipo CALL CUSTOMER-FUNCTION <NRO> (Ej:001). Estas rutinas se
editan con la transaccin CMOD.
Usan instancias de ABAP Objects. Se invocan con CALL METHOD. Se
crean con la transaccin SE18 y se implementan con la transaccin SE19.

El presente tip, est centrado en la Tercera generacin, las BADIs.

Se describir qu es una BADI y luego mediante un ejemplo prctico, se detallarn los distintos
mtodos para buscar BADIs en el sistema y se implementar una de ellas.

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

2 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

I ) Qu es una BADI?
Las BADIs (Bussiness Add-ins) son las nuevas tcnicas de ampliacin del cdigo estndar de SAP
basadas en programacin ABAP orientada a objetos que surgieron a partir de la versin 4.6C.
Las BADIs tienen las siguientes caractersticas:

Se pueden implementar ms de una vez, a diferencia de los user-exit, que slo tienen una
implementacin.
Las BADI's poseen una arquitectura Multicapa (SAP, partners, soluciones de clientes,
localizaciones, soluciones especficas para industrias, etc), a diferencia de los User Exits que
son doble capa nicamente (SAP y soluciones de cliente).
Se usan para ampliar menes, cdigo fuente y pantallas de transacciones standards

Las BADIs contienen dos vistas: la definicin y la implementacin.

La definicin se realiza mediante la transaccin SE18. En ella se deben especificar los siguientes
puntos:
Definicin de la interfaz: mtodos y parmetros.
Tipo de implementacin: simple (slo una implementacin activa) o mltiple (ms de una
implementacin activa).

Para implementar o ver las distintas implementaciones de una BADI dada, utilizar la transaccin
SE19.
II) Ejemplo Prctico

En este apartado, se describirn distintas maneras para encontrar BADIs en el sistema y, adems, se
mostrar cmo implementar una BADI.

Cmo encontrar la BADI que necesitamos?

A continuacin se presentarn cuatro mtodos distintos que nos permitirn localizar las BADIs.

Mtodo 1

Las BADIS se encuentran registradas en las tablas SXS_INTER, SXC_EXIT, SXC_CLASS y


SXC_ATTR. SAP accede a dichas tablas mediante las vistas V_EXT_IMP y V_EXT_ACT. En cada
llamada existente a una BADI, el sistema pasa por las tablas antes mencionadas. Por lo tanto, un
mtodo para encontrar la BADI que necesitamos se basa en el uso de la transaccin ST05
(Performance Analysis).
Se realizar el siguiente procedimiento:
1.
2.
3.
4.

Desde la transaccin ST05 marcar el flag Table Buffer trace y pulsar el botn Activate
Trace.
Ejecutar (en otro modo) la transaccin sobre la que se desea encontrar una BADI.
Volver a la pantalla de la transaccin ST05 y hacer clic en el botn Deactivate Trace
para finalizar el trace. Luego seleccionar el botn Display Trace donde se va a filtrar el
Trace con los objetos: V_EXT_IMP y V_EXT_ACT (vistas).
Pulsar el botn Copy (F8) , Fill Operations: OPEN y Enter.

Resultado: se obtendr un listado con todas las interface class names de las vistas V_EXT_IMP
comenzando con IF_EX_*. Este es el prefijo estndar de SAP para las BADI class interfaces.

El nombre de la BADI se encuentra a continuacin del prefijo IF_EX_. Por ejemplo, si el nombre de la
interfase es IF_EX_ADDR_LANGU_TO_VERS, la BADI se llama ADDR_LANGU_TO_VERS.

Mtodo 2:

Desde la transaccin SE80, fijar un break-point en el mtodo ACT_IMPS_PER_FLT_VAL de la


clase CL_BADI_FLT_DATA_TRANS_AND_DB justo despus del SELECT encabezado con el
comentario read BADI attributes.

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

3 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

Luego ejecutar la transaccin que se desea analizar. Por cada parada en el break-point del debugger,
examinar los campos exit_name e internal.

Mtodo 3

Desde la transaccin SE24 (Class Builder) colocar un break-point en el CALL METHOD


cl_exithandler=>get_class_name_by_interface que est dentro del mtodo GET_INSTANCE de la
clase CL_EXITHANDLER .

Luego, ejecutar la transaccin o programa a verificar. En la variable exit_name se muestran los


nombres de las BADI's que implementa el programa. Este mtodo puede resultar engorroso porque
detiene muchas veces la ejecucin, pero sto asegura que si una BADI existe se detendr en ese
punto. Lo que se est haciendo es poner un BREAK-POINT en el momento en que SAP verifica si
una definicin de BADI tiene alguna implementacin activa; por lo tanto, aunque no exista ninguna
implementacin activa para esa BADI particular, el mtodo detectar que existe una BADI en ese
punto. Para ver si esa BADI est implementada o no, ir a la Transaccin SE18 con el nombre de la
BADI obtenida en la variable exit_name e ir a la opcin de men Implementaciones Resumen

Mtodo 4

Obtener el paquete (Clase de desarrollo) de la transaccin que se desea analizar mediante la


transaccin SE93. En la transaccin SE18, en la bsqueda ampliada, buscar filtrando por el paquete
anteriormente encontrado y el sistema devolver todas las BADIs relacionadas a ese paquete.

III) Implementando una BADI


En el siguiente caso prctico, se implementar una BADI que permita mostrar un mensaje cuando se
estn modificando los datos de direccin de un banco determinado, mediante la transaccin FI02

A travs del botn Address

, se accede a la pantalla de datos de direccin. Luego de cambiar

el pas a US (Estados Unidos) o ES (Espaa), seleccionar Aceptar y mostrar el mensaje deseado.

Para ello, se implementar la BADI ADDRESS_CHECK, en el mtodo IS_ACTIVE_FOR_COUNTRY


que permite ampliar la verificacin del pas.
Para implementar dicha BADI se siguen los siguientes pasos:

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

4 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

1. Acceder a la transaccin SE19, ingresar el nombre de la BADI, ADDRESS_CHECK, en el campo


BAdI Name y presionar el botn Create Impl.

2. Aparecer la siguiente ventana donde se debe ingresar, en el campo Implementation Name, un


nombre de implementacin Z*. Presionar

3. En la siguiente pantalla se debe ingresar:

a. En el campo Implementation Short Text: una descripcin corta.

b. En el campo Defined Filtres: los filtros con los cuales se va a ejecutar esa BADI. En el
ejemplo se ingresaron los filtros ES, US. Es decir, la BADI a implementar slo se ejecutar si el
campo pas contiene ES o US.

Esta tabla est habilitada porque en la BADI se defini que se debe hacer con una definicin de filtros,
es decir, el ckeckbox Filter-Dependen est seleccionado.
c. Finalmente Guardar

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

5 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

Nota: La BADI ADDRESS_CHECK slo permite una implementacin activa.

4. Ingresar el cdigo fuente solicitado. Para ello ir a la solapa INTERFACE, y hacer doble click sobre
el mtodo IS_ACTIVE_FOR_COUNTRY.

Aparecer la siguiente pantalla, donde se ingresar el siguiente cdigo fuente:

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

6 of 10

5. Por ltimo, Guardar

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

y Activar

Para probar cmo funciona la implementacin, seguir los siguientes pasos:


1. Acceder a la transaccin FI02 e ingresar el pas y el cdigo del banco. Por ejemplo,
AR(Argentina) y 001. Luego presionar ENTER.

2. En la siguiente pantalla seleccionar el botn Address

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

7 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

3. En el campo Country, elegir US ES.

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

8 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

4. Y finalmente, al Aceptar

aparecer el mensaje esperado.

Tips relacionados:
Puede encontrar ms informacin sobre ampliaciones en:
Qu diferencia a las BADIS de los USER EXITS?

Ampliaciones (Enhancements) a programas ABAP en ERP 6.0


Conceptos de ampliaciones

Qu recursos de ampliacin al estndar se utilizan en su


organizacin? Han experimentado con BADIS ya?

IMPORTANTE

Copyright Agosto 2009. Teknoda S.A.


IMPORTANTE:
Notas tcnicas de SAP ABAP" se enva con frecuencia variable y sin cargo como servicio a
nuestros clientes SAP. Contiene notas/tutoriales/artculos tcnicos desarrollados en forma
totalmente objetiva e independiente. Teknoda es una organizacin de servicios de tecnologa
informtica y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra direccin de e-mail para que comience a recibir las Notas Tcnicas
SAP, enve un mensaje desde esa direccin a sapping@teknoda.com, aclarando nombre,
empresa, cargo y pas del suscriptor.
SAP, SAP Netweaver, R/3 y ABAP son marcas registradas de SAP AG. SAP no es el editor de
esta publicacin y no es responsable de la misma en ningn aspecto. La informacin contenida
en esta publicacin ha sido generada por nuestros especialistas a partir de fuentes
consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de
error humano, mecnico, cambio de versin u otro, Teknoda no garantiza la exactitud o
completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN
CONSENTIMIENTO DE TEKNODA

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

9 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

FICHA TECNICA: Notas tcnicas Tips de SAP Netweaver ABAP Cmo encontrar e implementar
BADIS en programacin ABAP"
Tema: Programacin ABAP, Enhancements. Descripcin: Conozca algunos mtodos en SAP para
encontrar BADIS y aprenda cmo implementarlas.

Comentarios
#3 Ana 05-06-2014 12:35
Muy buen ejemplo

#2 Angel 02-12-2011 14:15


Que tal.. el tuto es bueno y se entiende.
Lo probe un servidor y no se ejecuta la bapi.
Es decir hago los cambios con US o ES y al hacer click en ok, no sale el popup.
y cuando escribi el codigo y todo, guarde y activo lo mas bien.
Alguien sabri porque no funca?

#1 Angel 30-11-2011 18:07


que tal!! Intente seguir este fantastico ejemplo pero, estoy en un servidor netweaver que instale,
creo que se le dice miniap, y resulta que "AR" "001" no existe me dice, y no se que hacer.
Como hago para encontrar datos en esta transaccion?
O saber de alguna manera como trabajar y que tengo?
Observe que tenes el usuario BCUSER que es de prueba tambien. Creeria que me faltaria
activar algo. Podrias decirme por favor?
Desde antemano, se agradece este aporte.

Refrescar lista de comentarios


Escribir un comentario
Nombre (requerido)

5/8/2015 14:44

Cmo encontrar e implementar BADIS en programacion ABAP

10 of 10

http://www.teknodatips.com.ar/sap-netweaver/29-como-encontrar-e-imp...

Refescar

Enviar
JComments

Buscar ms tips de SAP enTeknodatips . . .

Copyright 2015 Teknoda tips - Tecnologia SAP Netweaver - IBM AS400 - System i - iSeries. Teknodatips es un sitio de TEKNODA S.A. - Todos los derechos
Joomla! es software libre publicado bajo la licencia GNU/GPL.
Todos los derechos reservados 2015 http://www.teknodatips.com.ar

5/8/2015 14:44