Truco 18. Modificando reports estandar con el uso de Enhancements.


Como muchos de vosotros ya sabréis, es totalmente desaconsejabe modificar un report estandar de Sap para adaptarlo a nuestras necesidades. Esta modificación tiene inconvenientes tales como:

  • Actualizaciones Sap: al instalar notas o los parches, el programa puede volver a ser llevado al estandar y tendremos que ajustarlo para volver a incluir nuestros cambios. Puede incluso cambiar la lógica del programa, aspecto que nos obligará a volver a programar nuestra adaptación. Ademas, las modificaciones deberán de estar debidamente documentadas para facilitar la tarea de administrar el sistema.
  • Upgrades de Sap: en un cambio de versión habrá que tener en cuenta todas las modificaciones.
  • Incorrecto funcionamiento del sistema al tocar el comportamiento estandar de las aplicaciones. Solo sería conveniente modificar los informes que utilizar para extraer información del sistema, y así minimizar el impacto que supondría una alteración de la lógica de funcionamiento de los programas, tablas, etc.

De cara a evitar estas modificaciones, tenemos varias alternativas:

  1. Creación de programas Z como copia de los estandar: identificamos el programa que queremos adaptar y lo  copiamos en un programa Z que podremos modificar sin ninguna restricción y sin ningún efecto sobre el estandar. Aunque siempre con las debidas precauciones, y una revisión regular del programa original por si hubieras cambios importantes en su funcionalidad que nos obligará a repetir la copia.
  2. Uso de enhancements: es un concepto nuevo introducido por Sap en el lenguaje de programación Abap. Los enhacements son plugins dentro de los programas que podemos modificar para introducir nuestro propio código fuente. Sap no los considera una modificación del estandar. Ademas, no afecta a los upgrades o actualizaciones y podemos activarlos o desactivarlos según nuestras necesidades.

Vamos a centrarnos en el uso de los enhancements. Podeís ampliar información sobre ellos en el siguiente link. Basicamente, tenemos disponibles enhacements implicitos y explicitos.

Los implicitos siempre existen en todos los programas Abap en determinados lugares del código, que son:

  • Al final de los include.
  • Al final de las sentecias PUBLIC-, PROTECTED-, PRIVATE-SECTION de una clase.
  • Al final de la parte de implementación de una clase( antes del ENDCLASS, que pertenece al CLASS … IMPLEMENTATION).
  • Al final de una definición de Interface (antes del ENDINTERFACE).
  • Al final de una definición de estructura  (antes de  TYPES END OF, DATA END OF, CONSTANTS END OF,y STATICS END OF).
  • Al principio y al final de un procedimiento (FORM, FUNCTION, METHOD). Es decir, despues de las sentencias  FORM, FUNCTION, y METHOD, y antes de ENDFORM, ENDFUNCTION, y ENDMETHOD.
  • Al final de CHAGING-, IMPORTING-, EXPORTING en la lista de parámetros de un metodo.

Esto significa que en todos esos lugares podremos  insertar nuestro código abap sin que ellos suponga una modificación del report (y sin pedirnos el sistema la consiguiente clave de modificación que hemos de registrar en la web de Sap).

Los explicitos son introducidos a conciencia en cualquier punto dentro de un programa con la sentencias ENHANCEMENT-POINT y ENHANCEMENT-SECTION. Los diferentes elementos que forman el enhancement se pueden agrupar y luego gestionar de una forma conjunta (para habilitarlos o no según nuestras necesidades). Podeís ampliar información sobre ellos aquí. Como añadir estas sentencias dentro del código si sería una modificación, lo podemos ver como una opción de cara a configurar el comportamiento de nuestros desarrollos Z según flags que nos permiten configurar la funcionalidad, y activarla/desactivar determinados comportamientos según nuestra necesidad.

Selección de pedidos de compra personalizada en el registro de facturas de proveedor (transacción MIRO).

En el ejemplo que vamos a plantear tenemos un requerimiento del cliente que nos pide que, al seleccionar los pedidos de compras contra los que se registran las facturas de proveedor a través de la transacción MIRO, podamos utilizar criterios de selección adicionales. También desean en la lista de resultados poder ver esos otros campos. Este requerimiento es debido a que los pedidos de compras se gestionan en un sistema externo a Sap y se interfasean de forma automática, existiendo una numeración de pedidos distinta a la existente en Sap.

Los pasos a seguir para implementar nuestro requerimiento son los siguientes:

  1. Identificar dentro de la Miro, el report donde se hace la llamada a la selección de pedidos. Es un report externo a la transacción, que se llama RM08RL82.
  2. Copiamos el report RM08RL82 al nuevo ZRM08RL82, y lo modificamos para que incluya tanto los nuevos criterios de selección en la pantalla de ejecución, como en la lista de salida. Al ser un Z, no estamos tocando nada del estandar.
  3. En la transacción MIRO (modulpool SAPLMR1M), buscando el lugar donde se hace la llamada al report RM08RL82. La llamada se hace en el FORM rm08rl82_aufrufen dentro del include LMR1MF4S. Como tenemos un punto de enhacement al principio del FORM, lo creamos e introducimos ahí el código abap para que se llame a nuestro report en lugar del report estandar.

Activamos el cambio y de una forma relativamente sencilla hemos conseguido cubrir el requerimiento del cliente sin tocar el estandar o sin un desarrollo propio complejo.

En la entrada del blog abap.es podeis visualizar los pasos a seguir para crear una enhacement del tipo implicito.

NOTA IMPORTANTE: cualquier modificación del estandar es totalmente desaconsejable, y solo deberá ser llevada a cabo en situaciones excepcionales, realizada por programadores expertos y consultores que validen la implicación de los cambios que se vayan a realizar. Igualmente todo debera de ser debidamente documentado de cara a facilitar el mantenimiento del sistema, así como los procesos de actualización o upgrades de versión posterior.

Anuncios
Esta entrada fue publicada en Abap, Sap Basis. Guarda el enlace permanente.

5 respuestas a Truco 18. Modificando reports estandar con el uso de Enhancements.

  1. Pingback: Resumen. Opciones de personalización en nuestro sistema Sap. « Notas y trucos SAP (Bitacora)

  2. Rene dijo:

    Buenas tardes, muy interesante lo que mencionas, sin embargo, tengo una duda, que pasa con el código que continua al ENHANCEMENT, es decir el código anterior del programa standard?

    • Hola Rene:

      El codigo que esta a continuacion del enhancement se ejecuta a continuación de lo que tu introduzcas (si estas en la parte superior del form).

      Por eso lo cambios de este tipo tienen que estar muy probados y teniendo en cuenta donde metes el codigo y como afecta al comportamiento estandar del programa.

      Un saludo.

  3. ELI dijo:

    QUISIERA SABER Q VERSION DE SAP ES ESA POR FAVOR ME URGE

    • En la version Basis a partir de la 7 ya estan disponibles los enhacement. Puedes verlo desde la opción de menu Sistema –> Status –> Version componentes (LUPA): busca el componente SAP_BASIS.

      Saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s