Truco 30. Validaciones en Controlling(CO), Finanzas (FI) , Proyectos(PS).


Al igual que Sap nos permite personalizar nuestro sistema sustituyendo determinados valores en los módulos de Finanzas (FI), Controlling(CO), Proyectos (PS), etc. a través de las sustituciones (ver entradas del blog referentes aquí y aquí), Sap nos ofrece otro mecanismo, llamado Validaciones, que nos permite introducir en el comportamiento estándar del sistema nuestras propias comprobaciones y una respuesta del sistema en forma de mensaje (que podrá ser de advertencia, error, información o cancelación).

Básicamente, las validaciones se componen de diferentes pasos que se ejecutan secuencialmente cuando estemos utilizando los módulos implicados. Cuando se cumple la condición de entrada a ejecutar uno de estos pasos, se realiza la verificación indicada. Si la verificación no se cumple, se lanza el mensaje definido en el paso de la validación, con las características indicadas (advertencia, error, etc.). En las validaciones también podemos utilizar la programación (Exits) para realizar comprobaciones complejas donde deseemos utilizar código Abap.

Las transacciones asociadas para la definición de las validaciones son las siguientes:

  1. Controlling: transacción OKC7. Se transportan con la transacción OKE9.
  2. Finanzas: transacción OB28. Se transportan con la transacción GCT9.
  3. Proyectos: transacción OPSI. Se transportan con la transacción GCT9
  4. Todos los módulos: desde la transacción GGB4 también podemos acceder de forma global a las validaciones, además de las disponibles en otros componentes de Sap diferentes a los mencionados (como Activos Fijos, Contabilidad de Centros de Beneficio – Cebes, etc).

Transacción GGB4 para gestionar de forma global validaciones y sustituciones

El uso de las validaciones lo podemos complementar con la utilización de los Sets (se definen en las transacciones GS01/GS02), que nos permiten darle una forma dinámica a estas comprobaciones. Los sets se mantienen en el sistema productivo (no son parametrización), y se pueden utilizar dentro de las verificaciones de forma genérica (haciendo referencia a su nombre). De esta forma, modificando los componentes de un set podemos variar el funcionamiento de una validación sin necesidad de estar tocando la definición de estas y sin necesidad de estar transportando desde Desarrollo a Productivo con cada cambio.

Ejemplo de validación en Finanzas (FI).

Nuestro cliente nos ha pedido una verificación en el sistema de forma que determinadas cuentas contables (lista de cuentas) no puedan ser utilizadas en las contabilizaciones usando una determinada Clase de Documento contable (la clase de documento SA).

Los pasos que vamos a seguir para parametrizar nuestra validación en el sistema son los siguientes:

  • Creación del Set de Cuentas: con la transacción GS01 vamos a crear un conjunto de cuentas que incluya todas las cuentas que queremos incluir en la comprobación. Esto nos permitirá que cualquier cambio en las cuentas a comprobar será tan sencillo como incluir o sacar una cuenta de este grupo, sin necesidad de tocar nada mas en el sistema. Nota: los sets se definen en cada sistema, aunque hay utilidades accesibles desde la misma transacción GS01/Gs02 para hacer un transporte o copia entre diferentes sistemas / mandantes (opción de menú Utilidades –> Transportar).

Creación de un Set de Cuentas (transacción GS01)

  • Creación de la validación: desde la transacción OB28 crearemos una validación del tipo 2 (posición de documento contable, en el campo llamado Evento). En primer lugar crearemos el registro y en segundo lugar, una vez grabado, lo activaremos introduciendo el valor 1 en el campo Grado Actividad. También se pueden crear validaciones a nivel de cabecera de documento contable (Evento 1) o a nivel de documento completo (Evento 3). Crearemos una única validación donde incluiremos los diferentes pasos de comprobación. En esta lugar de la parametrización se indica la sociedad FI para la que queremos que la validación sea efectiva. Podremos tener la misma validación activa en diferentes sociedades FI.

  • Creación del mensaje (texto) que se mostrará en la validación: con la transacción SE91 crearemos un código de mensaje (dentro de una clase de mensaje existente), donde se introducirá el texto del mensaje que querremos mostrar cuando se cumpla la condición de la validación. Dentro del texto se pueden incluir valores variables usando el carácter “&”.

