Quantcast
Channel: Notas y trucos SAP (Bitacora)
Viewing all articles
Browse latest Browse all 123

Truco 88. Utilidad para carga de condiciones de precio.

$
0
0

Para completar nuestro inicio de año, vamos a hablar de otro de los temas en los que Sap, bajo mi punto de vista, más flojea. En el R3 (ya veremos lo que nos preparan en S4/HANA), las herramientas para la carga y actualización de condiciones de precios (tanto en ventas, compras o en cualquier otro componente que utilice la técnica de condiciones) brillan por su ausencia y producen una gran carga de trabajo para los usuarios.

En una entrada anterior hablamos de la forma de poder copiar condiciones, pivotando sobre uno de los datos maestros al nivel en el que estan definidas las condiciones (ver enlace), lo cual es claramente insuficiente.

copiacond8

Tenemos otras alternativas aparte de la VK11 para crear condiciones (o MEK1 en compras), como son las transacciones VK31/VK32 (requiere parametrización adicional para añadir otras tablas, ver link)  o las V_I7 o V/I5 mediante indices (requiere definir indices para las tablas de condición, lo cual puede afectar al rendimiento del sistema; por estándar se ofrecen muy pocos índices)

condiciones2

El tratamiento de grandes volúmenes de datos es muy farragoso, requiere utilizar componentes adicionales (como Sap Vistex, que es un Addon que se licencia aparte) o realizar desarrollos para poder facilitar la vida a los usuarios. Como consuelo (y esperanza que sea la tónica que siga S4/HANA), en el sistema SAP TM (Transport Management), las herramientas para definición de condiciones han dado un salto cualitativo muy evidente, disponiendo en el estándar la funcionalidad de descargar plantillas de condiciones y realizar su carga directamente utilizando hojas excel.

Antes el dilema de preparar una herramienta para cargar tarifas, os voy a contar uno de los módulos de función que he comprobado que funcionan bien y otras posibles alternativas (como muestra de posibilidades para realizar esta tarea, seguramente habrá otras disponibles).

Alternativa 1. Uso del módulo de función RV_CONDITION_COPY.

Con este módulo de función, podemos fácilmente montar una utilidad Abap para hacer carga masiva de registros de condición. Yo lo he probado personalmente y funciona correctamente. Además, cuando se crean registros de condición cuyos intervalos de validez colisionan con los registros existentes, estos se limitan correctamente.

Condiciones1.png

Este módulo de función ha de usarse de forma conjunta con otros dos para que funcione correctamente:

call function ‘RV_CONDITION_SAVE’.
call function ‘RV_CONDITION_RESET’.

Se puede utilizar tanto para cargar condiciones en ventas (aplicacion V) o compras (aplicación M). En mi ejemplo, lo he utilizado para cargar condiciones de precio de ventas (clase de condición PR00, definidas por organización de ventas, canal y material). Os recomiendo la lectura de documentación del módulo de función, pero lo más importante de la llamada a este MF sería:

  • En la estructura ls_komg tenemos la clave de los registros de condición: por ejemplo, en mi ejemplo estamos llenando la tabla A004  que nos permite definir condiciones por organización de ventas, canal y material. En esta estructura pondremos los valores para el nivel al que estamos definiendo las condiciones.
  • En la tabla copy_records tenemos los valores de la condición (tabla del tipo komv): importe, cantidad o porcentaje, moneda, unidad de medida, cantidad base, etc. Importante el campo KRECH, que indica el tipo de cálculo (según como se haya definido la clase de condición que estemos cargando).

condiciones5

  • En la tabla copy_staffel (tabla del tipo condscale) tenemos los valores de escalados si se definen para la condición.
  • Importante en la llamada al MF indicar el modo de mantenimiento (maintain_mode) y la tabla de condicion que estamos modificando (condition_table). Los números de las tablas los podemos obtener de la secuencia de acceso asignadas a las clases de condición.

Os dejo el link al ejemplo de código programado (ejemplo sencillo de carga de una excel a un ALV y luego carga en base de datos pulsando un botón).

  • Link al código Abap de ejemplo: zpruebas_condiciones. Hay que definir un status llamado MAIN para el programa con los botones y el código de función “PRUEBA” o “DATA_SAVE” para que funcione.
  • Link  a un ejemplo de fichero de carga: plantilla-creacion-pr00.

Resumiendo, el programa nos permite cargar la excel y nos muestra un listado con las condiciones subidas (ahí podríamos haber añadido todas las verificaciones necesarias de los datos cargados, mostrar descripciones, semáforos de resultado de actualización, etc).

condiciones3

Al pulsar el botón Carga BD o Grabar, se realiza la creación de los registros de condición. Podemos consultarlos con la VK12 o directamente a través de la tabla A004.

condiciones4

La herramienta se podría evolucionar con desarrollo para permitir la carga de varias clases de condición, diferentes tablas, etc. Seguro que los abapers nos pueden hacer una verdadera herramienta de gestión de actualización de precios para las necesidades de nuestra empresa.

Otros ejemplos de código:

Alternativa 2. Uso de la Bapi BAPI_PRICES_CONDITIONS.

Una alternativa es utilizar la BAPI_PRICES_CONDITIONS. En principio es más sencilla de utilizar, pero no actualiza los registros de condición existentes para limitar los periodos de validez. Esto puede ser un problema y crear inconsistencias en las tablas.

Alternativa 3. Utilización de LSMW.

Bien con el metodo Direct Input, realizando una grabación o con Idocs podriamos realizar igualmente la grabación de los datos.

Por ejemplo, si usamos idocs:

condiciones6

Habría que mapear el fichero de carga con la correspondiente estructura del documento:

condiciones7

Idem si utilizamos una grabación de batch input de la transacción VK11 o MEk1, por ejemplo:

condiciones9

O el metodo direct input que también esta disponible para cargas iniciales de condiciones:

condiciones8

Condiciones10.png

Que tengáis buena lectura.


Viewing all articles
Browse latest Browse all 123

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>