En nuestro truco de hoy vamos a hablar de la transacción MIGO y de como incluir chequeos propios en la transacción, cuando queramos realizar nuestras propias comprobaciones fuera del estándar.
¿Que es la transacción MIGO?
La transacción MIGO es una transacción enjoy diseñada para realizar los movimientos de material en el sistema (modulo MM). Vino a sustituir a un conjunto de transacciones especializadas en cada clase de movimiento que existían en versiones anteriores.
Por ejemplo, la MB01, MB1A, MB1B, MB1C, son algunas de las transacciones previas.

Transacción MB1A para realizar salidas de mercancía
Todas estas transacciones quedarán obsoletas con S4/HANA y ya no será posible utilizarlas mas.
Cuando Sap desarrolló la MIGO intento mejorar la experiencia de usuario y que la mayoría de operaciones relacionadas con gestión de stocks se pudieran realizar desde una única interfaz de usuario.

Transacción MIGO
La transacción es dinámica y varia su contenido según el tipo de operación y la clase de movimiento de material que estemos realizando. Además, tenemos todos los campos disponibles en una única pantalla con diferentes secciones.
¿Como personalizar la transacción?
Mediante parametrización, se puede modificar el comportamiento de algunos campos, según cada clase de movimiento. Por ejemplo, podemos hacer un campo opcional u obligatorio.

Configuración de campos en la MIGO por clase de movimiento
Las parametrizaciones relacionadas con la MIGO las tenéis en la ruta: Gestión de materiales –> Gestión de stocks e inventario –> Parametrizaciones para transacciones Enjoy –> Parametrizaciones para movimientos de mercancia (MIGO).
Por ejemplo, también podréis hacer obligatorios campos a nivel de cabecera en la transacción.
Ademas, mediante programación podemos en la transacción MIGO añadir nuestro propios campos si fuera necesario. Para ello podéis utilizar la BADI MB_MIGO_BADI que permite realizarlo. Os dejo un vídeo de como hacerlo. En la sección de Bibliografia tenéis dos ejemplos más de personalización utilizando esta BADI.
¿Como incluir nuestras propias validaciones?.
Si lo que necesitáis hacer es añadir verificaciones adicionales en la transacción, la alternativa sería utilizar la BADI MB_MIGO_ITEM_BADI. Algunas consideraciones sobre esta BADI:
- La badi es llamada cuando una nueva linea es insertada en la MIGO o cuando una linea existente se modifica.
- Si los cambios se realizan en la cabecera, no se llama a la BADI si no hay cambios en las posiciones.
- Toda la información de la cabecera y de las posiciones es transferida a la BADI para que pueda ser utilizada para realizar las comprobaciones.
- En la BADI se puede ademas realizar la modificación del almacén o del texto de posición.
En mi ejemplo, estoy verificando que posiciones de pedido que se gestionan con entrega entrante no se contabilice la entrada de mercancía desde la MIGO, sino desde la VL32N.
Estos son los parámetros que se pueden gestionar en la BADI:
En la estructura ET_RETURN podemos pasar los mensajes que queremos que se devuelvan al usuario (E Error, W Warning, etc).
Cuando estoy en la transacción, al intentar hacer el movimiento de mercancía, se realiza la comprobación y se dispara el error:
Podríamos haber utilizado igualmente la BADI MB_CHECK_LINE_BADI método CHECK_LINE, pero a mi me parece más sencilla la implementación que os he mostrado. Podéis ver un ejemplo de implementación en este enlace de implementación.
Espero que os sea de utilidad.
Bibliografia:
https://blogs.sap.com/2013/06/14/how-to-create-a-custom-tab-for-migo-item-details/
Video: Add Custom Tab Screen in MIGO
http://saptechnical.com/Tutorials/ExitsBADIs/MIGO/screenexit.htm
BAdI MB_MIGO_BADI – In the middle of nowhere: http://scn.sap.com/docs/DOC-68084
En el libro “ABAP Development for Materials Management in SAP: User Exits and Badis” de Jürgen Schwaninger (Sap Press), tenemos ejemplos de código de la badi Ejemplos de código de la Badi MB_MIGO_BADI, para añadir campos de cliente en la transacción MIGO así como para realizar chequeos con el método MB_MIGO_ITEM_BADI (páginas 125 a 127). Os recomiendo la lectura de la versión parcial de este libro disponible gratuitamente.