Ett felaktigt förslag på lagerförflyttning skapas när det finns en måttenhetskonvertering i rörelsen i Microsoft Dynamics NAV 5.0

Den här artikeln gäller Microsoft Dynamics NAV för alla länder och alla språkspråk.

Tänk dig följande scenario i Microsoft Dynamics NAV 5.0:

  • Du har ett fack där det finns ett objekt som använder en annan måttenhet (UoM).
  • Det finns en konvertering mellan de två UoM.
  • Du flyttar objektet från lagerplatsen till ett annat fack.
  • En UoM-konvertering är nödvändig i rörelsen.
  • Du kör funktionen lagerförflyttning i dialogrutan Rörelsekalkylblad för objektet.

I det här scenariot skapas UoM-konverteringslinjerna felaktigt i förslaget om lagerförflyttning.

Symptom

Snabbkorrigeringsinformation

En snabbkorrigering som stöds är nu tillgänglig från Microsoft. Det är dock bara avsett att åtgärda problemet som beskrivs i den här artikeln. Använd den bara på system som har det här specifika problemet. Den här snabbkorrigeringen kan få ytterligare tester. Om du inte drabbas hårt av det här problemet rekommenderar vi därför att du väntar på nästa Microsoft Dynamics NAV 2009 Service Pack eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.

Obs! I särskilda fall kan avgifter som vanligtvis uppkommer för supportsamtal avbrytas om en teknisk supporttekniker för Microsoft Dynamics och relaterade produkter fastställer att en specifik uppdatering löser problemet. De vanliga supportkostnaderna gäller för ytterligare supportfrågor och problem som inte är berättigade till den aktuella uppdateringen.

Lösning

Installationsinformation

Microsoft tillhandahåller endast programmeringsexempel i visningssyfte, utan att någon form av garanti uttrycks eller är underförstådd. Detta omfattar men är inte begränsat till underförstådda garantier för säljbarhet eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och med de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att tillhandahålla ytterligare funktioner eller konstruera procedurer för att uppfylla dina specifika krav.

Obs! Innan du installerar den här snabbkorrigeringen kontrollerar du att alla Microsoft Navision-klientanvändare loggas ut från systemet. Detta omfattar användare av Microsoft Navision Application Services (NAS). Du bör vara den enda klientanvändare som är inloggad när du implementerar snabbkorrigeringen.

Om du vill implementera den här snabbkorrigeringen måste du ha en utvecklarlicens.

Vi rekommenderar att användarkontot i fönstret Windows-inloggningar eller i fönstret Databasinloggningar tilldelas roll-ID:t "SUPER". Om användarkontot inte kan tilldelas superroll-ID måste du kontrollera att användarkontot har följande behörigheter:

  • Behörigheten Ändra för det objekt som du kommer att ändra.
  • Körbehörigheten för systemobjekt-ID 5210-objektet och för 9015-objektet Systemobjekt-ID.

            
Obs! Du behöver inte ha rättigheter till datakällorna om du inte behöver utföra datareparation.

Kodändringar

