Truco 48. Liberación en pedidos de ventas.


Es una consulta bastante habitual: ¿existe una parametrización para definir estrategias de liberación en pedidos de ventas, de forma que las ventas sean autorizadas según determinados criterios, al igual que en los documentos de compras?. La respuesta es NO, aunque disponemos de alternativas para poder configurar algo similar a las estrategias de liberación de compras. Estas son:

  • Utilizar el “Bloqueo de entrega” o el “Bloqueo de factura” para impedir que los pedidos se puedan servir o facturar. Este método no es muy efectivo, ya que cualquier usuario que tenga acceso a la transacción VA02 va a poder quitar el bloqueo. Podriamos quitar la autorización a la transacción, pero no es practico pues los vendedores o administrativos seguro que tendran que poder modificar otras cosas de los pedidos.lib_ventas1
  • Utilización de exits: podriamos establecer una personalización del sistema utilizando los campos de bloqueo en combinación con programación en alguna de las exits disponibles (por ejemplo, include MV45AFZZ, exit USEREXIT_FIELD_MODIFICATION o USEREXIT_SAVE_DOCUMENT), con el proposito de impedir que usuarios no autorizados quiten los bloqueos (y “liberen” los pedidos). Es una solución compleja que requiere programación, aunque podría ser valida. En la programación se podrian incluso incluir tablas Z donde definir valores de clasificación para la liberacion (por importes, por clases de documento, por organización de venta).
  • Utilizar el control de crédito: se definen unos limites de credito para los clientes, que produciran que los pedidos se bloqueen para la entrega. Habrá que liberarlos con las transaccion VKM3.
  • Utilizar los esquemas de status: con los esquemas de status podemos definir un flujo de estados al pedido (a nivel de cabecera o de posición). En cada uno de estos status se puede permitir o impedir operaciones sobre el documento de venta (por ejemplo, no permitir realizar la entrega de mercancia). Igualmente, mediante autorizaciones se puede asignar a los usuarios que status pueden utilizar, de forma que solo los usuarios autorizados podrán establecer el status final de aprobación que permite continuar con el proceso de la orden de venta. Puede ser la solución a nuestro problema, y solo utilizando customizing.lib_ventas2

En nuestro caso, vamos a utilizar esta última opción para establecer nuestra estrategia de liberación en pedidos de venta. Veamos un ejemplo completo definiendo dos pasos de liberación: uno del Supervisor de Zona y otro del Director Regional.

La parametrizacion detallada de la funcionalidad es la siguiente:

Creación del esquema de status.

 A través de la ruta de customizing Comercial –> Ventas –> Documentos de ventas –> Definir y asignar esquema de status podemos acceder a la parametrización (transacción BS01). Los esquemas de status son una funcionalidad utilizada en muchos módulos (CO para las ordenes, PS para los proyectos/peps, PM para las ordenes de mantenimiento, etc).

El esquema de status consiste en una etiqueta con una descripción (Z0000001 – Status Cabecera Pedido Ventas en nuestro caso).

A continuación, en el detalle, se describen cada uno de los estados posibles dentro del esquema, con unos valores de configuración que vamos a explicar a continuación (son los que determinan el comportamiento de estos y el posible flujo para pasar de uno a otro):lib_pvta1

  • NºClasificación: un numerador que nos identifica a cada uno de los status dentro del esquema (en nuestro ejemplo 10, 20, 30).
  • Status: código propio que identifica a cada uno de los status (en nuestro ejemplo Z001, Z002, Z003).
  • Texto Breve: descripcion corta del status.
  • Texto Explicativo: es un flag que nos indica si se ha introducido un texto largo donde explicamos de forma detallada las características del estado.
  • Stat.Ini: indica que el status es inicial. Es decir, cuando creemos un documento que tenga el esquema de status asociado, este será el estado que se le asignará por defecto. Solo puede haber uno.
  • Nºclasif.inferior: status inferior minimo desde el que se puede acceder desde el estado actual (vuelta a status anterior).
  • Nºclasif.superior: status superior máximo desde el que se puede acceder desde el estado actual (cambio a status superior).
  • Clave autorización: podemos indicar aquí una etiqueta. Esta obligará a que el usuario que quiera poner un documento en este status tendrá que tener en su perfil de autorizaciones el objeto B_USERSTAT con el valor indicado aquí. Sino, no podrá liberar el pedido de venta.

