Dieser Artikel gilt für Microsoft Dynamics NAV für die folgenden Länder und Sprachgebietsschemas.
- Englisch (Kanada) (en-ca)
- Englisch (USA) (en-us)
- Spanisch (Mexiko) (es-mx)
- Französisch (Kanada) (fr-ca)
Symptome
Angenommen, Sie aktivieren das Kontrollkästchen Automatic Build Kit BOM für ein Element in der nordamerikanischen Version von Microsoft Dynamics NAV 2009. Wenn Sie die Funktion In Dokument kopieren im Formular "Customer Sales History" ausführen, um einen Verkaufsauftrag für den Artikel für einen Kunden zu erstellen, wird die folgende Fehlermeldung angezeigt:
Hinweis
Das Buildkit muss in der Vertriebszeile "Nein" sein.
Dieses Problem tritt in den folgenden Produkten auf:
- Die nordamerikanische Version von Microsoft Dynamics NAV 2009 R2
- Die nordamerikanische Version von Microsoft Dynamics NAV 2009 Service Pack 1
Lösung
Hotfixinformationen
Ein unterstützter Hotfix ist jetzt bei Microsoft verfügbar. Es dient jedoch nur zur Behebung des problems, das in diesem Artikel beschrieben wird. Wenden Sie sie nur auf Systeme an, bei denen dieses spezifische Problem auftritt. Dieser Hotfix erhält möglicherweise zusätzliche Tests. Wenn Sie von diesem Problem nicht stark betroffen sind, empfiehlt es sich daher, auf das nächste Microsoft Dynamics NAV 2009 Service Pack oder die nächste Microsoft Dynamics NAV-Version zu warten, die diesen Hotfix enthält.
Hinweis In besonderen Fällen können Gebühren, die normalerweise für Supportanrufe anfallen, storniert werden, wenn ein Technischer Supportmitarbeiter für Microsoft Dynamics und zugehörige Produkte feststellt, dass ihr Problem durch ein bestimmtes Update behoben wird. PLEASE DO NOT TRANSLATE. DOES NOT APPLY TO GERMAN.
Informationen zur Installation
Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Garantie. Dies schließt die stillschweigende Gewährleistung der Marktgängigkeit oder der Eignung für einen bestimmten Zweck ein, ist aber nicht darauf beschränkt. In diesem Artikel wird davon ausgegangen, dass Sie mit der vorgestellten Programmiersprache und den Werkzeugen zum Erstellen und Debuggen von Prozeduren vertraut sind. Die Microsoft Support-Spezialisten können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind.
Hinweis Überprüfen Sie vor der Installation dieses Hotfixs, ob alle Microsoft Navision-Clientbenutzer vom System abgemeldet sind. Dies schließt Microsoft Navision Application Services (NAS)-Clientbenutzer ein. Sie sollten der einzige Clientbenutzer sein, der angemeldet ist, wenn Sie diesen Hotfix implementieren.
Um diesen Hotfix implementieren zu können, benötigen Sie eine Entwicklerlizenz.
Es wird empfohlen, dem Benutzerkonto im Fenster Windows-Anmeldungen oder im Fenster Datenbankanmeldungen die Rollen-ID "SUPER" zuzuweisen. Wenn dem Benutzerkonto die Rollen-ID "SUPER" nicht zugewiesen werden kann, müssen Sie überprüfen, ob das Benutzerkonto über die folgenden Berechtigungen verfügt:
- Die Berechtigung Ändern für das Objekt, das Sie ändern.
- Die Execute-Berechtigung für das Systemobjekt-ID 5210-Objekt und für das Systemobjekt-ID 9015-Objekt.
Hinweis Sie benötigen keine Rechte für die Datenspeicher, es sei denn, Sie müssen eine Datenreparatur durchführen.
Codeänderungen
Hinweis Testen Sie Codekorrekturen immer in einer kontrollierten Umgebung, bevor Sie die Korrekturen auf Ihre Produktionscomputer anwenden.
Gehen Sie wie folgt vor, um das Problem zu beheben:
Entfernen Sie die LOCAL-Eigenschaft aus den folgenden Verfahren in der Codeeinheit Copy Document Mgt. (6620) wie folgt:
Vorhandener Code 1... // Delete the following line. LOCAL PROCEDURE CopyFromKitSalesToLine@1462000(VAR ToSalesLine@1462000 : Record 37;VAR FromSalesLine@1462001 : Record 37); ...Ersetzungscode 1
... // Add the following line. PROCEDURE CopyFromKitSalesToLine@1462000(VAR ToSalesLine@1462000 : Record 37;VAR FromSalesLine@1462001 : Record 37); ...Vorhandener Code 2
... // Delete the following line.LOCAL PROCEDURE CopyFromKitSalesShptToLine@1462001(VAR ToSalesLine@1462000 : Record 37;VAR FromSalesShptLine@1462001 : Record 111); ...Ersetzungscode 2
... // Add the following line.PROCEDURE CopyFromKitSalesShptToLine@1462001(VAR ToSalesLine@1462000 : Record 37;VAR FromSalesShptLine@1462001 : Record 111); ...Vorhandener Code 3
... // Delete the following line.LOCAL PROCEDURE CopyFromKitSalesInvToLine@1462002(VAR ToSalesLine@1462000 : Record 37;VAR FromSalesInvLine@1462001 : Record 113); ...Ersatzcode 3
... // Add the following line.PROCEDURE CopyFromKitSalesInvToLine@1462002(VAR ToSalesLine@1462000 : Record 37;VAR FromSalesInvLine@1462001 : Record 113); ...Fügen Sie die folgenden lokalen Variablen in der CopyLinesToDoc-Prozedur in der Codeeinheit Sales History Copy Line Mgt. (7172) wie folgt hinzu:
CopytoKitLine@1015 : Codeunit 6620; FromSalesInvLine@1018 : Record 113; FromSalesShptLine@1020 : Record 111; FromArchiveLine@1021 : Record 5108;Ändern Sie den Code in der CopyLinesToDoc-Prozedur in der Sales History Copy Line Mgt. codeunit (7172) wie folgt:
Vorhandener Code 1... FromDocType::"Return Order": BEGIN FromSalesHeader.GET(FromSalesLine."Document Type",FromSalesLine."Document No."); ItemChargeAssgntNextLineNo := 0; CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); // Delete the following lines. IF FromSalesLine.Type = FromSalesLine.Type::"Charge (Item)" THEN CopyFromSalesDocAssgntToLine(ToSalesLine,FromSalesLine,ItemChargeAssgntNextLineNo); END; FromDocType::"Posted Shipment": BEGIN FromSalesShptHeader.GET(FromSalesLine."Document No."); FromSalesHeader.TRANSFERFIELDS(FromSalesShptHeader); CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); END; FromDocType::"Posted Invoice": BEGIN FromSalesInvHeader.GET(FromSalesLine."Document No."); FromSalesHeader.TRANSFERFIELDS(FromSalesInvHeader); CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); // End of the lines. END; FromDocType::"Posted Return Order": BEGIN ...Ersetzungscode1
... FromDocType::"Return Order": BEGIN FromSalesHeader.GET(FromSalesLine."Document Type",FromSalesLine."Document No."); ItemChargeAssgntNextLineNo := 0; CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); // Add the following lines. IF NOT (FromDocType IN ["Document Type"::"Credit Memo","Document Type"::"Return Order"]) THEN CopytoKitLine.CopyFromKitSalesToLine(ToSalesLine,FromSalesLine); IF FromSalesLine.Type = FromSalesLine.Type::"Charge (Item)" THEN BEGIN CopyFromSalesDocAssgntToLine(ToSalesLine,FromSalesLine,ItemChargeAssgntNextLineNo); CopytoKitLine.CopyFromKitSalesToLine(ToSalesLine,FromSalesLine); END; END; FromDocType::"Posted Shipment": BEGIN FromSalesShptHeader.GET(FromSalesLine."Document No."); FromSalesShptLine.GET(FromSalesLine."Document No.",FromSalesLine."Line No."); FromSalesHeader.TRANSFERFIELDS(FromSalesShptHeader); CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); CopytoKitLine.CopyFromKitSalesShptToLine(ToSalesLine,FromSalesShptLine); END; FromDocType::"Posted Invoice": BEGIN FromSalesInvHeader.GET(FromSalesLine."Document No."); FromSalesInvLine.GET(FromSalesLine."Document No.",FromSalesLine."Line No."); FromSalesHeader.TRANSFERFIELDS(FromSalesInvHeader); CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); CopytoKitLine.CopyFromKitSalesInvToLine(ToSalesLine,FromSalesInvLine); // End of the lines. END; FromDocType::"Posted Return Order": BEGIN ...Vorhandener Code 2
... FromDocType::"Archived Order": BEGIN FromSalesArchHeader.GET(FromSalesLine."Document Type",FromSalesLine."Document No.", DocNoOccurrence,DocVersionNo); // Delete the following lines. FromSalesHeader.TRANSFERFIELDS(FromSalesArchHeader); CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); // End of the lines. END; END; END; ...Ersetzungscode 2
... FromDocType::"Archived Order": BEGIN FromSalesArchHeader.GET(FromSalesLine."Document Type",FromSalesLine."Document No.", DocNoOccurrence,DocVersionNo); // Add the following lines. FromArchiveLine.GET(FromSalesLine."Document Type",FromSalesLine."Document No.", DocNoOccurrence,DocVersionNo,FromSalesLine."Line No."); FromSalesHeader.TRANSFERFIELDS(FromSalesArchHeader); CopyLine(ToSalesHeader,ToSalesLine,FromSalesHeader,FromSalesLine,NextLineNo); CopyFromKitArchiveToLine(ToSalesLine,FromArchiveLine); // End of the lines. END; END; END; ...Ändern Sie den Code in der CopyLine-Prozedur in der Codeeinheit Sales History Copy Line Mgt. (7172) wie folgt:
Vorhandener Code... VALIDATE("Variant Code",FromSalesLine."Variant Code"); // Delete the following lines. VALIDATE("Location Code",FromSalesLine."Location Code"); VALIDATE("Unit of Measure",FromSalesLine."Unit of Measure"); VALIDATE("Unit of Measure Code",FromSalesLine."Unit of Measure Code"); VALIDATE(Quantity,0); // End of the lines. IF NOT (FromSalesLine.Type IN [FromSalesLine.Type::Item,FromSalesLine.Type::Resource]) THEN BEGIN IF (FromSalesHeader."Currency Code" <> ToSalesHeader."Currency Code") OR ...Ersetzungscode
... VALIDATE("Variant Code",FromSalesLine."Variant Code"); // Add the following lines. "Location Code" := FromSalesLine."Location Code"; VALIDATE("Unit of Measure",FromSalesLine."Unit of Measure"); VALIDATE("Unit of Measure Code",FromSalesLine."Unit of Measure Code"); VALIDATE(Quantity,0); Quantity := FromSalesLine.Quantity; "Qty. to Ship" := FromSalesLine.Quantity; "Qty. to Invoice" := FromSalesLine.Quantity; "Line Amount" := FromSalesLine."Line Amount"; "Quantity (Base)" := FromSalesLine.Quantity; "Qty. to Invoice (Base)" := FromSalesLine.Quantity; // End of the lines. IF NOT (FromSalesLine.Type IN [FromSalesLine.Type::Item,FromSalesLine.Type::Resource]) THEN BEGIN IF (FromSalesHeader."Currency Code" <> ToSalesHeader."Currency Code") OR ...Fügen Sie die folgende lokale Prozedur wie folgt in der Codeeinheit Sales History Copy Line Mgt. (7172) hinzu:
LOCAL PROCEDURE CopyFromKitArchiveToLine@7(VAR ToSalesLine@1001 : Record 37;VAR FromArchiveLine@1002 : Record 5108); VAR FromKitArchiveLine@1003 : Record 25003; ToKitArchiveLine@1004 : Record 25003; ToKitSalesLine@1005 : Record 25000; BEGIN IF ToSalesLine."Build Kit" THEN BEGIN FromKitArchiveLine.RESET; FromKitArchiveLine.SETRANGE("Document No.",FromArchiveLine."Document No."); FromKitArchiveLine.SETRANGE("Document Line No.",FromArchiveLine."Line No."); IF FromKitArchiveLine.FINDSET THEN REPEAT ToKitSalesLine.TRANSFERFIELDS(FromKitArchiveLine); ToKitSalesLine."Document Type" := ToSalesLine."Document Type"; ToKitSalesLine."Document No." := ToSalesLine."Document No."; ToKitSalesLine."Document Line No." := ToSalesLine."Line No."; CASE ToKitSalesLine.Type OF ToKitSalesLine.Type::Item,ToKitSalesLine.Type::Resource: BEGIN ToKitSalesLine."Extended Quantity" := ToKitSalesLine."Quantity per" * ToSalesLine."Quantity (Base)"; ToKitSalesLine."Extended Quantity (Base)" := ToKitSalesLine."Quantity per (Base)" * ToSalesLine."Quantity (Base)" END; ToKitSalesLine.Type::"Setup Resource": BEGIN ToKitSalesLine."Extended Quantity" := ToKitSalesLine."Quantity per"; ToKitSalesLine."Extended Quantity (Base)" := ToKitSalesLine."Quantity per (Base)"; END; END; ToKitSalesLine."Outstanding Quantity" := ToKitSalesLine."Extended Quantity"; ToKitSalesLine."Outstanding Qty. (Base)" := ToKitSalesLine."Extended Quantity (Base)"; ToKitSalesLine.INSERT; UNTIL FromKitArchiveLine.NEXT = 0; END; END;
Voraussetzungen
Sie müssen eines der folgenden Produkte installiert haben, um diesen Hotfix anwenden zu können:
- Die nordamerikanische Version von Microsoft Dynamics NAV 2009 R2
- Die nordamerikanische Version von Microsoft Dynamics NAV 2009 Service Pack 1
Informationen zur Deinstallation
Sie können diesen Hotfix nicht entfernen.
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.
Hinweis: Dies ist ein Artikel vom Typ "SCHNELL VERÖFFENTLICHEN", der direkt in der Microsoft-Supportorganisation erstellt wurde. Die Informationen in diesem Artikel werden ohne Gewähr als Reaktion auf auftretende Probleme bereitgestellt. Aufgrund ihrer schnellen Bereitstellung können sie typografische Fehler enthalten und jederzeit ohne vorherige Ankündigung geändert werden. Andere Überlegungen finden Sie unter Nutzungsbedingungen.