Obs! Testa alltid korrigeringar av kod i en kontrollerad miljö innan du tillämpar korrigeringarna på produktionsdatorerna.
Lös problemet genom att följa de här stegen:

  1. Ändra koden i funktionen CreateTempLine2 i codeuniten Create Pick (7312) enligt följande:
    Befintlig kod 1

         ...
    
               IF QtytoPick > 0 THEN BEGIN
    
                 QtytoPick :=
    
                   QtytoPick -
    
                   ROUND(
    
                     CalcPickQtyAssigned(
    
    //Delete the following line.
                      LocationCode,ItemNo,VariantCode,'',TempWhseItemTrkgLine) 
    
    
         ...
    

    Ersättningskod 1

         ...
    
               IF QtytoPick > 0 THEN BEGIN
    
                 QtytoPick :=
    
                   QtytoPick -
    
                   ROUND(
    
                     CalcPickQtyAssigned(
    
    //Add the following line.
                      LocationCode,ItemNo,VariantCode,UnitofMeasureCode,'',TempWhseItemTrkgLine) 
    
         ...
    

    Befintlig kod 2

         ...
    
             IF QtytoPick > 0 THEN BEGIN
    
               QtytoPick :=
    
                 QtytoPick -
    
                 ROUND(
    
                   CalcPickQtyAssigned(
    
    //Delete the following line.
                    LocationCode,ItemNo,VariantCode,'',TempWhseItemTrkgLine) 
    
    
         ...
    

    Ersättningskod 2

         ...
    
             IF QtytoPick > 0 THEN BEGIN
    
               QtytoPick :=
    
                 QtytoPick -
    
                 ROUND(
    
                   CalcPickQtyAssigned(
    
    //Add the following line.
                    LocationCode,ItemNo,VariantCode,UnitofMeasureCode,'',TempWhseItemTrkgLine) 
    
         ...
    

    Befintlig kod 3

         ...
    
                     QtyPerUnitofMeasure,0.00001);
    
               QtytoPickBase := QtytoPickBase -
    
                 CalcPickQtyAssigned(
    
    //Delete the following line.
                  LocationCode,ItemNo,VariantCode,'',TempWhseItemTrkgLine);
    
    
         ...
    

    Ersättningskod 3

         ...
    
                     QtyPerUnitofMeasure,0.00001);
    
               QtytoPickBase := QtytoPickBase -
    
                 CalcPickQtyAssigned(
    
    //Add the following line.
                  LocationCode,ItemNo,VariantCode,UnitofMeasureCode,'',TempWhseItemTrkgLine);
    
         ...
    
  2. Ändra koden i funktionen InsertTmpActLnFromMovWkshLine i codeuniten Create Pick (7312) enligt följande:
    Befintlig kod

         ...
    
               LocationCode,FromBinCode,ItemNo,VariantCode,WhseWkshLine."From Unit of Measure Code");
    
             FromBinContent.CALCFIELDS(Quantity,"Pick Qty.","Neg. Adjmt. Qty.");
    
             PickQtyAssigned :=
    
               ROUND(
    
                 CalcPickQtyAssigned(
    
    //Delete the following line.
                  LocationCode,ItemNo,VariantCode,WhseWkshLine."From Bin Code",TempWhseItemTrkgLine) 
    
         ...
    

    Ersättningskod

         ...
    
               LocationCode,FromBinCode,ItemNo,VariantCode,WhseWkshLine."From Unit of Measure Code");
    
             FromBinContent.CALCFIELDS(Quantity,"Pick Qty.","Neg. Adjmt. Qty.");
    
             PickQtyAssigned :=
    
               ROUND(
    
                 CalcPickQtyAssigned(
    
    //Add the following lines.
                  LocationCode,ItemNo,VariantCode,
    
                  WhseWkshLine."From Unit of Measure Code",
    
                  WhseWkshLine."From Bin Code",TempWhseItemTrkgLine) 
    //End of the lines.
         ...
    
  3. Ändra koden i funktionen FindBWPickBin i codeuniten Create Pick (7312) enligt följande:
    Befintlig kod

         ...
    
                 IF QtyToPickBase > 0 THEN BEGIN
    
                   QtyToPickBase :=
    
                     QtyToPickBase -
    
                     ROUND(
    
                       CalcPickQtyAssigned(
    
    //Delete the following line.
                        LocationCode,ItemNo,VariantCode,"Bin Code",TempWhseItemTrkgLine) 
    
         ...
    

    Ersättningskod

         ...
    
                 IF QtyToPickBase > 0 THEN BEGIN
    
                   QtyToPickBase :=
    
                     QtyToPickBase -
    
                     ROUND(
    
                       CalcPickQtyAssigned(
    
    //Add the following lines.
                        LocationCode,ItemNo,VariantCode,"Bin Code","Unit of Measure Code",
    
                        TempWhseItemTrkgLine) 
    //End of the lines.
         ...
    
  4. Lägg till en ny lokal variabel i funktionen CalcPickQtyAssigned i codeuniten Create Pick (7312) och ange variabeln enligt följande:

    • Namn: UOMCode@1004
    • DataType: Kod
    • Längd: 10
  5. Ändra koden i funktionen CalcPickQtyAssigned i create pick codeunit (7312) till följande:

         ...
    
             END ELSE BEGIN
    
               SETRANGE("Action Type","Action Type"::" ");
    
               SETRANGE("Bin Code",'');
    
             END;
    
             SETRANGE("Variant Code",VariantCode);
    
    //Add the following lines.
            IF UOMCode <> '' THEN
    
              SETRANGE("Unit of Measure Code",UOMCode);
    //End of the lines.
         ...
    
  6. Ändra koden i funktionen CalcTotalAvailQtyToPick i create pick codeunit (7312) enligt följande:
    Befintlig kod

         ...
    
           QtyAssignedPick :=
    
    //Delete the following line.
            CalcPickQtyAssigned(LocationCode,ItemNo,VariantCode,'',TempWhseItemTrkgLine2);
    
    
    

    Ersättningskod

         ...
    
           QtyAssignedPick :=
    
    //Add the following line.
            CalcPickQtyAssigned(LocationCode,ItemNo,VariantCode,'','',TempWhseItemTrkgLine2);
    

Krav

Du måste ha Microsoft Dynamics NAV 5.0 installerat för att kunna använda den här snabbkorrigeringen.

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".

Status

Obs! Det här är en "FAST PUBLISH"-artikel som skapats direkt från Microsofts supportorganisation. Den information som finns häri tillhandahålls i befintligt format som svar på framväxande problem. Till följd av hur snabbt materialet blir tillgängligt kan materialet innehålla typografiska fel och kan komma att revideras när som helst utan föregående meddelande. Se användningsvillkor för andra överväganden.