En nuestro ejemplo, hemos definido 3 niveles:

  • Z001 – Bloqueo Supervisor Zona: status inicial que quedará asignado al pedido al crearlo. Permite pasar al status superior Z002.
  • Z002 – Bloqueo Director Regional: permite volver al status Z001 o pasar al status superior Z003. Tiene el objeto de autorización Z001 asignado, de forma que solo usuarios con ese valor asignado en el objeto de autorizaciones B_USERSTAT van a poder cambiarlo.
  • Z003 – Liberado – Autorizado: permite volver al status Z002. Tiene el objeto de autorización Z002 asignado, de forma que solo usuarios con ese valor asignado en el objeto de autorizaciones B_USERSTAT van a poder cambiarlo.

En nuestro ejemplo, por la configuración para llegar al status Z003 siempre se tendrá que haber pasado por el Z001 y Z002, por lo que realmente estamos obligando a dos niveles de autorización.

Definición de operaciones permitidas por status.

 En este paso de parametrización definiremos para cada uno de los status que operaciones estan permitidas o restringidas sobre los documentos de ventas. En primer lugar, cuando estemos definiendo los status del esquema, pulsaremos el botón “Tipos de objetos”.lib_pvta2

A continuación marcaremos los objetos relevantes para el control de operaciones en el status. En nuestro caso “Cabecera pedido de cliente” y “Posicion de pedido de cliente”. Una vez realizado este paso, ya podremos configurar las operaciones permitidas por cada status dentro del esquema. Haciendo doble click en cada status accedemos al “Control de Operaciones”. En nuestro ejemplo, para los status Z001 y Z002 impedimos cualquier suministro de mercancía o facturación del pedido.lib_pvta3

Para el status Z003, no hay ningún tipo de restricción (todas las operaciones están permitidas). Se pueden controlar otro tipo de operaciones sobre los documentos de venta que no vamos a ver aquí.

Las operaciones no indicas en el control de operaciones no estan sometidas a ninguna restriccion en los status de usuario.

Asignación del esquema a nivel de cabecera de documento de ventas o posición.

Para que el esquema sea efectivo, hay que asignarlo a una clase de documento de ventas (transacción VOV8) o bien a un tipo de posición (transacción VOV7). El primer caso indica que la liberación será a nivel de cabecera y el segundo a nivel de posición.lib_pvta4

En nuestro ejemplo, hemos seleccionado una liberación por documento. Tendremos que asignar el esquema de status a todas aquellas clases de pedido de venta para los que queramos establecer el control de liberación.

En nuestro ejemplo, hemos elegido la clase de documento TA Pedido estándar. También podriamos haber utilizado esta funcionalidad para autorizaciones especificas de documentos especiales, como abonos/notas de cargo, para obligar a que siempre tengan que ser autorizados de una forma especifica.

Asignación de autorizaciones.

A continuación, tendremos que crear los roles de autorizacion (transacción PFCG) conteniendo el objeto B_USERSTAT para asignarlos a los usuarios autorizados para la liberacion de cada uno de los status.lib_pvta5

La Clave de Autorización asignada coincide con el valor que indicamos en la definicion de los status en el campo con el mismo nombre.

Proceso de liberación.

Una vez creado el pedido de venta, por la parametrización automaticamente se le asignara el esquema de status definido. Para ver la información de status, podemos acceder desde la transacción VA02, a los datos de cabecera, pestaña “Status”.lib_pvta6

Aquí podemos ver que al pedido de venta al crearlo se le ha asignado automaticamente el status de usuario Z001. Si intentamos crear la entrega para el pedido ( y así hacer la salida de mercancia al cliente) con la transacción VL01N, el sistema produce el siguiente mensaje de error:lib_pvta7

