Unidad 3: Ampliaciones y Notas en SAP.
Lección 1: Ampliaciones: User Exits y Customer Exit.
1.- Ampliaciones.
Son diferentes herramientas que presenta SAP para realizar mejoras, modificaciones o agregados a un programa estándar del sistema.
Algunos programas estándar, están preparados para agregarles funcionalidad nueva a la existente.
En algunos casos se puede validar campos de alguna dynpro en particular, agregar campos a una pantalla con código que permita tratar esos nuevos datos, agregar una nueva opción dentro de un menú o agregar campos a tablas estándares.
Las ampliaciones se generan y codifican en módulos aparte del código estándar, con lo cual no se necesita modificarlo, manteniendo la funcionalidad original y el buen funcionamiento.
Tipos de ampliaciones:
- User Exits.
- Customer Exits.
- Keyword Exits.
- Field Exits.
- Estructuras Append.
- Baddis.
- Enhancements.
- Menú Exits.
2.- User Exits.
EL User Exit es una subrutina definida dentro de un programa estándar ABAP que está hueca, es decir sin código, esta allí para que el usuario ponga su propio código fuente que le permita realizar tareas especificas que no están previstas por SAP.
Los User Exits fueron las primeras ampliaciones que introdujo SAP, y son propias del módulo SD (Ventas y Distribución), no existen en otros módulos, están nombrados por SAP como USEREXIT_XXXXXXXX.
Algunas aplicaciones del módulo SD todavía utilizan este tipo de ampliaciones pero esta práctica no se está utilizando para nuevas extensiones al código SAP.
En su lugar se utilizan el resto de las ampliaciones disponibles, aunque vale tener en cuenta que los User Exits serán mantenidos por SAP en las nuevas versiones del sistema.
3.- Customer Exits.
También llamado Exit de Cliente es un punto dentro de un programa en donde se puede llamar a un programa propio.
Se ejecutan desde un programa estándar haciendo una invocación a un módulo de función.
Algunos programas estándar tienen dentro de su código, llamadas a módulos de funciones que pueden ser modificados por el programador.
En la tabla MODSAP se encuentran todos los módulos de función que se utilizan en los Exits de cliente.
Esta almacena todas las ampliaciones existentes en el sistema SAP.
De cada ampliación se guarda: el nombre de la ampliación, el tipo de componente que puede ser "E" para Exit de funciones, "S" para imágenes, "T" para Tablas y "C" para Código GUI y finalmente el nombre del objeto SAP (Programa, módulo de función, etc) que se modifica.
Los módulos de función tienen una nomenclatura estándar:
EXIT_<nombre del programa>_<número de función>.
Por ejemplo: EXIT_SAPMV45A_003.
La llamada a un exit de un módulo de función es implementada de la siguiente manera en un programa estándar de SAP:
CALL CUSTOMER-FUNCTION <3 digitos>
Ventajas del Customer Exit:
- Es una buena herramienta para agregar funcionalidad nueva a un programa estándar.
- Para transportar y activar un Customer Exit es suficiente con el Include nuevo, sin tocar el programa original.
Desventajas del Customer Exit:
- No siempre se ajusta a las necesidades del programador.
- No existe una búsqueda de Customer Exit por programa con una aclaración amplia de su utilización, para buscarlos hay que realizar una búsqueda del string CALL CUSTOMER-FUNCTION dentro del programa de control estándar y su funcionamiento se prueba sin saber exactamente si es el correcto para lo que se quiere hacer.
Para trabajar con Customer Exits se utilizan principalmente 2 transacciones que son:
- SMOD - Para administrar ampliaciones.
- CMOD - Para gestionar proyectos de ampliaciones.
4.- Pasos para realizar un Customer Exit.
- Ir a la transacción SMOD.
- Si no se conoce el nombre, hay que ir a la transacción SE16, con la tabla MODSAP, en el campo MEMBER completar con el nombre del módulo de función a buscar (Ejemplo EXIT_SAPMV45A_003) y el campo NAME nos dirá la ampliación que la contiene.
- Si tampoco se conece el módulo de función, debe buscarse en el código del programa estándar las llamadas a funciónes de usuario, que estarán indicadas por CALL CUSTOMER-FUNCTION '001', donde el numero del final puede ir cambiando si presenta mas de una llamada, es decir varios customer exit de cliente.
- Una vez que se tiene el nombre de la ampliación, en este ejemplo V45A0003, lo colocamos en el campo Amplicación de la transacción y damos visualizar.
- En la siguiente pantalla seleccionamos el radiobutton componentes y se visualizan todos los módulos de funciones que contiene esta ampliación.
- Una vez que sabemos qué módulo de función usar, se hace doble clic sobre el módulo y se deriva otra pantalla, en la cual se puede ver qué objetos que importa y exporta la función, asi como también las tablas que importa y que pueden modificarse, las cuales se utilizarán en el código fuente.
- En la solapa Cod.fte. se encuentra un Include Z que se utiliza para agregar el código del usuario.
5.- Pruebas de un Customer Exit.
Un punto complicado en la utilización de Customer Exits es ubicarlos y conocer el momento en el que ocurren los mismos. Todo esto para determinar que datos y que se puede realizar en ese momento.
Para realizar esta investigación lo mas efectivo sera crear un proyecto de ampliación, asignar la ampliación, activarla y luego colocar un BreakPoint en el módulo de funciones, para determinar los datos con los que disponemos en ese momento y el punto exacto del proceso en dnde se encentra.