Condividi tramite


Il processo di rigenerazione MRP nella produzione smette di rispondere, blocca o non viene elaborato completamente in Microsoft Dynamics GP

Questo articolo descrive come risolvere i problemi quando si esegue il processo di rigenerazione dei requisiti materiali (MRP) nella produzione.

Si applica a: Microsoft Dynamics GP
Numero KB originale: 942508

Sintomi

Quando si usa il processo di rigenerazione dei requisiti materiali (MRP) nella produzione in Microsoft Dynamics GP 9.0, può verificarsi uno dei sintomi seguenti:

  • Il processo di rigenerazione MRP smette di rispondere.
  • Il processo di rigenerazione MRP si blocca.
  • Il processo di rigenerazione MRP non viene completato.

Causa

Questo problema può verificarsi per una o più motivi tra quelli indicati di seguito:

  • I vincoli relativi al giorno inattivo in MRP vengono impostati in modo non corretto.

  • I codici di basso livello vengono impostati in modo non corretto.

  • C'è una distinta base ricorsiva.

  • Nella tabella MSSP0230 sono presenti più record.

  • Nella tabella MSSP0230 è presente un ID società non corretto.

  • C'è un record bloccato nella sicurezza MRP.

  • Sono presenti ordini di vendita, ordini di acquisto o ordini di produzione con date obbligatorie che non rientrano negli intervalli di date MRP accettabili.

Risoluzione

Annotazioni

Prima di seguire le istruzioni riportate in questo articolo, assicurarsi di disporre di una copia di backup completa del database che è possibile ripristinare in caso di problemi.

Risoluzione 1: i vincoli relativi al giorno inattivo in MRP vengono impostati in modo non corretto

Il campo Vincolo Giorni Inattivi nella finestra Impostazioni predefinite di preferenza MRP utilizza i giorni inattivi dal calendario di produzione per determinare il tempo di consegna per i componenti. Il processo di rigenerazione MRP si blocca se sono vere le condizioni seguenti:

  • L'opzione Nessuno è selezionata in Impostazioni Giorni bassi a livello aziendale nella finestra Calendario negozio.
  • Il valore nel campo Vincolo Giorno di Riduzione nella finestra Preferenze Predefinite MRP è impostato su un valore diverso da Nessuno.

Per risolvere questo problema, seguire questa procedura a seconda della versione di Microsoft Dynamics GP in uso.

Microsoft Dynamics GP 10.0

  1. In Microsoft Dynamics GP 10.0 scegliere Strumenti dal menu Di Microsoft Dynamics GP , scegliere Imposta, Produzione, Impostazioni predefinite sistema e quindi Selezionare Calendario.

  2. Verificare quale delle opzioni seguenti è selezionata in Impostazioni Giorno inferiore a livello aziendale. Le seguenti opzioni sono disponibili nelle impostazioni dei giorni di chiusura aziendali:

    • Nessuno
    • Solo domenica
    • Sabato e domenica
  3. Nel menu Strumenti, puntare a Imposta, puntare a Produzione, puntare a Impostazioni predefinite del sistema e quindi selezionare MRP.

  4. Determinare se l'opzione nell'elenco a discesa Down Day Constraints corrisponde all'opzione Shop Calendar Down Days. Nell'elenco seguente vengono visualizzate le opzioni Shop Calendar Down Days che corrispondono alle opzioni Down Day Constraints :

    • Opzione Nessuno : questa opzione può contenere le impostazioni Nessuna, Sabato e Domenica o Solo domenica .
    • L'opzione Made - Questa opzione può contenere le impostazioni Sabato e Domenica o Solo domenica .
    • L'opzione Bought - Questa opzione può contenere le impostazioni Sabato e Domenica o Solo domenica .
    • L'opzione Entrambi : questa opzione può contenere le impostazioni Sabato e Domenica o Solo domenica .