Necesitaremos antes “liberar” el pedido cambiando el status al correcto. Para ello, desde la pestaña de status pulsaremos el botón “Status Objeto” y pasaremos al detalle de la información de status, lugar desde el cual realizaremos el cambio (seleccionando el status deseado).lib_pvta8

El cambio de status no estará permitido al usuario sino tiene las autorizaciones oportunas. Igualmente, desde este lugar podemos consultar que operaciones estan bloquedas en cada uno de los status. Por ejemplo, en el status Z002 – BLoqueo Directo Regional, aparecen bloqueada la creacion de entrega, suminitro y facturacion.lib_pvta9

Si vieramos el status Z003 podriamos ver que ya no hay ningun bloqueo, tal y como hemos parametrizado en el esquema de status creado. Una vez llegado a este estado, el pedido esta “autorizado” y se pueden continuar en el los procesos habituales de preparación del suministro, creación de entrega y facturación.

Para poder localizar los pedidos según su status, tenemos disponible una transacción estandar, la V.26 Documentos ventas según status objeto (solo nos permite indicar el status que queremos buscar y nos localiza los documentos que cumplen las condiciones). Sería la herramienta para trabajar en los procesos de liberacion (no permite liberar de forma masiva).lib_pvta12

Una vez indicados los criterios de seleccion, el report nos devuelve la lista de pedidos en el status indicado y nos permite el acceso directo a cada documento para la modificación del status.

Preparación de la liberación masiva de pedidos con un pequeño desarrollo.

Para poner la guinda en el proceso de liberación de ventas podriamos construir una herramienta para que los usuarios pudieran “liberar” de forma masiva los pedidos, ya que puede no ser muy operativo el tener que entrar pedido por pedido, acceder a la sección de status y desde ahí cambiarlos. Como no existe una herramienta estandar para este cometido (por lo menos yo no la conozco),  podriamos hacer un pequeño desarrollo que recuperara la información de los pedidos pendientes, nos mostrase el estado actual y nos permitiese cambiar de estado los registros seleccionados.

Para este desarrollo, podriamos utilizar las tablas:

  • VBAK: cabecera pedido de venta. En el campo OBJNR tengo el número de objeto que me va a permitir leer los status de cabecera.
  • VBAP: posiciones pedido de venta.
  • JEST: status por objeto.
  • JCDS: historial de modificaciones en el status.

 También nos podrían ser utiles los modulos de función, especificos para el tratamiento de los status:

  • STATUS_READ: nos devuelve el status de un documento de venta o de una determinada posicion.lib_pvta11
  • STATUS_CHANGE_EXTERN: funcion para cambiar el status de un objeto (tener en cuenta que se le pasa el codigo de status interno que crea Sap cuando creamos los diferentes status en un esquema de status (ver tabla TJ30T para sacar la equivalencia)).lib_pvta10

Links de interes y bibliografia utilizada:

Gracias al blog http://www.learnsaptips.com/, Anupa Wijesinghe ha eleborado este manual con los pasos a seguir para la configuración de la parametrización:
 
 
Aprovecho para recomendaros la lectura del blog, con gran cantidad de material y tutoriales elaborados por Anupa de gran calidad.
 
 
Anuncios
Esta entrada fue publicada en Sap SD y etiquetada , , , , . Guarda el enlace permanente.

