Compartir a través de


El proceso de regeneración de MRP en Fabricación deja de responder, bloquear o no se procesa completamente en Microsoft Dynamics GP

En este artículo se describe cómo resolver los problemas al ejecutar el proceso de regeneración de planificación de requisitos de materiales (MRP) en el ámbito de la fabricación.

Se aplica a: Microsoft Dynamics GP
Número de KB original: 942508

Síntomas

Al usar el proceso de regeneración de planificación de requisitos de materiales (MRP) en fabricación en Microsoft Dynamics GP 9.0, puede producirse uno de los siguientes síntomas:

  • El proceso de regeneración del MRP deja de responder.
  • El proceso de regeneración de MRP se bloquea.
  • El proceso de regeneración de MRP no se ha completado.

Causa

Este problema puede deberse a una o varias de las razones siguientes:

  • Las restricciones de día inactivo en MRP se establecen incorrectamente.

  • Los códigos de bajo nivel se establecen incorrectamente.

  • Hay una lista recursiva de materiales (BOM).

  • Hay varios registros en la tabla MSSP0230.

  • Hay un identificador de empresa incorrecto en la tabla MSSP0230.

  • Hay un registro bloqueado en la seguridad de MRP.

  • Hay pedidos de venta, pedidos de compra o pedidos de fabricación que tienen fechas necesarias que se encuentran fuera de los intervalos de fechas de MRP aceptables.

Solución

Nota:

Antes de seguir las instrucciones de este artículo, asegúrese de que tiene una copia de seguridad completa de la base de datos que puede restaurar si se produce un problema.

Resolución 1: Las restricciones de día inactivo en MRP se establecen incorrectamente

En la ventana Valores predeterminados de preferencias de MRP, el campo Restricción de día inactivo utiliza los días inactivos del calendario de trabajo para determinar el plazo de entrega de los componentes. El proceso de regeneración de MRP se bloquea si se cumplen las condiciones siguientes:

  • La opción Ninguno está seleccionada en Configuración de días inactivos para toda la empresa en la ventana Calendario de la tienda.
  • El valor del campo Restricción de día inactivo en la ventana Valores predeterminados de preferencias de MRP se establece en algo distinto de Ninguno.

Para resolver este problema, siga estos pasos en función de la versión de Microsoft Dynamics GP que use.

Microsoft Dynamics GP 10.0

  1. En Microsoft Dynamics GP 10.0, apunte a Herramientas en el menú Microsoft Dynamics GP, luego apunte a Configurar, después a Fabricación, seguidamente a Valores del Sistema y finalmente seleccione Calendario.

  2. Compruebe cuál de las siguientes opciones está seleccionada en Configuración de Día de Inactividad de toda la empresa. Las siguientes opciones se encuentran en Configuración del Día de Descanso de Toda la Empresa:

    • None
    • Solo domingos
    • Sábados y domingos
  3. En el menú Herramientas, seleccione Configuración, Fabricación, Valores predeterminados del sistema y, a continuación, seleccione MRP.

  4. Determine si la opción en la lista desplegable de Restricciones de Días Inactivos coincide con la opción de Días Inactivos del Calendario de la Tienda. En la lista siguiente se muestran las opciones Shop Calendar Down Days que coinciden con las opciones de Restricciones de día abajo:

    • La opción Ninguno: esta opción puede contener la configuración Ninguno, los sábados y domingos o solo los domingos.
    • La opción Hecho - esta opción puede contener los sábados y domingo o la configuración Solo domingos.
    • La opción Comprado : esta opción puede contener los sábados y domingos o la configuración Solo domingos.
    • La opción Ambos: esta opción puede contener los sábados y domingos o solo los domingos.