Microsoft Dynamics GP 9.0

  1. In Microsoft Dynamics GP 9.0 scegliere Imposta dal menu Strumenti , scegliere Produzione, Impostazioni predefinite di sistema e quindi Calendario.

  2. Verificare quale delle opzioni seguenti è selezionata in Impostazioni Giorno di chiusura aziendale. Di seguito sono riportate le opzioni disponibili in Impostazioni Giorno inferiore a livello aziendale:

    • Nessuno
    • Solo domenica
    • Sabato e domenica
  3. Sul menu Strumenti, puntare su Imposta, puntare su Produzione, puntare su Impostazioni predefinite del sistema, e quindi selezionare MRP.

  4. Determinare se l'opzione nell'elenco a discesa Vincoli giorni di inattività corrisponde all'opzione Giorni di inattività del calendario del negozio. Nell'elenco seguente vengono visualizzate le opzioni Shop Calendar Down Days che corrispondono alle opzioni Down Day Constraints :

    • Opzione Nessuno : questa opzione può contenere le impostazioni Nessuna, Sabato e Domenica o Solo domenica .
    • L'opzione Made - Questa opzione può contenere le impostazioni Sabato e Domenica o Solo domenica .
    • L'opzione Bought - Questa opzione può contenere le impostazioni Sabato e Domenica o Solo domenica .
    • L'opzione Entrambi : questa opzione può contenere le impostazioni Sabato e Domenica o Solo domenica .

Risoluzione 2: I codici di basso livello sono impostati in modo non corretto

La finestra Item Engineering Data contiene un codice di basso livello per ogni componente. Il codice di basso livello è il livello più profondo dell'elemento in qualsiasi distinta base. È necessario eseguire l'utilità MRP Low-Level Codes per determinare se i codici di basso livello sono corretti. È possibile eseguire l'utilità MRP Low-Level Codes uno dei modi seguenti:

  • In Microsoft Dynamics GP
  • Manualmente usando Sql Query Analyzer o SQL Server Management Studio

Come eseguire l'utilità Codici di basso livello in Microsoft GP

  1. Seguire uno dei passaggi a seconda della versione di Microsoft Dynamics GP in uso:

    • In Microsoft Dynamics GP 10.0 scegliere Strumenti dal menu Di Microsoft Dynamics GP , scegliere Utilità, Produzione e quindi selezionare MRP Low-Level Codici.
      • In Microsoft Dynamics GP 9.0 scegliere Utilità dal menu Strumenti , fare clic su Produzione e quindi selezionare MRP Low-Level Codici.
  2. Nel campo Numero massimo di livelli per qualsiasi distinta base immettere 110.

  3. Selezionare Genera.

Come eseguire l'utilità di codice di basso livello in SQL Query Analyzer o in SQL Server Management Studio

Eseguire lo script seguente sul database aziendale in SQL Query Analyzer o in SQL Server Management Studio.

execute mbomLLCUtility 110

Risoluzione 3: BOM ricorsivo

Un bom ricorsivo è un componente di se stesso. Può essere assegnato direttamente come componente oppure può essere assegnato a un sottoassembly assegnato alla distinta base.

Come determinare se è presente una distinta base ricorsiva

  1. Eseguire l'istruzione seguente sul database aziendale in SQL Query Analyzer o in SQL Server Management Studio.

    Select * from BM010115 where CPN_I=PPN_I
    
  2. Se vengono restituiti risultati, è necessario rimuovere il componente dalla distinta base.

    Per rimuovere la distinta base ricorsiva, eseguire l'istruzione seguente sul database aziendale in SQL Query Analyzer o in SQL Server Management Studio.

    Annotazioni

    Prima di seguire le istruzioni riportate in questo articolo, assicurarsi di disporre di una copia di backup completa del database che è possibile ripristinare in caso di problemi.

    Delete BM010115 where PPN_I = CPN_I
    

Come determinare se la distinta base è assegnata a un sottoassieme assegnato alla distinta base

  1. Verificare che l'utilità Codice di basso livello sia stata eseguita.

  2. Eseguire l'istruzione seguente sul database aziendale in SQL Query Analyzer o in SQL Server Management Studio.

    Select * from IVR10015 where LLC=110
    

    Se vengono restituiti record, l'elemento elencato è un elemento padre. Tuttavia, in un punto della struttura bom, lo stesso numero di parte esiste come componente.

  3. Rimuovere il sottoassembly che contiene l'elemento in questione.

    1. Scegliere Produzione dal menu Schede e quindi Selezionare Fattura materiali.
    2. Immettere il numero BOM restituito dallo script nel campo Numero elemento.
    3. Nella visualizzazione albero espandere ogni sottoassieme e quindi determinare quali componenti si trovano sotto ogni sottoassieme.
    4. Rimuovere il sottoassembly che contiene l'elemento in questione.

Risoluzione 4: esistono più record nella tabella MPPS0230

