Contabilización reservas

Hola a todos!,

Tengo una duda, al momento de contabilizar una reserva ya sea por medio de la trx MB26 o MIGO el sistema permite modificar la cantidad, es decir, si la reserva presenta una salida de mercancía hacia un centro de costo (Mov 201) por una cantidad de una unidad, al momento de contabilizar esa cantidad puede ser cambiada incluso por una cantidad mayor 100 por ejemplo. (contabilizara siempre y cuando exista stock en los almacenes). ¿Existe un punto de configuración para controlar eso? o ¿se debe implementar algún user exit ?

En SAP ERP (ECC o S/4HANA), para controlar la modificación de cantidades al momento de contabilizar una reserva (ya sea a través de la transacción MB26 o MIGO) y evitar que los usuarios cambien la cantidad reservada original, puedes utilizar varias opciones:

Opción 1: Configuración de Tolerancias

SAP permite configurar tolerancias para movimientos de mercancías. Aunque esta configuración no evita completamente la modificación de cantidades, puedes establecer límites que controlen cuánto puede variar la cantidad ingresada.

  1. Acceder a la Configuración de Tolerancias:

    • Ve a SPRO > Gestión de Materiales > Gestión de Inventarios y Verificación de Facturas > Movimiento de Mercancías > Definir Límites de Tolerancia > Configurar Límites de Tolerancia para Cantidad de Movimiento.
  2. Configurar las Tolerancias:

    • Configura los límites de tolerancia según tus necesidades para el tipo de movimiento 201 (u otros que apliquen).

Opción 2: Utilizar User Exits o BadIs

Para un control más preciso y específico, puedes implementar un User Exit o BAdI (Business Add-In) que verifique y restrinja la modificación de cantidades al momento de contabilizar las reservas.

User Exit: MBCF0007

  1. Acceder a la Transacción SMOD:

    • Ingresa la transacción SMOD para buscar el User Exit adecuado.
  2. Buscar el Exit MBCF0007:

    • El User Exit MBCF0007 (User Exits: Material Movements) es adecuado para este tipo de control. Este Exit se utiliza para verificar y modificar los datos de movimiento de material antes de la actualización.
  3. Implementar el Exit:

    • Ve a la transacción CMOD para implementar el User Exit.
    • Crea un proyecto y asigna el User Exit MBCF0007 a tu proyecto.
    • En el código de la implementación, agrega la lógica para verificar y restringir la modificación de cantidades.

BAdI: MB_MIGO_BADI

  1. Acceder a la Transacción SE18:

    • Ingresa la transacción SE18 para buscar el BAdI adecuado.
  2. Buscar el BAdI MB_MIGO_BADI:

    • El BAdI MB_MIGO_BADI (BAdI: MIGO) permite controlar diversos aspectos de la transacción MIGO, incluyendo la validación de cantidades.
  3. Implementar el BAdI:

    • Ve a la transacción SE19 para implementar el BAdI.
    • Crea una nueva implementación y selecciona MB_MIGO_BADI.
    • En el método LINE_MODIFY, agrega la lógica necesaria para verificar y restringir las cantidades.

Ejemplo de Implementación

Implementación en el Exit MBCF0007

* Include in CMOD project
FORM userexit_save_document_prepare.

  DATA: lv_qty_reserved TYPE mseg-menge.

  LOOP AT xekpo WHERE bwart = '201'.
    SELECT menge INTO lv_qty_reserved
      FROM resb
      WHERE rsnum = xekpo-rsnum
        AND rspos = xekpo-rspos.

    IF xekpo-menge > lv_qty_reserved.
      MESSAGE e001(zz) WITH 'Quantity exceeds reservation amount'.
    ENDIF.
  ENDLOOP.

ENDFORM.

Implementación en el BAdI MB_MIGO_BADI

METHOD if_ex_mb_migo_badi~line_modify.

  DATA: lv_qty_reserved TYPE resb-menge.

  IF is_goitem-bwart = '201'.
    SELECT menge INTO lv_qty_reserved
      FROM resb
      WHERE rsnum = is_goitem-rsnum
        AND rspos = is_goitem-rspos.

    IF is_goitem-menge > lv_qty_reserved.
      MESSAGE e001(zz) WITH 'Quantity exceeds reservation amount'.
    ENDIF.
  ENDIF.

ENDMETHOD.

Resumen

Para controlar la modificación de cantidades al contabilizar reservas en SAP ERP:

  1. Configurar Tolerancias:

    • Establecer límites de tolerancia para los movimientos de mercancías.
  2. Implementar User Exits o BAdIs:

    • Utilizar User Exit MBCF0007 o BAdI MB_MIGO_BADI para implementar lógica que restrinja la modificación de cantidades.

Ambos métodos permiten tener un mayor control sobre cómo se gestionan las cantidades al contabilizar reservas y aseguran que los usuarios no puedan modificar las cantidades reservadas originalmente.

Si tienes más preguntas o necesitas más detalles sobre algún paso específico, no dudes en preguntar. ¡Estoy aquí para ayudarte!