Microsoft Dynamics GP 9.0

  1. En Microsoft Dynamics GP 9.0, señale a Configurar en el menú Herramientas, señale a Fabricación, señale a Valores predeterminados del sistema, y luego seleccione Calendario.

  2. Compruebe cuál de las siguientes opciones está seleccionada en Configuración de Día de baja para toda la empresa. A continuación se muestran las opciones en Configuración del día de baja para toda la empresa:

    • None
    • Solo domingos
    • Sábados y domingos
  3. En el menú Herramientas, seleccione Configuración, Fabricación, Valores predeterminados del sistema y, a continuación, seleccione MRP.

  4. Determine si la opción en la lista desplegable de Restricciones de Días Inactivos coincide con la opción Días Inactivos del Calendario de la Tienda. En la lista siguiente se muestran las opciones de Días de cierre del calendario de la tienda que coinciden con las Restricciones de días de inactividad:

    • La opción Ninguno: esta opción puede contener la configuración Ninguno, la configuración de Sábados y Domingos, o la configuración Solo Domingos.
    • La opción Made: esta opción puede contener los sábados y domingos o los ajustes Solo domingos.
    • La opción Comprado: Esta opción puede contener los sábados y domingos o la configuración de solo domingos.
    • La opción Ambos: esta opción puede contener los sábados y domingos o solo los domingos.

Resolución 2: Los códigos de bajo nivel se establecen incorrectamente

La ventana Datos de ingeniería de elementos contiene un código de bajo nivel para cada componente. El código de bajo nivel es el nivel más profundo del elemento en cualquier BOM. Debe ejecutar la utilidad MRP Low-Level Codes para determinar si los códigos de bajo nivel son correctos. Puede ejecutar la utilidad MRP Low-Level Codes de una de las maneras siguientes:

  • En Microsoft Dynamics GP
  • Manualmente mediante el Analizador de consultas SQL o mediante SQL Server Management Studio

Ejecución de la utilidad Códigos de bajo nivel en Microsoft GP

  1. Siga uno de los pasos en función de la versión de Microsoft Dynamics GP que use:

    • En Microsoft Dynamics GP 10.0, señale la opción Herramientas en el menú Microsoft Dynamics GP, señale Utilidades, señale Fabricación, y luego seleccione Códigos de bajo nivel de MRP.
      • En Microsoft Dynamics GP 9.0, seleccione Utilidades en el menú Herramientas , seleccione Fabricación y, a continuación, seleccione Códigos de bajo nivel de MRP.
  2. En el campo Número máximo de niveles para cualquier BOM , escriba 110.

  3. Seleccione Generar.

Ejecución de la utilidad de código de bajo nivel en el Analizador de consultas SQL o en SQL Server Management Studio

Ejecute el siguiente script en la base de datos de empresa en el Analizador de consultas SQL o en SQL Server Management Studio.

execute mbomLLCUtility 110

Resolución 3: BOM recursivo

Una lista de materiales recursiva es un componente de ella misma. Se puede asignar directamente como componente o se puede asignar a un subensamblaje asignado a la lista de materiales.

Cómo determinar si hay una BOM recursiva

  1. Ejecute la siguiente instrucción en la base de datos de empresa en el Analizador de consultas SQL o en SQL Server Management Studio.

    Select * from BM010115 where CPN_I=PPN_I
    
  2. Si se devuelven los resultados, debe quitar la pieza del inventario de la lista de materiales.

    Para quitar la lista de materiales recursiva, ejecute la siguiente instrucción en la base de datos de la empresa en el Analizador de consultas SQL o en SQL Server Management Studio.

    Nota:

    Antes de seguir las instrucciones de este artículo, asegúrese de que tiene una copia de seguridad completa de la base de datos que puede restaurar si se produce un problema.

    Delete BM010115 where PPN_I = CPN_I
    

Cómo determinar si la lista de materiales está asignada a un subensamblaje que, a su vez, está asignado a la lista de materiales

  1. Compruebe que se ejecutó la utilidad Código de Bajo Nivel.

  2. Ejecute la siguiente instrucción en la base de datos de empresa en el Analizador de consultas SQL o en SQL Server Management Studio.

    Select * from IVR10015 where LLC=110
    

    Si se devuelven registros, el elemento enumerado es primario. Sin embargo, en algún lugar de su estructura BOM, el mismo número de pieza aparece como un componente.

  3. Quite el subensamblaje que contiene el elemento que está en cuestión.

    1. En el menú Tarjetas , seleccione Fabricación y, a continuación, seleccione Lista de materiales.
    2. Introduzca el número de lista de materiales que devuelve el script en el campo Número de elemento.
    3. En la Vista de árbol, expanda cada subensamblaje y, a continuación, determine qué componentes están debajo de cada subensamblaje.
    4. Quite el subensamblaje que contiene el elemento que está en cuestión.

