Du kan felaktigt bokföra en strukturlistejournal eller en försäljningsorder när värdekoden för paketkomponenten skiljer sig från koden för paketets överordnade artikel i Microsoft Dynamics NAV 2009 SP1

Gäller för
Dynamics NAV 2009 Service Pack 1

Snabbt publicerade artiklar innehåller information direkt från Microsofts supportorganisation. Den information som finns häri skapas som svar på framväxande eller unika ämnen, eller är avsedd att komplettera annan Knowledge Base-information.

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

Symptom

Anta att dimensionsvärdekoden för komponentartikeln skiljer sig från koden för paketets överordnade artikel i Microsoft Dynamics NAV 2009 SP1. När du publicerar en strukturlistejournal eller en försäljningsorder tillåter Microsoft Dynamics NAV 2009 SP1 felaktigt att du publicerar bomjournalen eller en försäljningsorder utan ett felmeddelande. Det här problemet uppstår även om bokföringskoden för dimensionens värde har definierats som "samma kod" för både paketkomponenten och paketets överordnade artikel.

Du förväntar dig att "en dimension som används i artikeljournalraden, standardvärdet 10000, har orsakat ett fel. Vald dimensionsvärdekod [Dimensionsvärde code_Number] för dimensionskoden [Code_Number] för artikel [Item_Number]" visas när du publicerar bomjournalen eller försäljningsordern i den här situationen.

Det här problemet uppstår i de produkter som har Kitting-funktionen för följande länder:

  • Australien
  • Österrike
  • Frankrike
  • Indonesien
  • Malaysia
  • Nya Zeeland
  • Nordamerika
  • Filippinerna
  • Singapore
  • Thailand

Lösning

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.

            
          

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 ändra koden i funktionen Kod i BOM Jnl.-Post Line codeunit(32) enligt följande:

Befintlig kod

...
          ELSE
            BuildTotalDisassemblyCost(BOMJnlLine,ItemJnlLine.Amount - "Total Cost");

          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2,FALSE);

          ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
...

Ersättningskod

...
          ELSE
            BuildTotalDisassemblyCost(BOMJnlLine,ItemJnlLine.Amount - "Total Cost");

// Add the following line.
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2);
// End of the added line.

          ReserveBOMJnlLine.TransferBOMJnlToItemJnlLine(BOMJnlLine,ItemJnlLine,"Quantity (Base)");
...

ändra koden i funktionen PostTempJnlLines i BOM Jnl.-Post Line codeunit(32) enligt följande:

Befintlig kod

...
             IF TempItemJnlLine.FIND('-') THEN
          REPEAT
            TempItemJnlLine2 := TempItemJnlLine;
            TransferDimToItemJnlLine(TempItemJnlLine,TempJnlLineDim2,TRUE);
            ItemJnlPostLine.RunWithCheck(TempItemJnlLine,TempJnlLineDim2);
            WITH TempItemJnlLine DO BEGIN
              Quantity := TempItemJnlLine2.Quantity;
...

Ersättningskod

...
            IF TempItemJnlLine.FIND('-') THEN
          REPEAT
            TempItemJnlLine2 := TempItemJnlLine;

// Add the following line.
            TransferDimToItemJnlLine(TempItemJnlLine,TempJnlLineDim2);
// End of the added line.

            ItemJnlPostLine.RunWithCheck(TempItemJnlLine,TempJnlLineDim2);
            WITH TempItemJnlLine DO BEGIN
              Quantity := TempItemJnlLine2.Quantity;  
...

                
ändra koden i funktionen TransferDimToItemJnlLine i BOM Jnl.-Post Line codeunit(32) enligt följande:

Befintlig kod