Creación de mensajes (SE91)

  • Creación del paso de validación: crearemos el paso introduciendo los siguientes elementos:
    • Condición:  es la condición previa que se ha de cumplir para que se verifique la validación. Si las condiciones que indicamos aquí no se cumplen, la transacción de contabilización se ejecutará correctamente y no dará ningún mensaje de error. En nuestro ejemplo, hemos indicado la condición:  BSEG-HKONT IN ZCUENTAS_BLOQUEADAS. Esto hará que la verificación solo se va a lanzar si la cuenta contable del asiento esta dentro del set que hemos definido.
    • Verificación: si la condición que indicamos en este lugar no se cumple, entonces se lanzará el mensaje correspondiente determinado en la pestaña Mensaje. En nuestro caso, la condición indicada ha sido  BKPF-BLART <> ‘SA’. Es decir, solo cuando la clase de documento sea SA se lanzará el correspondiente mensaje. Podríamos utilizar un truco que sería introducir en Condición todo aquello que queremos que se cumpla y luego en verificación introducir una condición que nunca se cumpla (por ejemplo “1” = “2”). Esto hará que siempre se lance el mensaje siempre que la condición se cumpla, sin tener en cuenta lo que hay en verificación que nunca se cumple.

  • Mensaje: seleccionamos el mensaje que queremos mostrar (clase de mensaje, número de mensaje y tipo de mensaje). En nuestro caso, es un mensaje de Error. Observar como utilizamos los campos variables que queremos que se muestren en el mensaje (sustituirán al valor &).

  • Transporte de la validación: una vez creada la validación y verificada correctamente en el sistema de desarrollo, la transportaremos utilizando la transacción GCT9.

La validación esta activa en el sistema. Cuando intentamos hacer una contabilización que cumple las condiciones de la validación, nos aparecerá el siguiente mensaje de error:

Al igual que las sustituciones, las validaciones son un recurso que se utiliza con frecuencia en todas las instalaciones Sap. Y una herramienta que nos permite solucionar muchas solicitudes de los usuarios sin necesidad de grandes complejidades.

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