Resolución 4: Existen varios registros en la tabla MPPS0230

La tabla MPPS0230 es la tabla predeterminada preferencias de MRP. La tabla MPPS0230 solo debe contener una línea.

  1. Ejecute la siguiente instrucción en la base de datos de empresa en el Analizador de consultas SQL o en SQL Server Management Studio.

    Select * from MPPS0230
    
  2. Si esta instrucción devuelve más de una fila, debe determinar qué línea es la línea incorrecta. A continuación, debe eliminar esta línea de la tabla.

  3. Asegúrese de que la línea restante tenga el identificador de empresa correcto. Para ello, siga los pasos descritos en la sección Resolución 5 .

Resolución 5: La tabla MPPS0230 tiene un identificador de empresa incorrecto

  1. Ejecute el siguiente script en la base de datos DYNAMICS en el Analizador de consultas SQL o en SQL Server Management Studio para determinar el identificador de empresa correcto para la base de datos.

    Select * from SY01500
    
  2. Busque el campo CMPANYID que corresponde con el campo CMPNYNAM con el que tiene problemas en MRP.

  3. Ejecute la siguiente instrucción en la base de datos de empresa en el Analizador de consultas SQL o en SQL Server Management Studio.

    Select * from MPPS0230
    
  4. Compruebe que el campo CMPANYID es correcto en función del resultado que se devolvió de la tabla SY01500 en el paso 1.

  5. Si el identificador de empresa es incorrecto en la tabla MPPS0230, ejecute el siguiente script en la base de datos de empresa en el Analizador de consultas o en SQL Server Management Studio.

    /******************************************************************************/ 
    /* Description: */ 
    /* Updates any table that contains a company ID or database name value */ 
    /* with the appropriate values as they are stored in the DYNAMICS.dbo.SY01500 table */ 
    /* */ 
    /******************************************************************************/ 
    if not exists(select 1 from tempdb.dbo.sysobjects where name = '##updatedTables') 
    create table [##updatedTables] ([tableName] char(100)) 
    truncate table ##updatedTables 
    
    declare @cStatement varchar(255) 
    
    declare G_cursor CURSOR for 
    select 
    case 
    when UPPER(a.COLUMN_NAME) in ('COMPANYID','CMPANYID') 
    then 'update '+a.TABLE_NAME+' set '+a.COLUMN_NAME+' = '+ cast(b.CMPANYID as char(3)) 
    else 
    'update '+a.TABLE_NAME+' set '+a.COLUMN_NAME+' = '''+ db_name()+'''' 
    end 
    from INFORMATION_SCHEMA.COLUMNS a, DYNAMICS.dbo.SY01500 b, INFORMATION_SCHEMA.TABLES c 
    where UPPER(a.COLUMN_NAME) in ('COMPANYID','CMPANYID','INTERID','DB_NAME','DBNAME', 'COMPANYCODE_I') 
    and b.INTERID = db_name() and a.TABLE_NAME = c.TABLE_NAME and c.TABLE_CATALOG = db_name() and c.TABLE_TYPE = 'BASE TABLE' 
    
    set nocount on 
    OPEN G_cursor 
    FETCH NEXT FROM G_cursor INTO @cStatement 
    WHILE (@@FETCH_STATUS <> -1) 
    begin 
    insert ##updatedTables select 
    substring(@cStatement,8,patindex('%set%',@cStatement)-9) 
    Exec (@cStatement) 
    FETCH NEXT FROM G_cursor INTO @cStatement 
    end 
    DEALLOCATE G_cursor 
    
    select [tableName] as 'Tables that were Updated' from ##updatedTables 
    

Resolución 6: Un registro está bloqueado en la seguridad de MRP

Los registros bloqueados pueden hacer que MRP se congele cuando ejecute el proceso de regeneración de MRP.

  1. En el menú Transacciones , seleccione Fabricación, MRP y, a continuación, seleccione Seguridad.

    Se muestran todas las sesiones activas que ejecutan MRP. Si actualmente no está ejecutando el proceso de regeneración de MRP, no debería haber ningún registro en esta tabla.

  2. Si no está ejecutando el proceso de regeneración de MRP y tiene un registro (o registros) aquí, elimine esta línea.

  3. Compruebe la seguridad del pedido planificado del sistema de planificación de recursos de fabricación (MRP). Para ello, seleccione Fabricación en el menú Transacciones, seleccione MRP y, a continuación, seleccione Seguridad de pedidos planeados. MRP Planned Order Security visualizará los pedidos planificados bloqueados por otros procesos.

  4. Si no está ejecutando el proceso de regeneración de MRP y tiene un registro (o registros) aquí, elimine esta línea.

  5. Compruebe otras ventanas de seguridad de fabricación para determinar si los registros necesarios para que MRP se vuelvan a generar no estén bloqueados. La lista siguiente es las distintas ventanas de seguridad de fabricación en las que puede encontrar registros bloqueados:

    • En el menú Transacciones , seleccione Fabricación, Pedido de fabricación y, después , Seguridad. Solo los pedidos de fabricación que están activos actualmente pueden aparecer en la ventana. Un pedido de fabricación activo es un pedido de fabricación en el que un usuario está trabajando actualmente y que se abre en una ventana Fabricación. Si hay pedidos de fabricación que actualmente no están activos, elimínelos.
      • En el menú Transacciones, seleccione Fabricación, Lista de materiales y, después, Seguridad. Las listas de materiales se bloquean cuando los usuarios trabajan con ellas. Además, las listas de materiales se bloquean cuando se abren en una ventana Fabricación. Si hay listas de materiales que no están activas en este momento, bórrelas.
      • En el menú Transacciones, seleccione Fabricación, Enrutamiento y, a continuación, Seleccione Seguridad. Las rutas se bloquean cuando los usuarios trabajan con ellas. Además, las rutas de fabricación se bloquean cuando se abren en una ventana de fabricación. Si hay enrutamientos que actualmente no están activos, elimínelos.
      • En el menú Transacciones, seleccione Fabricación, WIP y, a continuación, seleccione Seguridad TRX. Las transacciones de trabajo en curso (WIP) se bloquean cuando los usuarios trabajan con ellas. Además, las transacciones WIP se bloquean cuando se abren en una ventana de Fabricación. Si hay transacciones WIP que actualmente no están activas, elimínelas.

Resolución 7: Hay registros obsoletos

La DD040000 de tabla es la tabla Up_Days_Work. Esta tabla se vuelve a rellenar cada vez que se completa el proceso de regeneración de MRP. MRP determina qué fechas son días válidos y luego almacena estas fechas en esta tabla. Es el intervalo de fechas en el que debe caer la demanda de MRP.

El número de días que aparecen en esta tabla y la primera fecha especificada en esta tabla variará en función del tiempo de ejecución del proceso de regeneración de MRP. Si la regeneración se completa durante menos de 300 días, esta tabla se rellenará aproximadamente 600 días antes de la fecha de inicio del proceso de regeneración de MRP y 600 días después de la fecha de inicio del proceso de regeneración de MRP. Si el tiempo de ejecución del proceso de regeneración de MRP se prolonga más allá de 300 días, aumentará el número de "días operativos" contenidos en la tabla.

Cuando el proceso de regeneración de MRP determina los pedidos de planificación, las fechas de estos pedidos deben estar dentro de las fechas especificadas en la tabla DD040000. Si el proceso de regeneración de MRP no encuentra la fecha en esta tabla, no puede procesar el orden planeado. Este comportamiento provoca un bucle. Por lo general, hay un requisito de día de subida que es anterior al primer día de subida que se registra en la tabla DD040000.

  1. Si aumenta el número de días en el proceso de regeneración de MRP, también se aumenta el número de días que se incluyen en la tabla DD040000. Para aumentar el número de días en el proceso de regeneración de MRP, siga estos pasos:

    1. En el menú Transacciones , seleccione Fabricación, MRP y, a continuación, seleccione Regeneración.
    2. En el campo Ejecutar para, duplique la cantidad de días, semanas o meses durante el cual se genera el proceso de regeneración de MRP y, a continuación, seleccione Proceso.
  2. Reduzca el número de pedidos vencidos que incluye el proceso de regeneración de MRP. Al reducir el número de días en el pasado, elimina algunas otras transacciones del proceso de regeneración de MRP. Para ello, siga uno de los pasos en función de la versión de Microsoft Dynamics GP que use:

    • En Microsoft Dynamics GP 10.0, seleccione Herramientas en el menú de Microsoft Dynamics GP, configuración, fabricación, valores predeterminados del sistema y, a continuación, seleccione MRP.
      • En Microsoft Dynamics GP 9.0, apunte a Configurar en el menú Herramientas, apunte a Fabricación, apunte a Valores predeterminados del sistema, y luego seleccione MRP.
  3. En el campo Incluir vencido para días anteriores, reduzca la cantidad de días en el pasado que examina el proceso de regeneración de MRP.

  4. Vuelva a ejecutar el proceso de regeneración de MRP.

Si este problema sigue existiendo después de aumentar el número de días, siga estos pasos:

  1. Cree un archivo Dexsql.log mientras ejecuta el proceso de regeneración de MPR para determinar la fecha en la que se produce un error en MRP.

  2. Busque la carpeta GP o la carpeta Datos de GP y, a continuación, abra el archivo Dexsql.log.

  3. Localice la parte inferior del archivo abierto Dexsql.log. Si las fechas de demanda inválidas son el problema, verá la siguiente línea repetida junto con una fecha UPDAYS_I en el pasado. Esta fecha debe ser como mínimo de hace al menos un año para crear una incidencia. En el siguiente script, "2005.02.11" es la fecha que provoca el problema:

    SELECT TOP 25 UPDAYS_I,SEQ_I,DEX_ROW_ID FROM WAVE.dbo.DD040000 WHERE (UPDAYS_I < '2005.02.11') ORDER BY UPDAYS_I DESC
    
  4. El siguiente script buscará pedidos de fabricación que tengan una fecha de inicio anterior a una fecha específica:

    Select * from WO010032 where MANUFACTUREORDERST_I<>8 and STRTDATE<'yyyy-mm-dd' and STRTDATE<>'1900-01-01'
    

    Nota:

    aaaa-mm-dd es un marcador de posición para la fecha incorrecta del archivo Dexsql.log.

  5. Si se devuelven los resultados, cambie el campo Fecha de inicio a una fecha más actual en la ventana Entrada de pedido de fabricación para el elemento de línea en cuestión. Para abrir la ventana Entrada de pedido de fabricación, seleccione Fabricación en el menú Transacciones, seleccione Pedidos de fabricación y, a continuación, seleccione Entrada.

  6. El siguiente script buscará componentes de pedidos de fabricación que tengan una fecha necesaria anterior a una fecha específica.

    Select * from PK010033 where REQDATE<'yyyy-mm-dd' and REQDATE<>'1900-01-01' and MANUFACTUREORDER_I IN (select MANUFACTUREORDER_I from WO010032 where MANUFACTUREORDERST_I<>8)
    

    Nota:

    aaaa-mm-dd es un marcador de posición para la fecha incorrecta del archivo Dexsql.log.

  7. Si se devuelven los resultados, cambie el campo Fecha requerida a una fecha más actual en la ventana de selección del elemento de línea en cuestión. Para abrir la ventana Lista de selección, seleccione Fabricación en el menú Transacciones , seleccione Pedidos de fabricación y, a continuación, seleccione Lista de selección.

  8. En el archivo Dex.ini, vuelva a establecer las siguientes instrucciones en FALSE:

    • SQLLogSQLStmt=FALSE
    • SQLLogODBCMessages=FALSE