Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

BADIs Manual Business Add-Ins

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

¿Qué es una BADI ?

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, ….

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
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.

Como encontrar la BADI que necesitamos

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:

Al finalizar pulsamos el boton salvar.

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

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 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.

En la transacción SE18 puedes ver la definición de la BADI.

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.

Se nos listará de esta forma las BADIS disponibles.

Como Implementar una BADI

Las transacciones con las que vamos a trabajar con las BADI’s son las:

SE18 – Definición de BADIS


SE19 – Implementación de BADIS

Supongamos que hemos elegido la BADI ME_PROCESS_PO_CUST y su método CLOSE que


cubren necesidades especificas de la creación y modificación de pedidos de materiales,
transacciones ME21N y ME22N.

Por lo tanto:

Obtener la información relevante de BADIs realizando los siguientes pasos:

- Vamos a la transacción 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 métodos disponibles para cada parámetro:

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 parámetros


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 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.

Es importante saber que al principio la implementación no esta definida, la


primera ves que se entra a SE19 hay que crear la implementación con el mismo
nombre que ya existe en SE18.

Crear la Implementación del BADI seleccionado

- Vas a la Transacción SE19


- Click en Crear
- Darle el nombre Implementación, por ejemplo ME_PROCESS_PO_CUST
- Luego pide nombre Definición, es la misma ME_PROCESS_PO_CUST
- Paquete es AM2P
- Pide la orden de transporte
- Click en salvar
- Pide una clave SAP de modificación de objeto estándar.
- 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 código fuente de la Implementacion

- Vas a la Transacción 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 código fuente.

Importante, nunca olvides hacer la activación formal:

- Vas a la Transacción SE19 SE19


- Click en el menú superior Implementación
- Click en activar.

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.

Presenta un panorama general de los beneficios a los consultores y usuarios, y describe


los pasos necesarios para mejorar los programas estándar de SAP que utilizan esta
funcionalidad. Tal vez usted no Schwarzenegger, pero puede ser un mundo BADI constructor
de la clase cuando su ejercicio de nuevos conocimientos de Business Add-Ins de SAP.

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.

Business Add-Ins (Badis): Un panorama general.


BADIS puede ser definido simplemente como un objeto orientado a la extensión de la mejora
técnica de SAP.

Se trata de porciones especiales previstas por los desarrolladores de SAP para la


incorporación de cliente (o empresa) la lógica específica. El proceso de adaptación de su
programa de acuerdo a su escenario es conocido como la aplicación de la BADI.
Business Add-Ins han sido utilizados por los desarrolladores de SAP en una serie de módulos
tales como HR, SD y MM. Además de los programas de ABAP estándar, puede utilizar también
para Badis pantalla de menú y equipamiento. Aparte de SAP entregadas las solicitudes, es
posible que también desee crear su propio Badi a fin de proporcionar la opción de mejorar su
propio programas de ABAP.Las operaciones para la creación y la aplicación de BADI son SE18 y
SE19, respectivamente.

Como ya se ha mencionado, Badis se basan en el concepto de orientación a objetos. El


programa que incorpora la mejora opción, llama a un método de una clase generada BADI.
Durante el procedimiento de aplicación, el cliente-código específico que está escrito en el
método. El nombre del método se especifica a través de una interfaz BADI. El nombre de la
interfaz es de la forma IF_EX_BADI, donde BADI es el nombre de la BADI en cuestión. Por
ejemplo, en el caso de los recursos humanos Add-In HR_INDVAL, la interfaz es participar
IF_EX_HR_INDVAL.
Hay dos principales atributos de BADI, a saber, usos múltiples y / o dependientes del filtro. Si
usted desea permitir que más de una aplicación para un determinado BADI, el atributo de la
correspondiente BADI está establecido como de uso múltiple. Asimismo, BADI también puede
definirse como filtro-dependiente. Esto le permite definir subtipos de un determinado negocio
Add-In. En este caso, un método diferente de código se ha creado y ejecutado por cada filtro
se especifica en la definición BADI.
Badis proporciona una serie de ventajas a los desarrolladores y consultores:
• Se le permiten de manera rápida y fácil adaptar SAP de acuerdo a sus necesidades de los
usuarios, sin necesidad de modificar el código estándar.
• Dado que la mejora no es fijo para todos los escenarios, Badis le permiten ejecutar una
aplicación diferente lógica para una variedad de versiones país y la empresa los requisitos.
• Para los desarrolladores que tengan una afinidad para Conceptos orientados a objetos, esta
funcionalidad proporciona un medio eficaz de mejora del programa SAP.

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:

Manteniendo el cursor sobre la definición del campo de nombre,


1. pulse la tecla F4.
2. Un pop-up aparece la pantalla.
3. Elija la opción de solicitud Jerarquía.
El sistema muestra una estructura de árbol que muestra las diversas áreas funcionales (en SAP)
a los módulos pertinentes, tales como MM, SD y HR.

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.

