0% encontró este documento útil (0 votos)
105 vistas7 páginas

Guía de BADI's en SAP ABAP

El documento describe cómo crear una BADI (Business Add-In) en SAP para agregar código personalizado a un proceso existente sin modificar el código de SAP. Explica cómo usar la BADI CTS_CURRENT_PROJECT, la cual se ejecuta cada vez que se abre un objeto para editarlo, para agregar un contador que cuente el número de veces que se edita cierto objeto. Proporciona los pasos para crear la implementación de la BADI, agregar el contador y el código para mostrar un mensaje con el número de ediciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
105 vistas7 páginas

Guía de BADI's en SAP ABAP

El documento describe cómo crear una BADI (Business Add-In) en SAP para agregar código personalizado a un proceso existente sin modificar el código de SAP. Explica cómo usar la BADI CTS_CURRENT_PROJECT, la cual se ejecuta cada vez que se abre un objeto para editarlo, para agregar un contador que cuente el número de veces que se edita cierto objeto. Proporciona los pasos para crear la implementación de la BADI, agregar el contador y el código para mostrar un mensaje con el número de ediciones.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

ABAP – Introducción a las BADI’s – ejemplo

con CTS_CURRENT_PROJECT

http://ambar.com.ve/saphire/?p=315

En SAP podemos conseguir dos tipos de código fuente: el del cliente, el cual se programó
personalizado y por encargo (el que harías tu mismo) para adaptar SAP a los
requerimientos de la empresa, y un segundo tipo de código, el de fabrica, bloqueado, pre-
programado por los desarrolladores de SAP, para realizar las funciones básicas.

Aunque podemos ver el código de fábrica de SAP, NO PODEMOS MODIFICARLO, para


ello requerimos de una licencia o acceso especial, y realizar la modificación al código de
fábrica puede acarrear la perdida de la garantía sobre la licencia de la empresa.

Pero se presenta un inconveniente con esto: ¿que pasa si en vez de modificar un código de
SAP, lo que queremos es incluir un código del cliente en un algoritmo o proceso del SAP?.

Es posible, por ejemplo, que nuestro algoritmo requiera saber cuando se crear un artículo,
para agregar alguna información adicional en la tabla MARA, o por ejemplo, contar el
número de veces que se modifica un programa, para saber si un programador está
trabajando en algo especifico.

Para ello fueron creadas las BADI’s, las BADIS no son sino “puntos de acceso” para
insertar nuestro código en el código de SAP. Esto permite que nuestro algoritmo esté
presente en el momento que se ejecuta algún algoritmo de SAP. Nos permiten agregar
código a un proceso o algoritmo sin modificarlo.

Las BADI’s son implementadas usando el modelo de interfaces / clases, por ello, te
recomiendo leer primero mis post sobre clases, clases globales e interfaces.

Hay otros métodos que permiten realizar este trabajo en SAP, por ejemplo los USER
EXITS, hay varias diferencias, pero la más resaltante es que las BADI’s están basadas en
interfaces y clases, y los USER EXITS están basadas en módulos de función.

Hay 4 nombres (definiciones) importantes en una BADI:

1
1. El nombre de la implementación (Implementation Name): Este nombre engloba
todo, es un nombre sugerido por el programador y conecta los 3 elementos
siguientes.
2. El nombre de la BADI (Definition Name): Así se llama el punto de acceso creado
por SAP
3. El nombre de la interfaz: los nombres de las interfaces en el caso de las BADI’s
tienen como prefijo IF_EX_, unido al nombre de la BADI. Por ejemplo: para la
BADI CTS_CURRENT_PROJECT, el nombre de la interfaz
será IF_EX_CTS_CURRENT_PROJECT. Esta interfaz es la que reconoce el
código SAP que implementa el punto de acceso
4. El nombre de la clase que implementa la interfaz (NIC, “Name of implementing
class”): el IDE de SAP sugiere un nombre, te recomiendo usarlo, pero puedes
cambiar el nombre siempre y cuando comience por Z (recuerda que los nombres
que comienzan con letras distintas a Z están reservados por SAP).

Es decir: SAP pone dos objetos: el nombre de la BADI (Definition Name), y la interfaz. EL
programador pone dos objetos: El nombre de la implementación, y la clase que concentra el
código fuente.

diagrama
Vamos a poner un ejemplo: queremos llevar un conteo de las veces que se ha modificado
un cierto programa.