...
            TempJnlLineDim2."Journal Line No." := ItemJnlLine2."Line No.";
            TempJnlLineDim2."Allocation Line No." := 0;
            TempJnlLineDim2."Dimension Code" := TempJnlLineDim."Dimension Code";
            IF Consumption THEN
              IF DefDim.GET(DATABASE::Item,ItemJnlLine2."Item No.",TempJnlLineDim."Dimension Code") THEN BEGIN
                TempJnlLineDim2."Dimension Value Code" := DefDim."Dimension Value Code";
                CASE DefDim."Dimension Code" OF
                  GLSetup."Global Dimension 1 Code":
                    ItemJnlLine2."Shortcut Dimension 1 Code" := DefDim."Dimension Value Code";
                  GLSetup."Global Dimension 2 Code":
                    ItemJnlLine2."Shortcut Dimension 2 Code" := DefDim."Dimension Value Code";
                END;
              END ELSE
                TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code"
            ELSE
              TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code";
            TempJnlLineDim2.INSERT;
          UNTIL TempJnlLineDim.NEXT = 0;
        END;
...

Ersättningskod

...
            TempJnlLineDim2."Journal Line No." := ItemJnlLine2."Line No.";
            TempJnlLineDim2."Allocation Line No." := 0;
            TempJnlLineDim2."Dimension Code" := TempJnlLineDim."Dimension Code";

// Add the following line.
            TempJnlLineDim2."Dimension Value Code" := TempJnlLineDim."Dimension Value Code";
// End of the added line.
            TempJnlLineDim2.INSERT;
          UNTIL TempJnlLineDim.NEXT = 0;
        END;    
...

ändra koden i funktionen PostResourceCost i BOM Jnl.-Post Line codeunit(32) enligt följande:

Befintlig kod

...          
           ItemJnlLine.Kitting := TRUE;
          TotalCost := "Total Cost";
          UnitCost := "Unit Cost";
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2,TRUE);
         IF OutputItemLedgEntryNo <> 0 THEN BEGIN
         ItemJnlLine."Item Shpt. Entry No." := OutputItemLedgEntryNo;
...

Ersättningskod

...
          ItemJnlLine.Kitting := TRUE;
          TotalCost := "Total Cost";
          UnitCost := "Unit Cost";

// Add the following line.
          TransferDimToItemJnlLine(ItemJnlLine,TempJnlLineDim2);
// End of the added line.

         IF OutputItemLedgEntryNo <> 0 THEN BEGIN
         ItemJnlLine."Item Shpt. Entry No." := OutputItemLedgEntryNo;
...

Krav

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

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Status

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

MICROSOFT OCH/ELLER DESS LEVERANTÖRER LÄMNAR INGA UTFÄSTELSER ELLER GARANTIER OM LÄMPLIGHETEN, TILLFÖRLITLIGHETEN ELLER RIKTIGHETEN I DEN INFORMATION SOM FINNS I DOKUMENTEN OCH RELATERAD GRAFIK SOM PUBLICERAS PÅ DENNA WEBBPLATS ("MATERIALET") FÖR NÅGOT ÄNDAMÅL.

MATERIALET KAN INNEHÅLLA TEKNISKA FELAKTIGHETER ELLER TYPOGRAFISKA FEL OCH KAN KOMMA ATT REVIDERAS NÄR SOM HELST UTAN FÖREGÅENDE MEDDELANDE. I DEN UTSTRÄCKNING SOM TILLÅTS ENLIGT TILLÄMPLIG LAG FRISKRIVER SIG MICROSOFT OCH/ELLER DESS LEVERANTÖRER FRÅN OCH UTESLUTER ALLA REPRESENTATIONER, GARANTIER OCH VILLKOR OAVSETT UTTRYCKLIG, UNDERFÖRSTÅDD ELLER LAGSTADGAD, INKLUSIVE MEN INTE BEGRÄNSAT TILL UTFÄSTELSER, GARANTIER ELLER VILLKOR FÖR ÄGANDERÄTT, ICKE-INTRÅNG, TILLFREDSSTÄLLANDE VILLKOR ELLER KVALITET, SÄLJBARHET OCH LÄMPLIGHET FÖR ETT VISST ÄNDAMÅL, MED AVSEENDE PÅ MATERIALET.