12 respuestas a Truco 48. Liberación en pedidos de ventas.

  1. Oscar dijo:

    Muy buena entrada, una funcionalidad muy interesante y muy bien explicada. Yo también sigo los manuales de Anupa Wijesinghe. Realmente son una gran fuente de información y muy útiles. ¿Para cuándo el siguiente truco?

    • Gracias Oscar.

      Pues el próximo truco hablara de la asignación de autorizaciones a usuarios utilizando el modulo de Organización. No conocia esta funcionalidad hasta hace muy poco.

      ¿Tu que andas cocinando por ahí?

      • Oscarr dijo:

        Pues algunos posts de MM. Modificación de mensajes en compras y opciones de usuario en el maestro de materiales. Y mira por donde, después de escribir el artículo me he dado cuenta de que Anupa tenía uno que explica la funcionalidad. Este Anupa es un crack.

    • Si, tiene un monton de articulos, y siempre en formato documento. Pero no es el unico crack.

      Un saludo.

  2. borofornes dijo:

    Truco muy útil y también visitaré a Anupa Wijesinghe para leer su Blog.
    Gracias otra vez.

  3. Saul Lira dijo:

    Hola tengo Solicitudes de Pedido con estrategia de liberación, el problema es que aunque los roles tiene especificado que código de liberación deben de liberar en el objeto de autorización (M_EINK_FRG) y grupo de liberación (M_EINK_FRG) con el mismo rol, puedo liberar cualquier SolPed, saben que objeto de autorización me falta considerar?

  4. Romina dijo:

    Hola Roberto,

    Llegué a tu página buscando solución a un problema que estoy tratando de resolver. He encontrado muy útil lo que y me doy cuenta que sabes mucho, y debido a eso y la buena voluntad que tienes para responder las consultas (vi tu página de MM y SD) me gustaría comentarte el problema que tengo para ver si se sabes la razón.

    En la empresa donde trabajo implementaron el módulo de transporte (para entregas de ventas y traslados) pero los consultores fueron muy invasivos en la parametrización, lo que ha provocado problemas en MM y SD producto de lo que hicieron.

    Por la parte de SD puntualmente, al modificar pedidos de venta, donde la fecha preferente de entrega es menor a la fecha del día, se comenzó a activar un warning que indica “La fecha se encuentra en el pasado (Por favor, verificar).” Mensaje VD 399.

    Asocié que este mensaje comenzó aparecer porque habían hecho algún cambio en la verificación de disponibilidad, pero al revisar no detecto cambio ahí, y lo peor, es que este mensaje se está activando hasta con pedidos de servicio!! Donde los materiales ni siquiera tienen verificación de disponibilidad.

    Activaron algo nivel de sistema en general pero no tengo idea que ni donde, en SD no detecto nada. En MM vi que cambiaron un parámetro de bloqueo del sistema (De excluyente a posterior) pero eso no lo veo asociado con este problema y ya no sé por donde más buscar.
    Perdón lo extensa de la redacción, pero quería explicarte bien la situación porque no logro encontrar que fue lo que alteraron que está saliendo este mensaje.

    De verdad desde ya muchas gracias.

    Saludos,
    Romina

  5. Nestor dijo:

    Roberto, los pedidos de venta (creados por la VA01) nacen bloqueados debido a que realice los pasos que indicaste por este truco 48, y si me los bloqueo, es decir, cuando quiero ingresarle una factura por la VF01, me muestra el mensaje: “Crear factura no está permitido (Status usuario Z002, objeto VB0000198944000000)”, y esta bien, pero lo que pasa es que al momento de desbloquear o modificar el status con número de clasificación del Z001 al Z002, permite el desbloqueo, pero cuando modifico el status con número de clasificación del Z002 al Z003, también permite realizarlo cuando no debería permitirme si en caso no sea el usuario que liberará el Z002, ya que ambos son diferentes usuarios (OJO que se creó un rol por la PFCG por cada clave de autorización). ¿Que podría estar sucediendo?.

  6. francisco dijo:

    en el reporte de carga de facturas aparece en el estatus de creado pero en las otras facturas aparece contabilizado y no se descarga al facorage. hace falta algo para liberar el pago

    gracias

  7. Katherine Betancourt dijo:

    Hola!

    Excelente aporte. Muchas gracias.

    Actualmente estoy tomando tu ejemplo para configurar la estrategia de liberación de pedidos de venta. Sin embargo, quiero saber cómo hacer la configuración de las claves de autorización, ya que no es un dato que se coloca al momento, sino que, por lo visto, debe configurarse antes para que aparezca en el listado o machcode.

    Mucho agradecería tu pronta y valiosa respuesta.

    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