En caso de que el filtro-dependientes es el indicador, un Tipo de filtro se muestra en el campo


correspondiente. Puede que a continuación, haga clic en la pestaña Interfaz. El nombre de la
interfaz y el método BADI se muestra (ver Figura 3).

Figura 3: Interfaz BADI y Método Nombre


Haga doble clic en el nombre del método a fin de ver los detalles acerca de la importación,
exportación, y el cambio de parámetros de la BADI método en cuestión (véase el gráfico 4).

Figura 4: Parámetros de un determinado método BADI


En el caso de filtros dependientes Badis, un importante parámetro que se pasa en el
método de filtro es el valor. El nombre de este parámetro, en la mayoría de los casos, es
FLT_VAL.

Estructura de los programas que emplean la funcionalidad BADI

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

Figura 5: Método de llamadas BADI

El bloque de código declara la primera clase CL_EXITHANDLER y, a continuación, declara una


variable de referencia (en este caso, MYEXIT) a la interfaz de la BADI en cuestión.

A continuación, el programa llama al método GET_INSTANCE de la CL_EXITHANDLER


clase.
Este método se utiliza para acceder a un ejemplo activo de la BADI de clase, que se coloca en
la variable declarada MYEXIT.

Sugerencia: Una de las maneras de averiguar si se apoya de un programa BADI, es buscar el


texto "EXITHANDLER" en el programa de código fuente.

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).

Pasos en la Implementación de una BADI


Como ya se ha mencionado, puede crear nuevas (o modificar el existente) BADI’s a través de la
transacción SE19.

Hay unos pocos pasos necesarios para poner en práctica una BADI.

Vayamos a través de ellos uno por uno.

Paso 1: Creación de una aplicación


El primer paso implica la creación de una BADI aplicación.

1. Llame a la transacción SE19.

El BADI aplicación aparece en pantalla, como se muestra en la Figura 6.

Figura 6: Transacción SE19 - BADI Aplicación de Pantalla.

2. Introduzca un nombre adecuado para su aplicación en el campo correspondiente y


haga clic en el botón Crear.

Un pop-up aparece la pantalla, como se muestra en la Figura 7.

3. Introduzca el nombre de la BADI que participan y pulse el botón Intro.

Figura 7: introducir el nombre de la BADI que se aplicará.

Esto lleva a la pantalla mostrada en la Figura 8.


Figura 8: Aplicación de mantenimiento BADI.

4. Introduzca un breve texto en el campo correspondiente.


5. A continuación, haga clic en la pestaña Interfaz.

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.

Nota: En caso de que se están llevando a cabo un filtro BADI-dependientes, es necesario


introducir un filtro adecuado valor en el cuadro de control previstas en el tipo de la ficha
Atributos.

El valor del filtro (s) campo (en este caso) está disponible para la entrada, como se muestra en
la Figura 9.

Figura 9: Introducción de un filtro de valor para el filtro dependientes Badis


6. A continuación, haga doble clic sobre el nombre del método (en nuestro caso
ITEM_MODIFY).

Esto le llevará a la clase Builder editor método de la pantalla.

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).

Figura 10: Codificación de la BADI Método.

Paso 2: Escribir el Código para la BADI Método

El siguiente paso es escribir la codificación de la BADI método.

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.

Por ejemplo: La siguiente declaración para la tabla interna dará un error:

Como ya se ha mencionado, el método tiene IMPORTACION, EXPORTACION, y


CHANGING PARAMETERS.

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.

El programa principal de aplicación utiliza estos valores para su posterior procesamiento, y de


esta manera el efecto deseado es el mejoramiento logrado.

7. Cuando haya terminado con la codificación, activar el método BADI.

Sugerencia: La aplicación efectiva de la BADI, radica en la utilización de los parámetros de la


mejor manera posible. Tómese su tiempo para explorar los distintos parámetros proporcionados
y utilizarlos de la mejor manera en el cumplimiento de los requisitos de su escenario.
Después de llevar a cabo las dos medidas necesarias, BADI activar su aplicación.

Poniendo todo junto


En esta sección, haré uso de los conceptos descritos en este documento para mostrar cómo la
funcionalidad BADI. Se puede aplicar para valorar indirectamente HR subsidios.

La fórmula o criterios indirectos de valoración, conocido como Módulo, se especifica a través de


ajustes de configuración. Sin embargo, el código para escribir la fórmula matemática que se
realiza en una BADI método.
La Business Add-In aplicable en este caso es HR_INDVAL, y la interfaz que se trata es de
IF_EX_HR_INDVAL.

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.

Figura 11: Creación de una aplicación de negocios para Add-In ZMB_MIGO_ITEM_BADI


Como encontrar la BADI que necesitamos

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:

Al finalizar pulsamos el boton salvar.

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

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 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.