La tabella MPPS0230 è la tabella Predefinita preferenze MRP. La tabella MPPS0230 deve contenere una sola riga.

  1. Eseguire l'istruzione seguente sul database aziendale in SQL Query Analyzer o in SQL Server Management Studio.

    Select * from MPPS0230
    
  2. Se questa istruzione restituisce più righe, è necessario determinare quale riga è la riga non corretta. È quindi necessario eliminare questa riga dalla tabella.

  3. Assicurarsi che la riga rimanente abbia l'ID società corretto. A tale scopo, seguire la procedura descritta nella sezione Risoluzione 5 .

Risoluzione 5: La tabella MPPS0230 ha un ID società non corretto

  1. Eseguire lo script seguente sul database DYNAMICS in SQL Query Analyzer o in SQL Server Management Studio per determinare l'ID società corretto per il database.

    Select * from SY01500
    
  2. Individuare il campo CMPANYID corrispondente al campo CMPNYNAM f con cui si verificano problemi in MRP.

  3. Eseguire l'istruzione seguente sul database aziendale in SQL Query Analyzer o in SQL Server Management Studio.

    Select * from MPPS0230
    
  4. Verificare che il campo CMPANYID sia corretto in base al risultato restituito dalla tabella SY01500 nel passaggio 1.

  5. Se l'ID società non è corretto nella tabella MPPS0230, eseguire lo script seguente sul database aziendale in Query Analyzer o in 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 
    

Risoluzione 6: un record è bloccato nella sicurezza MRP

I record bloccati possono causare il blocco di MRP quando si esegue il processo di rigenerazione MRP.

  1. Scegliere Produzione dal menu Transazioni, fare clic su MRP e quindi selezionare Sicurezza.

    Vengono visualizzate tutte le sessioni attive che eseguono MRP. Se attualmente non si esegue il processo di rigenerazione MRP, non dovrebbe essere presente un record in questa tabella.

  2. Se non si esegue il processo di rigenerazione MRP e si dispone di un record (o record) qui, eliminare questa riga.

  3. Verificare la sicurezza dell'ordine pianificato MRP. A tale scopo, scegliere Produzione dal menu Transazioni , fare clic su MRP e quindi selezionare Sicurezza ordine pianificato. MRP Planned Order Security visualizzerà gli ordini pianificati bloccati da altri processi.

  4. Se non si esegue il processo di rigenerazione MRP e si dispone di un record (o record) qui, eliminare questa riga.

  5. Verificare altre finestre di sicurezza produzione per determinare se i record necessari per la rigenerazione mrp non sono bloccati. L'elenco seguente è costituito dalle diverse finestre di sicurezza di produzione in cui è possibile trovare record bloccati:

    • Nel menu Transazioni selezionare Produzione, quindi Ordine di produzione e quindi Sicurezza. Solo gli ordini di produzione attualmente attivi possono essere visualizzati nella finestra. Un ordine di produzione attivo è un ordine di produzione su cui un utente sta attualmente lavorando e che viene aperto in una finestra Di produzione. Se sono presenti ordini di produzione attualmente non attivi, eliminarli.
      • Nel menu Transazioni, puntare a Produzione, puntare a Fattura materiali e quindi selezionare Sicurezza. Le macchine virtuali vengono bloccate quando gli utenti lavorano con loro. Inoltre, le macchine virtuali vengono bloccate quando vengono aperte in una finestra Di produzione. Se sono presenti bom che non sono attualmente attivi, eliminarli.
      • Nel menu Transazioni, puntare a Produzione, puntare a Instradamenti e quindi selezionare Sicurezza. I routing vengono bloccati quando gli utenti lavorano con loro. Inoltre, i routing vengono bloccati quando vengono aperti in una finestra Di produzione. Se sono presenti routing che non sono attualmente attivi, eliminarli.
      • Nel menu Transazioni scegliere Produzione, wip e quindi selezionare Sicurezza TRX. Le transazioni wip (Work in progress) vengono bloccate quando gli utenti li riguardano. Inoltre, le transazioni WIP vengono bloccate quando vengono aperte in una finestra Produzione. Se sono presenti transazioni WIP attualmente non attive, eliminarle.

Risoluzione 7: Sono presenti record obsoleti

La tabella DD040000 è la tabella Up_Days_Work. Questa tabella viene ripopolata ogni volta che viene completato il processo di rigenerazione MRP. MRP determina quali date sono valide per i giorni di aggiornamento e quindi archivia queste date in questa tabella. È l'intervallo di date entro il quale la richiesta MRP deve cadere.

