• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
Twitter Linkedin Instagram
S4PCADEMY_Logo
Twitter Linkedin Instagram
FORMACIÓN SAP

SAP Business One: cómo impedir que los usuarios impriman borradores de documentos

By s4pcademy 


Desde los inicios de SAP Business One, la restricción de la impresión de borradores de documentos (antes de que se agregaran a la base de datos y se validaran o autorizaran adecuadamente) ha sido un tema importante.

Sí, puede hacer que SAP inserte la imagen de fondo «BORRADOR», pero eso es feo, y también he visto casos en los que la imagen en escala de grises no se imprime correctamente y simplemente no es visible. (Preferencias de impresión… “Imprimir borrador de marca de agua en borradores de documentos”).

Para documentar mi enfoque para resolver este problema, dejaré la siguiente opción. Esta solución solo se aplica a los diseños de Crystal Reports, por lo que si aún usa diseños PLD, no funcionará.

Resumen:

  1. Agregue una referencia a la tabla de borrador (ODRF) a su diseño
  2. Cambie el alias de la tabla de ODRF a ODRF_ONLY (haga esto desde el «Experto en base de datos» haciendo clic derecho en la tabla y eligiendo «Cambiar nombre»). Este paso es importante, ya que, de lo contrario, SAP B1 sustituirá la tabla de la base de datos subyacente con la tabla «real» del documento actual, como OINV u OPOR.
  3. Vincule la nueva tabla a su tabla original (por ejemplo, OPOR) con LEFT JOIN, usando estos dos campos: OPOR.DocEntry a ODRF_ONLY.DocEntry y OPOR.ObjType a ODRF_ONLY.ObjType
  4. Cree una nueva fórmula, por ejemplo, «IsDraft» con el siguiente contenido
    {OPOR.DocTotal} = (if isnull({ODRF_ONLY.DocTotal}) then -1 else {ODRF_ONLY.DocTotal})​

    Esto comparará el DocTotal en su tabla «actual», como OPOR con el vinculado a la tabla ODRF. En el caso de un borrador de documento, la tabla «actual» es el mismo ODRF al que está vinculado en la referencia de la tabla ODRF_ONLY, por lo que todos los campos serán idénticos. Si la tabla es diferente, entonces ODRF_ONLY.DocTotal será nulo o (muy probablemente) diferente de su DocTotal actual. Así que la fórmula volverá verdadero si está mirando un borrador de documento y falso si está mirando un documento diferente.

  5. Ahora suprima cualquier sección o campo que no quiera que sea visible, según la nueva fórmula:

¡Misión cumplida! Esto ocultará todo lo que desee si el documento es un borrador.

Por supuesto, es posible que desee bloquear la impresión por completo. Una posibilidad es provocar un error si el documento es un borrador. Considere la siguiente fórmula de «Impresión de bloque» como una posible solución:

NumberVar zero := 0;
if {@IsDraft} then (1/zero)

Esto producirá un error de «división por cero» cada vez que un usuario intente imprimir un borrador de documento… ¿Elegante? Probablemente no. Pero funciona. 🙂

Si alguien tiene una manera más fácil de determinar qué es un borrador de documento, ¡compártala en los comentarios!

¡Feliz año nuevo!

Joerg.




La innovación de SAP en la industria de la salud
Previo
Productos SAP: estado de monitoreo en la nube las 24 horas del día, los 7 días de la semana, ¡durante todo el año!
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.