Me encargaron investigar un tema, pero no estoy seguro de cómo encararlo (si se trata de un tema customizing MM o bien es algo ABAP), por eso les solicito apoyo.
Resulta que cuando el usuario ingresa a crear un material (MM01), el sistema ya le asiga un número:
pero si el usuario cancela:
e ingresa de nuevo a crear un material, ya le asigna otro número:
¿Alguien sabe si hay manera, ya sea del lado customizing MM o exit/BADI abap, de que no se pierda esta numeración cuando el usuario cancela la operación? No conozco mucho MM, aviso de antemano.
Me hiciste probar cómo está en este cliente, y está igual
Encima, llegué a la conclusión de que así actúa el estándar de SAP.
No hay error, es así., y no hay forma de configurar otra cosa, de acuerdo a la información oficial que SAP expone aquí: h_tps://wiki.scn.sap.com/wiki/display/ERPSCM/Transaction+MM01+jumping+the+range+numbers
The System behavior which you are reporting is correct and is accepted as of release 4.x for internal numbering. Since Rel.40A the System fetches the next internal number from number range at start of transaction MM01. It is not possible to use the same number twice, also after you have cancelled the transaction.
Nota SAP
062077 “Info: Internal number assignment is not continuous”
1843002 - Gaps and Jumps in Numbering
504875 - Buffering number ranges
678501 - System standstill, locks on NRIV
¡Cuidado con el tema buffering! En algunos foros (no aquí) recomiendan desactivar el buffer para que SAP no salte números de materiales en el rango. Sin embargo, hay notas de SAP que explican que hacer eso no asegurará que SAP funcione correctamente.
Sólo por las dudas, voy a esperar un día para ver si algún abaper groso hizo algo medio “sucio” para evitar esto XD, de lo contrario mañana mismo te cierro el tema.
@sconoredhot lo veo harto complicado.
Si bien es cierto que se puede hacer una ampliación implícita en el include LMGMMI05 que es donde se busca el número de material al final del todo del MODULE, la solución tiene muchas complicaciones, sobre todo por tema de concurrencia de usuarios.
Los puntos a tener en cuenta en el lugar donde va ubicada la ampliación son:
ya se ha ejecutado la función INTERNAL_MAT_NUMBER que ha cogido un número nuevo, pero si al final usas un número del hueco el nuevo quedará vacío en la tabla, por lo tanto siempre que cojas uno antiguo generarás otro salto
en tu parte, deberías leer la MARA para ver los huecos que hay y elegir uno, pero si en ese momento entra otro usuario haría lo mismo, por tanto, tendrías que bloquear la MARA!! para lectura incluso para que dos usuarios no buscaran el mismo hueco, pero una vez que uno lo encuentra ¿Cómo hacer para que el otro no lo use ? No se podrían buscar huecos en la MARA mientras no se termine de grabar, es decir, que no podrían estar dos usuarios creando materiales.
Gracias por las respuestas amigos, voy a ir por el lado de “no se puede” porque como dicen, tocar algo aquí va a ser meterme en un terreno en donde puedo terminar rompiendo más de lo que arreglo.