Las sustituciones y validaciones de SAP FI son una herramienta estándar muy útil para cumplir con las necesidades de los usuarios claves de contabilidad sin necesidad de lógica ABAP demasiado elaborada.

En esta entrada vamos a poner en práctica las validaciones y sustituciones aplicables a los documentos de SAP FI. Tanto la regla de validación como la de sustitución tienen como objetivo la comprobación (o modificación) de los datos introducidos en campos determinados.

Las reglas de validación, VERIFICAN, tras el cumplimiento de unas condiciones previas establecidas, que el valor de un campo objetivo cumple con las reglas establecidas, generalmente no pudiendo continuar con el documento hasta su cumplimentación.

Las reglas de sustitución van un paso más allá, al SUSTITUIR, tras el cumplimiento de unas condiciones previas establecidas, el valor introducido en un campo objetivo por otro valor establecido en la regla de sustitución.

Ambas utilizan la lógica booleana pudiendo ser lógica muy sencilla o lógica que requiera de una user exit. Las validaciones y sustituciones se pueden activar en 3 puntos llamados eventos: cabecera (para validar los datos de cabecera de un documento), posición (para validar los datos de una posición del documento) y documento completo (para validar los datos de todas las posiciones del documento).

Configuración de validaciones (OB28) y de sustituciones (OBBH)

1.- Clicamos en “Entradas nuevas”

3.- Insertamos la información necesaria:

  • Sociedad
  • Evento
  • Nombre de la validación
  • Descripción de la validación
  • Grado de actividad

A continuación, explicaremos con ayuda de varios ejemplos los tipos de reglas creadas, desglosándolos en sus diferentes secciones:

Ejemplo 1: Validación sin User Exit

Escenario: Queremos que al contabilizar en la transacción FB60 para la sociedad ZORK (condición), se verifique que el campo de referencia no está vacío (verificación), y que si esta no se cumple (es decir que el campo este vacío) saque un mensaje.

  • Condición: Se establece la condición que requiere el paso para ejecutarse. Si la condición se cumple se pasará al paso de verificación.

(BKPF-BUKRS = ‘ZORK’ AND BKPF-TCODE = ‘FB60’)

  • Verificación: Se especifica la verificación que debe cumplirse para ejecutar el programa sin errores. Si la verificación no se cumple, el sistema mostrará un mensaje de error.

(BKPF-XBLNR <> ”)

  • Mensaje: Se define el mensaje que se muestra al usuario en caso de que la verificación definida anteriormente no se cumpla.

(“No se ha introducido Referencia a la factura”)


Ejemplo 2: Validación con User Exit

Escenario: Queremos que al contabilizar en la transacción FB70 para las cuentas de deudor se valide que las partidas abiertas previas del deudor no están vencidas e impagadas por más de 30 días.


  • Condición: (SYST-TCODE = ‘FB70’ AND BSEG-KOART = ‘D’)
  • Verificación: (U102)

*Este tipo de validación al no ser tan simple requiere una user exit. Es necesario aplicar lógica ABAP haciendo una consulta a la tabla BSEG. En la lógica se hará el cálculo de comprobación de partidas abiertas previas del deudor. Para eso utilizaremos el siguiente botón y escribiremos dentro el código correspondiente.


Si el programa encuentra partidas abiertas vencidas por más de 30 días devolverá un FALSE y, por lo tanto, sacará el mensaje de error.

  • Mensaje: Se define el mensaje que se muestra al usuario en caso de que la verificación definida anteriormente no se cumpla.

(“Cliente con facturas pendientes de pago”).

Ejemplo 3: Sustitución

Escenario: Queremos que al contabilizar para la sociedad ZORK y no insertemos ninguna clave de banco (condición), se asigne por defecto LABO al campo banco propio (sustitución).


  • Condición: Se establece cuál será la condición para que se inicie la sustitución de un campo. En el caso de que la condición se cumpla se sustituirá el campo que se definirá previamente como sustituible.

(BKPF-BUKRS = ‘ZORK’ AND BSEG-HBKID = ‘ ‘)

  • Campo a sustituir: Se define cual es el campo sustituible y como se hará la sustitución. Puede ser una sustitución por un valor fijo, por valor de otro campo o por un valor obtenido a través de una rutina ABAP.

(Campo Banco propio se sustituye por el valor constante LABO)

Por último, presentamos la forma de localizar las validaciones o sustituciones que han actuado durante la contabilización de un documento FI con ayuda de la función de traza. Utilizamos los ejemplos 2 y 3 para su demostración:


Sustitución

Primero debemos fijar la traza para la regla. Estando situados en el nombre de la regla de sustitución, clicaremos en “TRACE ON” y seguido en “Conectar trace (todos)”.


Así, al crear un documento en el que la regla de sustitución deba actuar, es decir, contabilicemos un documento en el que falte la clave de banco, nos saltará la traza de la regla de sustitución y podremos comprobar que la sustitución se ha efectuado.

En este caso se ve claramente como la regla de sustitución ZORK1, en el PASO 001 devuelve un false. Esto indica que la sustitución se ha tenido que realizar ya que no hemos introducido la clave de blanco en el correspondiente campo del documento.


Validación

Entraremos en la regla de validación F-90 y fijaremos la traza igual que antes.

Al ir a la transacción FB70 y hacer una factura para un deudor que tenga partidas abiertas con vencimiento de más de 30 días, se ejecutará la validación, y por lo tanto saltará el mensaje de error.


Seguido nos saltará la siguiente pantalla con la traza, y sabremos a que regla pertenece la validación presentada.

Si te interesa nuestro servicio de SAP Finanzas o tienes alguna duda, contacta con nosotros o déjalo en comentarios.