Ampliaciones SAP - Include de un Customer Exit

¿Cómo encontrar el EXIT que necesitamos?

Esta es una pregunta muy común dentro del día a día de una implementación SAP.

Lo primero que debemos acotar es que no es técnicamente correcto preguntar por un EXIT o USEREXIT simplemente, ya que éstos son solo uno de los 3 tipos de ampliaciones que permite el sistema.

Para saber con detalle cuales son los tipos de ampliaciones y en qué se diferencian, puedes leer el siguiente artículo.

¿Qué son las ampliaciones en SAP?

Ahora bien, existen varios caminos para encontrar la ampliación que necesitamos.

Programas buscadores

Existen programas Z especializados en buscar los objetos de ampliación relacionados con una transacción en particular, en ellos basta con indicar el código de la transacción y evaluar los resultados, hasta encontrar con el objeto que nos sea útil según el requerimiento que nos pidan.

A continuación te ofrezco 3 de estos programas para que los descargues y los ejecutes tal cual en la SE38:

ZUSEREXIT.
Busca user-exits en una transacción.  Descarga AQUI

Z_BUSCA_AMPLIACIONES.
Busca ampliaciones en una transacción. Descarga AQUI

Z_VERIFICA_USER_EXIT.
Revisa si una transacción o programa contiene una ampliación. Descarga AQUI

Subrutinas para el módulo de Ventas.

Si bien la tendencia de SAP es ir sustituyendo las USEREXITS propiamente dichas por BADi’s, en  el módulo SD aún son frecuentes encontrar USEREXITS, y de una manera muy sencilla. Buscamos el programa fuente de la transacción estándar, entramos al programa por la SE80, buscamos las subrutinas asociadas al mismo, y de la lista que nos muestran, ubicamos aquellas que empiecen con el prefijo USEREXIT.

Luego nos queda determinar cuál de todas es la que nos es útil según lo que nos pidan. Estas EXITS son simples llamados a INCLUDES, a los cuales debemos solicitar su clave de modificación para añadirle código a los FORMS contenidos en ellos. Mi forma de determinar cual es el EXIT que necesito, es fijar un break-point en cada EXIT, ejecutar la transacción estándar, y ver cual EXIT es llamado al momento del evento sobre el cual debemos hacer la ampliación; por ejemplo, si se requiere una validación al momento de guardar/salvar un pedido, es muy probable que debamos hacer los cambios en el FORM SAVE_DOCUMENT_PREPARE o SAVE_DOCUMENT del Include MV45AFZZ.

Es muy común que soliciten cambios al tratamiento de documentos de ventas, para ello, el Include MV45AFZZ del programa estándar SAPMV45A es un EXIT muy utilizado.

Búsqueda de palabras clave en programa estándar.

Existe otra manera de buscar las ampliaciones disponibles, aunque en este caso debemos saber si se trata de un USEREXIT, un CUSTOMER-EXIT, o una BADI; ya que cada una tiene su propia palabra clave para identificarlos.

Si no recuerdas las diferencias entre los 3 tipos de ampliaciones, en el siguiente artículo tienes una explicación detallada de los mismos.

Diferencias entre tipos de ampliaciones.

Aunque veamos una pequeña descripción de cada uno:

  • Customer Exits: Se trata de funciones utilizadas por un programa estándar cuyo código está en un include Z.
  • Business Add-Ins: Las badis son que podemos implementar en una clase Z.
  • User Exits: Son subrutinas de un programa estándar que están en un include especia que SAP nos deja modificar.

Lo primero que debemos hacer es ubicar el programa fuente de la transacción estándar y entramos al código, bien sea por la SE38 o la SE80, en este caso es indiferente.

Una vez allí, pulsamos el buscador y vamos a buscar las palabras claves según el tipo de ampliación que busquemos:

CUSTOMER-EXIT.

Si se trara de un CUSTOMER-EXIT, buscamos la cadena “CUSTOMER-FUNCTION”, obtenemos resultados como en la imagen siguiente:

Ampliaciones SAP - Customer Exit

Ampliaciones SAP – Customer Exit

Hacemos doble clic en los resultados, nos llevará al Include que contiene el llamado, allí podremos hacer doble clic en el número para llegar directamente al módulo de funciones donde podremos trabajar:

Ampliaciones SAP - Include de un Customer Exit

Ampliaciones SAP – Include de un Customer Exit

Aún nos queda por determinar la “ampliación” en donde se encuentra este CUSTOMER-EXIT; con el nombre de la función buscamos en la SMOD y obtendremos el nombre de la ampliación.

Ahora, con la ampliación y el módulo de función ubicados, ya podemos implementar los cambios requeridos.

BADI’S

Nuevamente en el código fuente del programa estándar, buscamos la cadena “CL_EXITHANDLER”; el resultado nos mostrará las BADI’s utilizadas en dicho programa.

Ampliaciones SAP - Como encontrar una BADI

Ampliaciones SAP – Como encontrar una BADI

El nombre exacto de las BADI’s los encontramos justo al lado de “exit_name”.

USEREXITS

En el caso de las USEREXITS, realizamos la misma búsqueda, solo que esta vez la palabra clave es USEREXIT, el resultado serán los Includes que contienen dichas EXITS que estamos buscando.

Esto salió más largo de lo que pensé en un principio, pero creo que logré abarcar un panorama bastante completo de la búsqueda de estos objetos.

Si conoces algún otro método que te sea eficaz, te agradecería que lo compartieras con nosotros a través de los comentarios. 

¿Te ha sido de utilidad este artículo? Házmelo saber con tus comentarios, y suscríbete a mi Comunidad para recibir mi curso gratuito “AprendeABAP en 10 lecciones”, además de contenidos exclusivos  sobre el mundo ABAP.

Richard Rey

“Programando tu Exito”

Opt In Image
Te has preguntado que se necesita para ser un Consultor de Éxito?
Te gustaría aprender los 7 Pasos para triunfar en tu carrera como Consultor ABAP?

Deja tus datos aquí abajo y formarás parte de mi comunidad exclusiva, además de recibir mi curso de regalo "Los 7 Pasos para ser un Consultor de Éxito".

Mas información AQUÍ.

 

PD: Odio el SPAM. No compartire tus datos con nadie.

Si te gusta, compártelo! ...Share on FacebookTweet about this on TwitterShare on LinkedInShare on Google+Email this to someonePrint this page

Comentarios