13 respuestas a Truco 30. Validaciones en Controlling(CO), Finanzas (FI) , Proyectos(PS).

  1. Julieta dijo:

    Muy bueno el artículo

  2. Roxi dijo:

    Estimado Roberto:

    Tengo una consulta de FI espero puedas responderme. Creo que no te llegó mi correo.

    Cuando necesito compensar me sale un error en la contabilización automáticamente, pues me está jalando una cuenta de ganancia por diferencia de cambio que ya no se usa y no me permite modificar. Por el momento la solución que le hemos dado es desbloquear la cuenta antigua para que nos permita compensar ya que por algún motivo el sistema nos jala la cuenta antigua y debería jalarnos la nueva. Quisiera por favor me des alguna alternativa de solución para que esto no siga sucediendo, espero puedas ayudarme.
    Mil gracias

    • Hola Judith:

      La parametrización de las cuentas para las diferencias de cambio se realiza en el siguiente lugar:

      1) Accedes a la transacción FBKP (lo tendras que hacer en el sistema de desarrollo y luego transportar la parametrización a productivo).

      2) Una vez dentro de la transacción FBKP, opción Contabilizaciones automáticas.

      3) Te saldra una lista, te mueves hacia abajo y seleccionas la opción “Diferencias de cambio”.

      4) Te saldran diferentes operaciones, revisalas y cambia las cuentas donde sea necesaria. Para cada operación, indicaras el plan de cuentas (el que utiliceis en tu empresa) y una vez en el detalle, en la opción cuentas.

  3. Jorge dijo:

    Estimado Roberto, en la transacción OPSI hay la posibilidad de crear validaciones para consistencia de estructura de proyectos. Esta validación se puede activar para que al momento de grabar un proyecto de mensaje de inconsistencia? Estoy queriendo que la división y centro sea el mismo en todos los objetos del proyecto (Definición de proyecto, PEPs, Grafo y Operaciones.
    Gracias de antemano por la ayuda.

    • Hola Jorge:

      Si, con la OPSI puedes poner validaciones para verificar que la estructura de tu proyecto siga determinadas pautas o bien comprobar valores. Seguramente tengas que incluir en la exit la validacion por programacion para leer toda la estructura del proyecto y verificar en todas las posiciones esa informacion de division y centro.

      En este caso, en la programacion, con la BAPI:

      CALL FUNCTION ‘BAPI_PROJECT_GETINFO’
      EXPORTING
      with_subtree = ‘X’
      IMPORTING
      return = zreturn
      TABLES
      i_wbs_element_table = zi_wbs
      e_wbs_element_table = ze_wbs
      e_wbs_hierarchie_table = ze_hier.

      Puedes leer la estructura del proyecto, su arbol jerarquico e ir haciendo las comprobaciones.

      Con las sustituciones tambien puedes forzar que al crear un proyecto y luegos sus peps, estos hereden las propiedades del “padre” y asi conseguir que se cumpla tu requerimiento (ayuda al usuario con esta tarea).

      • Jorge dijo:

        Estimado Roberto, tres cosas a tomar en cuenta:
        1. He estado buscando user-exits y BADIs que se ejecuten al momento de grabar un proyecto, pero no he logrado ubicarlo todavía. Tú conoces alguno (user-exit o BADI)?
        2. La BAPI no me sirve cuando se está creando un proyecto, ya que esta trae información de proyectos creados.
        3. No olvides que necesito validar los centros y divisiones el momento de grabar el proyecto (creación o modificación).
        Gracias de antemano por la ayuda.

  4. Janine dijo:

    Hola Roberto, se que lo que voy a preguntar no tiene nada que ver con el tema, sin embargo, no encontre en tu blog la categoria SAP PS, no se si me puedes dar una mano pero necesito conocer sobre el sistema de información de Proyectos (PS), Hay muchos reportes y algunos no pueden ser bajados a una hoja Excel u otro formato de exportación para luego ser manejados externamente. Por ejemplo informes de proyectos mercantiles- costes – referente al presupuesto.
    Requiero obtener esa información en una hoja Excel, puedes orientarme por favor. Gracias.anticipadas.

    Janine

  5. Marci dijo:

    Hola Roberto,
    si yo tengo una validación con muchos pasos por ejemplo en el paso 1 tengo las cuentas de la 1 a la 3 y en el paso de 2 de la cuenta 4 a la 6. Al momento de contabilizar si entra al primer paso sale de la validación?? o siempre pasa por todos los pasos?

    • Hola Marci:

      Se ejecutan todos los pasos, de forma secuencial.

      Ten en cuenta que cada paso es independiente y tiene sus propias condiciones. Lo único que ocurre es que si te da un mensaje de error, pues no continuara con la siguiente validación, pues te mostrará el mensaje y se parara.

      Un saludo.

      • José Gregorio Sira Parra dijo:

        Roberto espero te encuentres bien, quisiera me ayudaras en lo siguiente:
        Genero automáticamente un mensaje de impresión al momento de guardar en la VL01N del movimiento 601. Todo esto lo hace perfecto. Lo que me esta presentando inconvenientes es que necesito se agrupen por almacén y me salga un impresión para cada almacén con solos los materiales pertenecientes a él. En esto momentos los mas que e logrado es que me genere un mensaje por posición pero la idea por ejemplo es que si tengo os materiales del almacén 2 y 1 solo material de almacén 1 el sistema me genere 2 impresiones una con un solo material y la otra con dos.

        Mucho sabre agradecer tu ayuda

  6. Ricardo Sanchez dijo:

    Buenos Días
    Tengo una duda yo se que no esta relacionado con el tema pero no encuentro un User Exit o una Badi en el cual pueda controlar en la F-58 que al momento de tratar las partidas que al usuario solo le salgan las partidas vencidas o que no pueda tratar partidas que no estén vencidas, no se si me doy a entender

    Muchas gracias por sus comentarios

    Ricardo

  7. Emma MAta dijo:

    Buenas tardes
    Necesito hacer una validacion para que el campo Referencia no permita caracteres especiales, *+,.
    Como podría hacerla, he probado con set y Like y no logro hacer que funcione…

    Gracias

  8. Maria Eugenia dijo:

    Excelente artículo.
    Como puedo hacer para modificar la clase de mensaje. No me permite seleccionar una Z como aparece en el ejemplo (ZSISTEMAS)

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