Sobre la actualización automática del registro info ya había hablado en un artículo anterior. Hoy voy a hablar sobre cómo limitar la acción de este parámetro en determinados casos.
Caso
Por defecto, nuestro sistema tiene activada la funcionalidad de
actualización automática de registro info. Para ello se fijaron los valores
propuestos para encargados de compras en el customizing. También se agregó el
parámetro EVO en los parámetros de usuario. Para los que tengáis dudas sobre
estos pasos os recomiendo el artículo acerca de actualización de registros info.
IMG: Gestión de materiales / Compras / Datos de entorno /
Fijar valores propuestos para encargados de compras / Parametrizar valores
propuestos
IMG: Gestión de materiales / Compras / Datos de entorno /
Fijar valores propuestos para encargados de compras / Actualizar
usuarios
Sin embargo, nuestro cliente desea que el registro info no se
actualice automáticamente para materiales del grupo de artículos G, un grupo de
artículos de suministros especial para nuestro cliente. Si mantenemos activada
la actualización de registro info para ellos se crearán nuevos registros info
(que no queremos y llenan la base de datos innecesariamente) y se actualizarán
cada vez que creemos un nuevo pedido de compras para ellos. Además, arrastrarán
la información de la última actualización cada vez que creemos un pedido de
compras.
Solución
Después de realizar una investigación sobre el customizing
descubrimos que SAP no permite hacer una distinción ni por material, ni por
pedido de compras… sobre esta funcionalidad. Así que debemos recurrir a una
ampliación del sistema.
-
Llamamos a las amplicaciones de Compras.
IMG: Gestión de materiales / Compras / Add-ins
empresariales para compras / BAdI: Ampliar procesamiento de pedidos
Enjoy
-
Bajo esta BAdI nos encontramos con la implementación CON_FIN_SUBCONTRACT. Hacemos una copia de ella y la renombramos como queramos, en este ejemplo como Z_PEDIDOS_COMPRAS
-
Bajo la interface de la BAdI buscamos el método PROCESS_ITEM que nos permite acceder a la información de la posición del pedido de compras.
-
Incluimos nuestro código ABAP. Lo que vamos a hacer es
-
Recuperar la información de nuestro material de la posición del pedido de compras. El campo MATKL contendrá la información del grupo de artículos de material.
-
Bloquear la actualización del registro info para los materiales del grupo de artículos G. El campo SPINF es el indicador de actualización de registro info. Debemos borrar el contenido de esta variable si el grupo de artículos es de tipo ‘G’.
-
Actualizar la información de nuevo en la posición del pedido de compras.
-
METHOD if_ex_me_process_po_cust~process_item. DATA: lt_item TYPE mepoitem. * Get data CALL METHOD im_item->get_data RECEIVING re_data = lt_item. * Clear info record update in material group G CHECK lt_item-matkl = 'G'. CLEAR lt_item-spinf. * Update changes CALL METHOD im_item->set_data EXPORTING im_data = lt_item. ENDMETHOD. |
Resultado
-
Creamos un pedido de compras.
IMG: Logística / Gestión de materiales / Compras / Pedido /
Crear / ME21N – Proveedor y centro suministrador conocido
- Vamos a la posición de material y observamos que en la pestaña ‘Datos del material’ el indicador ‘Act. info’ (corresponde a nuestro campo SPINF) está vacío tal y como queríamos. Eso ha provocado que no se actualice ningún registro info ni se recupere la información de ningún registro info.
Por supesto, lo indicado en este artículo se puede aplicar a
otros casos específicos como bloqueo de actualizaciones por tipo de material,
por tipo de pedido, etc. Sólo debemos cambiar nuestro código ABAP y puede que el
método elegido dentro de nuestra BAdI.
Imagen inicial | bovinity
Si este artículo fue útil para ti no olvides compartirlo :-)
Hola Oscar!....
ResponderEliminarOye qué bueno te está quedando este blog...muchas gracias por dejar tu comentario en iniciaBlog.com
Yo tampoco veo necesario las miniaturas ya que inicias tu post con una imagen. Acortar la entrada si pero no veo que tengas que aplicar la miniatura.
Muchas gracias y seguimos conversando.
Jesús González
Perfecto Jesús. Muchas gracias por tu ayuda.
EliminarEsto se hace por configuración con el parámetro EFB.
ResponderEliminarFe de erratas, parametro EVO
ResponderEliminar