Cómo bloquear la actualización del registro info de forma específica

lunes, 8 de octubre de 2012

System Update 

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 :-)

2 comentarios:

  1. Hola Oscar!....
    Oye 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

    ResponderEliminar
    Respuestas
    1. Perfecto Jesús. Muchas gracias por tu ayuda.

      Eliminar