Truco 16. Añadir nuevos campos en informes de partidas de Controlling.


Siguiendo con la serie de ampliación de los informes estandar más importantes de Sap, hoy vamos a ver la forma de añadir nuevos campos en los informes de partidas individuales de Controlling.

  • Informes de partidas reales: transacciones KSB1 para Centros de Coste, KOB1 para Ordenes y  CJI3 para Proyectos.
  • Informes de partidas planificadas: transacciones KSBP para Cecos, KOBP para Ordenes y CJI4 para Proyectos.
  • Informes de partidas comprometido: transacciones KSB2 para Cecos, KOB2 para Ordenes y CJI5 para Proyectos.

El procedimiento se describe en la Nota Oss 325546, y nos permite añadir campos de cliente tanto en los informes de partidas abiertas reales, planificadas o de comprometido. Vamos a ver un ejemplo práctico utilizando las partidas abiertas reales de Proyectos, aunque tendremos la posibilidad de ampliar también el resto de informes.

Básicamente, hemos de utilizar la ampliacion COOMEP01 (transaccion CMOD/SMOD), seleccionando la exit especifica según el lugar donde queremos añadir la información, aunque habrá que realizar algunos pasos adicionales a este. Veamos en detalle un ejemplo:

En nuestra empresa quieren añadir campos adicionales al informes de partidas individuales de proyectos, para ver los siguientes valores:

  • Nombre y Departamento del empleado que esta imputando horas a los proyectos.
  • Nombre del Proyecto (descripción).
  • Clase de elemento Pep y su descripción, para poder filtrar o subtotalizar la información por este concepto.

Los pasos a seguir son los siguientes:

Ampliación de la estructura KAEP_COAC.

A través de la transacción SE11, en la estructura KAEP_COAC, en el include CI_RKPOS, añadiremos todos los campos necesarios. Siempre seguir la nomenclatura ZZ_NOMBRECAMPO.

Una vez concluida la ampliación de la estructura, activaremos los cambios para que esten disponibles.

Proyecto de ampliación COOMEP01.

En este proyecto de ampliación Sap nos deja la puerta para incluir el código Abap con el que llenaremos los campos definidos en la estructura anterior. El proyecto de ampliación lo gestionaremos con la transacción CMOD. Para ello, creo el proyecto ZCO_PART CO: incluir nuevos campos en informes partidas individuales, y lo asigno la ampliación COOMEP01.

En la exit EXIT_SAPLKAEP_001, en el include ZXKAEPU01, introducimos el código fuente que va a leer de las diferentes tablas:

 IF cs_record-obart = 'PR'.
* Ampliar campos varios del proyecto.
* Descripcion del proyecto.
  CLEAR proj.
  SELECT SINGLE * FROM  proj
         WHERE  pspid  = cs_record-pspid.
  cs_record-zz_post1 = proj-post1.

* Clase de elemento Pep y su descripcion.
  CLEAR prps.
  SELECT SINGLE * FROM  prps
*       where PSPNR   = cs_record-objid.
         WHERE  posid  = cs_record-posid.
  cs_record-zz_prart = prps-prart.

  CLEAR tcj1t.
  SELECT  SINGLE * FROM  tcj1t
         WHERE  langu  = sy-langu
         AND    prart  = prps-prart.
  cs_record-zz_pratx = tcj1t-pratx.

* Nombre del empleado.
  IF cs_record-pernr IS NOT INITIAL.
    CLEAR pa0002.
    SELECT SINGLE * FROM pa0002 WHERE pernr = cs_record-pernr.
    CONCATENATE pa0002-vorna pa0002-nachn pa0002-nach2 INTO cs_record-zz_cname
       SEPARATED BY space.

* Departamento y descripcion de este.
    CLEAR pa0001.
    SELECT SINGLE * FROM pa0001 WHERE pernr = cs_record-pernr
       AND begda <= cs_record-budat
       AND endda >= cs_record-budat.
    cs_record-zz_orgeh = pa0001-orgeh.
    CLEAR t527x.
    SELECT SINGLE * FROM  t527x
           WHERE  sprsl  = sy-langu
           AND    orgeh  = pa0001-orgeh
           AND    endda  >= cs_record-budat
           AND    begda  <= cs_record-budat.
    cs_record-zz_orgtx = t527x-orgtx.
  ENDIF.
ENDIF.

A continuación activamos el programa y activamos el proyecto de ampliación.

NOTA IMPORTANTE: EL CÓDIGO ABAP SE EJECUTARA EN CADA LECTURA DE CADA PARTIDA INDIVIDUAL. ES IMPORTANTE QUE LOS ACCESOS A BASE DE DATOS ESTEN BIEN OPTIMIZADOS PARA NO PENALIZAR EL RENDIMIENTO DE LOS INFORMES.

Mantenimiento de la vista V_TKALV.

El último paso sera realizar el mantenimiento de la vista donde se controlan los campos que aparecen en el listado de las partidas, y que controla el uso de los catalogos (lo que nos permite seleccionar los campos para su visualización, hacer totales, etc). Para ello, desde la transacción SM34, accedemos al diálogo Datos para la estructura de campos, incluyendo los nuevos campos en la estructura KAEP_COAC.

Los campos siempre hay que añadirlos con Grupo de Campos K (Campos de cliente). En el caso de que la lectura del campo tenga alguna dependencia con otro campo (es necesario que ese campo este leido antes de hacer la lectura del siguiente),  habrá que completar la sección Dependencias de selección.

Por ejemplo, el campo ZZ_CNAME (Nombre del empleado), tiene dependencia del campo PERNR (Número de empleado), que ha de estar leido antes.

Una vez completada esta parametrización, el informe esta listo para ser utilizado. En alguna ocasión, hemos de resetear el buffer ALV para que nos aparezcan los nuevos campos. Esto se hace con el report BALVBUFDEL, tal y como se describe en la nota 122975.

Con esta configuración estamos ampliado la funcionalidad de los informes de partidas abiertas de Controlling, permitiendo más criterios de analisis al usuario final sin un gran esfuerzo de desarrollo.

About these ads
Esta entrada fue publicada en Sap Basis, Sap CO. Guarda el enlace permanente.

Una respuesta a Truco 16. Añadir nuevos campos en informes de partidas de Controlling.

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

Deja un comentario

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