En la transacción SE18 puedes ver la definición de la BADI.


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.

Se nos listará de esta forma las BADIS disponibles.

Como Implementar una BADI

Las transacciones con las que vamos a trabajar con las BADI’s son las:

SE18 – Definición de BADIS


SE19 – Implementación de BADIS

Supongamos que hemos elegido la BADI ME_PROCESS_PO_CUST y su método CLOSE que


cubren necesidades especificas de la creación y modificación de pedidos de materiales,
transacciones ME21N y ME22N.

Por lo tanto:

Obtener la información relevante de BADIs realizando los siguientes pasos:

- Vamos a la transacción 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 métodos disponibles para cada parámetro:

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 parámetros


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 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.

Es importante saber que al principio la implementación no esta definida, la


primera ves que se entra a SE19 hay que crear la implementación con el mismo
nombre que ya existe en SE18.

Crear la Implementación del BADI seleccionado

- Vas a la Transacción SE19


- Click en Crear
- Darle el nombre Implementación, por ejemplo ME_PROCESS_PO_CUST
- Luego pide nombre Definición, es la misma ME_PROCESS_PO_CUST
- Paquete es AM2P
- Pide la orden de transporte
- Click en salvar
- Pide una clave SAP de modificación de objeto estándar.
- 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 código fuente de la Implementacion

- Vas a la Transacción 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 código fuente.

Importante, nunca olvides hacer la activación formal:

- Vas a la Transacción SE19 SE19


- Click en el menú superior Implementación
- 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.

Otro modo de encontrar las badis que se ejecutan en un proceso / transaccion, es el siguiente:

> Ingresan en la trx. SE80.


> Seleccionamos Clase / Interfase.
> Dentro de ella colocamos la clase CL_EXITHANDLER.
> Seleccionamos el metodo GET_INSTANCE para que se visualice el codigo de dicho metodo.
> Colocamos un BREAK en la llamada al metodo:

call method cl_exithandler=>get_class_name_by_interface


exporting
instance = instance
importing
class_name = class_name
changing
exit_name = exit_name
exceptions
no_reference = 1
no_interface_reference = 2
no_exit_interface = 3
data_incons_in_exit_managem = 4
class_not_implement_interface = 5
others = 6.

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:

1.- Ir a tx SE24 e introducir la clase CL_EXITHANDLER, pulsar F7


2.- Hacer doble click en el metodo GET_INSTANCE y poner una break-point despues de la
llamada CALL METHOD cl_exithandler=>get_class_name_by_interface

En el parametro CLASSNAME vendra el nombre de la clase y en el parametro EXITNAME


tendremos el nombre de la 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

Si te fijas en el codigo de la mayoria de transacciones standar veras que pone

ENHANCEMENT-POINT (nombre del enhancement) SPOTS (punto de ampliacion)

para poder implementar una enhancement haremos lo siguiente:

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

Los BADIs, (Bussiness Ad-ins) son la nueva manera en que a partir de la


version SAP 4.6 se implementaran las modificaciones y validaciones en el
codigo fuente estandar, una tarea que normalmente antes se hacia a traves de
USER EXITS y de FIELD EXITS o de modificaciones directas al codigo.

Todos los BADIs estan desarrollados basandose en la tecnologia de


orientacion a objetos de SAP.

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.

La fuente oficial de informacion acerca de los BADIs es la pagina web de SAP


y las notas OSS.

Para determinar primero cual de los badis se va a usar, normalmente se


consulta al analista funcional a cargo del modulo, luego se llama a la
transaccion que se quiere modificar o validar y se chequea si en el BADI
seleccionado el break-point se detiene.

En caso de que el analista funcional no conozca el BADI adecuado entonces la


unica fuente de informacion alternativa son las notas OSS de SAP.

Supongamos que hemos elegido a el BADI ME_PROCESS_PO_CUST y a su metodo


CLOSE que cubren necesidades especificas de la creacion y modificacion de
pedidos de materiales, transacciones ME21N y ME22N.

Por lo tanto:

Obtener la informacion relevante de BADIs


------------------------------

------------

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

Hallar los metodos disponibles para cada parametro:


---------------------------------------------------

Supongamos que hemos elegido ME_PROCESS_PO_CUST y dentro de el a POST


SE18
ME_PROCESS_PO_CUST
Click en visualizar
Click en la solapa Interfase
Doble click en POST
Se presentan sus parametros
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 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.

Es importante saber que al principio la implementacion no esta definida, la


primera ves que se entra a SE19 hay que crear la implementacion con el mismo
nombre que ya existe en SE18.

Crear la Implementacion del BADI seleccionado


---------------------------------------------

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

Modificar el codigo fuente de la Implementacion


-----------------------------------------------

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.

Importante, nunca olvides hacer la activacion formal:

SE19
Click en el menu superior Implementacion
Click en activar.

Si no no funcionara !!!

También podría gustarte