Para ello usamos la BADI CTS_CURRENT_PROJECT, la cual es llamada o ejecutada


cada vez que se abre un objeto (programa) para editarlo.

NOTA: el siguiente código y las siguientes sugerencias SON SIN NINGUNA CLASE
DE GARANTÍA, ESTÁ BAJO TU TOTAL RESPONSABILIDAD INGRESAR O
USAR LAS SUGERENCIAS O CÓDIGO FUENTE INDICADOS EN ESTE POST.
2
Empezamos por abrir la transacción SE18, la cual nos permite crear o editar BADI’s:

SE18
En la pantalla inicial de SE18 seleccionamos la opción BADI Name, y
escribimos CTS_CURRENT_PROJECT, y pulsamos el botón  .

Esto nos muestra la interfaz para el BADI CTS_CURRENT_PROJECT:

3
badi cts_current_project

Esta pantalla en si es informativa, de hecho si hacemos clic en la pestaña de “Interface”


podemos ver la interfaz correspondiente del BADI:

In
terfaz del BADI

Estas pantallas son informativas, para usar el BADI debemos implementar la interfaz, para
ello seleccionamos en el menú la opción: Implementation->Create.

Al hacer esto nos aparece una pantalla como la siguiente:

4
nombre nueva BADI
Debes indicar el nombre de tu implementación, yo usé ZSAPHIRE_BADI_CTS, pero
puedes usar cualquier otra QUE COMIENCE CON Z. La pulsar aceptar   vas a ver la
pantalla de editar las propiedades de la clase badi:

change implementation

Aqui indicas la descripción del BADI en “Implementation short text”, guardas  ,y


SAP te va a mostrar las dos pantallas de crear nuevo objeto de diccionario y el workbench,
5
la diferencia esta vez es que debes indicar el paquete donde vas a guardar tu BADI, ya que
el BADI lo iniciamos sin indicar el paquete destino.

Para implementar el contador debemos crear un atributo (variable) estático, que permita
contar las ediciones (al menos en la sesión actual).  Esto lo hacemos modificando la clase
implementadora (yo la llamé  ZCL_IM_SAPHIRE_BADI_CTS), agregandole un atributo
estático, para abrir la clase debemos hacer doble clic sobre el NIC “Name of implementing
class”, esto nos muestra una pantalla como la siguiente:

contador
Ahí debemos agregar un atributo (variable) llamado “contador”, estática, publica
(realmente privada también sirve), de tipo i, con valor inicial de cero, las instrucciones
detalladas de como hacer esto lo consigues aquí.

Una vez guardado, vamos a ingresar el código correspondiente, eso lo realizamos haciendo
clic sobre el botón de regresar  , y después doble clic sobre el método a implementar, en
este caso tenemos un solo método: GET_CURRENT_PROJECT. Vamos a ver entonces
el editor de código para el método, y agregamos este código:

  METHOD if_ex_cts_current_project~get_current_project.

    DATA wa LIKE LINE OF it_objects.

    READ TABLE it_objects INTO wa INDEX 1.

    IF wa-obj_name = 'ZHOLA_MUNDO'.

6
      contador = contador + 1.

      DATA v TYPE string.

      v = 'Número de ediciones: ' && contador

            && ', objeto actual: ' && wa-obj_name.

      MESSAGE v TYPE 'I'.

    ENDIF.

  ENDMETHOD.

Hacemos el procedimiento de guardado: guardamos  , terminamos la edición   y

activamos   el método, regresamos a la pantalla anterior y activamos    támbien la


BADI, después de esto nuestra BADI quedará activa y funcional.

Debemos también iniciar una nueva ventana de GUI usando el botón  , esto para que la
nueva BADI sea reconocida y cargada (en la ventana GUI actual es posible que no funcione
al primer intento)

Ahora CADA VEZ QUE INICIEMOS LA EDICIÓN DEL OBJETO ZHOLA_MUNDO,


veremos una pantalla como la siguiente:

pantalla
creada en el BADI
Una vez vemos funcionando nuestra BADI, es posible que queramos “pausarla”, es
decir, deshabilitarla, para ello usamos el botón   (una o dos veces) hasta regresar a la
transacción SE18, y ahí encontramos el botón  , con el cual desactivamos en BADI.
También podemos simplemente borrar el BADI, buscándolo dentro del paquete donde lo
incluimos.

También podría gustarte