Il numero di giorni visualizzati in questa tabella e la prima data immessa in questa tabella variano a seconda del tempo di esecuzione del processo di rigenerazione MRP. Se la rigenerazione viene completata per meno di 300 giorni, questa tabella verrà popolata circa 600 giorni prima della data di inizio del processo di rigenerazione MRP e 600 giorni dopo la data di inizio del processo di rigenerazione MRP. Se il tempo di esecuzione del processo di rigenerazione MRP viene esteso negli ultimi 300 giorni, il numero di "giorni successivi" contenuti nella tabella aumenterà.

Quando il processo di rigenerazione MRP determina gli ordini di pianificazione, le date di questi ordini devono rientrare nelle date specificate nella tabella DD040000. Se il processo di rigenerazione MRP non riesce a trovare la data in questa tabella, non può elaborare l'ordine pianificato. Questo comportamento causa un ciclo. In genere, è previsto un requisito giornaliero precedente al primo giorno scritto nella tabella DD040000.

  1. Se si aumenta il numero di giorni nel processo di rigenerazione MRP, viene aumentato anche il numero di giorni inclusi nella tabella DD040000. Per aumentare il numero di giorni nel processo di rigenerazione MRP, seguire questa procedura:

    1. Scegliere Produzione dal menu Transazioni, fare clic su MRP e quindi selezionare Rigenerazione.
    2. Nel campo Esegui per raddoppiare i numeri di giorni, i numeri di settimane o i numeri di mesi per cui viene generato il processo di rigenerazione MRP e quindi selezionare Processo.
  2. Ridurre il numero di ordini scaduti che il processo di rigenerazione MRP include. Quando si riduce il numero di giorni precedenti, si eliminano alcune altre transazioni dal processo di rigenerazione MRP. A tale scopo, seguire uno dei passaggi a seconda della versione di Microsoft Dynamics GP in uso:

    • In Microsoft Dynamics GP 10.0 scegliere Strumenti dal menu Di Microsoft Dynamics GP , fare clic su Configurazione, scegliere Produzione, Impostazioni predefinite di sistema e quindi SELEZIONARE MRP.
      • In Microsoft Dynamics GP 9.0, posizionare il cursore su Imposta nel menu Strumenti, puntare a Produzione, puntare a Impostazioni predefinite di sistema e quindi selezionare MRP.
  3. Nel campo Includi scaduto per i giorni precedenti, riduci il numero di giorni passati che il processo di rigenerazione MRP considera.

  4. Eseguire di nuovo il processo di rigenerazione MRP.

Se il problema persiste dopo aver aumentato il numero di giorni, seguire questa procedura:

  1. Creare un file Dexsql.log durante l'esecuzione del processo di rigenerazione MPR per determinare la data in cui MRP ha esito negativo.

  2. Individuare la cartella Criteri di gruppo o la cartella Dati Criteri di gruppo e quindi aprire il file Dexsql.log.

  3. Individuare la parte inferiore del file di Dexsql.log aperto. Se le date della domanda non sono valide, verrà visualizzata la riga seguente ripetuta insieme a una data di UPDAYS_I in passato. Questa data deve essere almeno un anno prima per creare un problema. Nello script seguente "2005.02.11" è la data che causa il 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. Lo script seguente cercherà gli ordini di produzione con una data di inizio precedente a una data specifica:

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

    Annotazioni

    yyyy-mm-dd è un segnaposto per la data non corretta dal file di Dexsql.log.

  5. Se i risultati vengono restituiti, modificare il campo Data di inizio in una data più recente nella finestra Immissione ordine di produzione per la voce di riga in questione. Per aprire la finestra Immissione ordine di produzione, scegliere Produzione dal menu Transazioni , scegliere Ordini di produzione e quindi selezionare Voce.

  6. Lo script seguente cercherà i componenti degli ordini di produzione con una data obbligatoria precedente a una data specifica.

    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)
    

    Annotazioni

    yyyy-mm-dd è un segnaposto per la data non corretta dal file di Dexsql.log.

  7. Se vengono restituiti risultati, modificare il campo Data richiesta impostando una data più corrente nella finestra Elenco di selezione per l'elemento della riga in questione. Per aprire la finestra Elenco di selezione, scegliere Produzione dal menu Transazioni , scegliere Ordini di produzione e quindi selezionare Elenco di selezione.

  8. Nel file Dex.ini impostare le istruzioni seguenti su FALSE:

    • SQLLogSQLStmt=FALSE
    • SQLLogODBCMessages=FALSE