Importante
La siguiente respuesta es generada por nuestro Robot de Consultoria-SAP.com denominado “CSAPBOT” usando tecnología de IA -inteligencia artificial. Por lo tanto, puede haber datos incorrectos. No podemos garantizar que la información sea 100% correcta, solo consultores SAP profesionales podrían verificar la información. Muchos consultores leen nuestros foros de Ayuda SAP y lamentablemente pocos ayudan respondiendo y confirmando la información.
Si quieres aprender más y mejorar nuestros sistemas, te esperamos en este artículo.
Buen día,
Gracias por compartir el detalle de tu implementación. Estás intentando reiniciar la estrategia de liberación de una solicitud de pedido (solped) en SAP ECC, fuera de los cambios clásicos de las características definidas en la clase de liberación, utilizando la BAPI BAPI_REQUISITION_RESET_RELEASE como parte de una ampliación en ME52N. Esta situación aplica directamente al módulo MM (Gestión de materiales), específicamente a la gestión de liberaciones de solped.
Tu enfoque es válido desde el punto de vista técnico, pero hay limitaciones funcionales y técnicas en el uso de la BAPI mencionada, y algunos puntos críticos que podrían estar causando que no funcione como esperas. Vamos a repasarlos.
Aspectos clave a tener en cuenta
1. La BAPI BAPI_REQUISITION_RESET_RELEASE solo resetea liberaciones existentes
-
Esta BAPI revierte la estrategia de liberación de una solped que ya tiene liberaciones efectuadas, pero no fuerza el recálculo de la estrategia automáticamente.
-
Es decir, puede cancelar una liberación aprobada, pero no necesariamente vuelve a evaluar si la estrategia cambió.
-
Si no hay liberaciones aprobadas en la posición, la BAPI no hace nada, aunque se ejecute sin errores.
2. No hay recalculo automático de estrategia al modificar campos fuera de las características
-
SAP solo recalcula la estrategia de liberación si se modifican características relevantes para la estrategia, es decir, aquellas incluidas en la clase de liberación (CL24N).
-
Si modificas datos como:
-
Solicitante (AFNAM)
-
Grupo de compras (EKGRP)
-
Texto, fecha, etc.
y estos no forman parte de las características de la estrategia, SAP no recalcula automáticamente la liberación (ni con la BAPI ni manualmente).
3. Cambiar datos que no forman parte de las características no invalida la liberación
-
Esto es comportamiento estándar de SAP, y es intencional.
-
Si necesitas que se reinicie la estrategia al modificar campos no considerados en la estrategia, tienes que forzar manualmente el reinicio de liberaciones y luego reactivar la estrategia.
Posibles soluciones o alternativas
Opción 1: Uso correcto de la BAPI (con verificación de estado)
Asegúrate de que:
CALL FUNCTION 'BAPI_REQUISITION_RESET_RELEASE'
EXPORTING
number = lv_banfn
item = lv_bnfpo
TABLES
return = lt_return.
- Después de la ejecución, debes llamar también a:
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
- Finalmente, puedes consultar
lt_return para ver si realmente se ejecutó alguna acción o fue un llamado vacío.
Opción 2: Fuerza manual de la estrategia con cambio técnico
Una técnica usada por algunos consultores cuando no pueden recalcular la estrategia de forma estándar:
-
Cambiar temporalmente un campo clave que sí esté en las características de la estrategia de liberación, por ejemplo, el valor del importe (PREIS, NETWR) o el grupo de compras (si se pudiera incluir).
-
Esto forzará a SAP a reanular la liberación existente y activar la nueva estrategia, si aplica.
-
Luego puedes devolver el campo a su valor original.
Esta técnica debe ser aplicada con precaución, y validada con los usuarios del proceso, ya que podría generar inconsistencias si no se controla correctamente.
Opción 3: BAdI o User-Exit para reinicio controlado
Podrías utilizar un BAdI o User Exit para implementar lógica que:
-
Detecte el cambio en alguno de esos 15 campos que mencionas.
-
Verifique si hay liberaciones activas.
-
Llame a la BAPI para resetear la liberación.
-
Luego active manualmente (si se requiere) la estrategia de nuevo (esto ya es más complejo).
Posibles puntos de ampliación:
Opción 4: Rediseñar la estrategia incluyendo campos relevantes
Si la lógica del negocio exige que al modificar campos como el solicitante o el grupo de compras se reinicie la estrategia, considera:
-
Crear una característica Z para la estrategia de liberación que agrupe esos campos relevantes.
-
Si el volumen de valores es muy alto, puedes usar valores por rangos, estatus, o bien manejar lógica en la característica con una exit (CL EXIT) para simplificar la cantidad de valores a mantener.
Verificación técnica rápida
-
Verifica en la tabla EBAN que la posición tiene estado de liberación (FRGZU) diferente a vacío antes de ejecutar la BAPI.
-
Ejecuta la BAPI y observa lt_return.
-
Asegúrate de hacer el COMMIT.
Resumen Consultoria-SAP
En SAP ECC, la BAPI BAPI_REQUISITION_RESET_RELEASE no recalcula la estrategia de liberación si no hay cambios en las características que la componen. Por lo tanto, al modificar campos como el solicitante o el grupo de compras, si estos no están incluidos en la clase de estrategia, la estrategia no se reiniciará automáticamente. Para forzar este comportamiento, se recomienda evaluar un rediseño de la estrategia de liberación incluyendo campos relevantes, usar ampliaciones como ME_PROCESS_REQ_CUST o ejecutar la BAPI solo si la posición está en estado liberado. Este proceso corresponde al módulo MM (Gestión de materiales).
Puedes encontrar casos similares e ideas adicionales en los Foros SAP de Consultoria-SAP.com, donde otros consultores han documentado sus estrategias para forzar la liberación según lógica de negocio particular.
¡Estamos aquí para ayudarte en los Foros SAP de Consultoria-SAP!