Dimensionen können nicht aus den Einkaufs- und Verkaufsbelegen in Microsoft Dynamics NAV 2009 geerbt werden
Symptome
Wenn Sie in einer Einkaufs- oder Verkaufsreklamation die Funktion „Gebuchte Belegzeilen zum Stornieren abrufen" in Microsoft Dynamics NAV 2009 verwenden und die gebuchten Belege auswählen, erben die Zeilen nicht alle Dimensionen, die bereits in der Einkaufs- oder Verkaufsreklamation verwendet wurden Verkaufsbelege. Befolgen Sie die Schritte im Abschnitt „Codeänderungen" , um dieses Problem zu beheben. Dieses Problem tritt bei folgenden Produkten auf:
Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 SP1
Auflösung
Hotfix-Informationen
Ein unterstützter Hotfix ist jetzt von Microsoft verfügbar. Es dient jedoch lediglich der Behebung des in diesem Artikel beschriebenen Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise weiteren Tests unterzogen. Wenn Sie von diesem Problem nicht schwerwiegend betroffen sind, empfehlen wir Ihnen 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 die Gebühren, die normalerweise für Supportanrufe anfallen, storniert werden, wenn ein Mitarbeiter des technischen Supports für Microsoft Dynamics und verwandte Produkte feststellt, dass ein bestimmtes Update Ihr Problem lösen wird. Für zusätzliche Supportfragen und Probleme, die für das jeweilige Update nicht in Frage kommen, fallen die üblichen Supportkosten an.Installationsinformationen
Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Gewährleistung. Dazu gehören unter anderem stillschweigende Garantien der Marktgängigkeit oder Eignung für einen bestimmten Zweck. In diesem Artikel wird davon ausgegangen, dass Sie mit der demonstrierten Programmiersprache und den Tools vertraut sind, die zum Erstellen und Debuggen von Prozeduren verwendet werden. Microsoft-Supporttechniker können dabei helfen, die Funktionalität eines bestimmten Verfahrens zu erläutern. Sie werden diese Beispiele jedoch nicht ändern, um zusätzliche Funktionalität bereitzustellen oder Prozeduren zu erstellen, die Ihren spezifischen Anforderungen entsprechen.
Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Benutzer des Microsoft Dynamics NAV-Clients vom System abgemeldet sind. Dazu gehören Microsoft Dynamics NAV Application Server (NAS)-Dienste. Sie sollten der einzige Clientbenutzer sein, der angemeldet ist, wenn Sie diesen Hotfix implementieren. Um diesen Hotfix zu implementieren, benötigen Sie eine Entwicklerlizenz. Wir empfehlen, dem Benutzerkonto im Fenster „Windows-Anmeldungen" oder im Fenster „Datenbank-Anmeldungen" die Rollen-ID „SUPER" zuzuweisen. Wenn dem Benutzerkonto nicht die Rollen-ID „SUPER" zugewiesen werden kann, müssen Sie überprüfen, ob das Benutzerkonto über die folgenden Berechtigungen verfügt:Die Änderungsberechtigung für das Objekt, das Sie ändern möchten.
Die Ausführungsberechtigung für das Systemobjekt-ID-5210-Objekt und für das Systemobjekt-ID-9015-Objekt
Objekt.
Hinweis Sie müssen keine Rechte an den Datenspeichern haben, 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 Ihren Produktionscomputern anwenden.
Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:Ändern Sie den Code in der Funktion „CopyLineToDoc" im Formular „Gebuchte Verkaufsbelegzeilen" (5850) wie folgt:
Vorhandener Code 1...
LinesNotCopied := 0; CASE CurrentMenuType OF 0: BEGINNEN CurrForm.PostedShpts.FORM.GetSelectedLine(FromSalesShptLine); CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopySalesShptLinesToDoc( ToSalesHeader,FromSalesShptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 1: ...Ersatzcode 1
...
LinesNotCopied := 0; CASE CurrentMenuType OF 0: BEGINNEN CurrForm.PostedShpts.FORM.GetSelectedLine(FromSalesShptLine); // Fügen Sie die folgende Zeile hinzu. CopyDocMgt.CopyAllDimensions; // Ende der hinzugefügten Zeile. CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopySalesShptLinesToDoc( ToSalesHeader,FromSalesShptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 1: ...Vorhandener Code 2
...
ToSalesHeader,FromSalesInvLine,LinesNotCopied,MissingExCostRevLink); ENDE; 2: BEGINNEN CurrForm.PostedReturnRcpts.FORM.GetSelectedLine(FromReturnRcptLine); CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopySalesReturnRcptLinesToDoc( ToSalesHeader,FromReturnRcptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 3: ...Ersatzcode 2
...
ToSalesHeader,FromSalesInvLine,LinesNotCopied,MissingExCostRevLink); ENDE; 2: BEGINNEN CurrForm.PostedReturnRcpts.FORM.GetSelectedLine(FromReturnRcptLine); // Fügen Sie die folgende Zeile hinzu. CopyDocMgt.CopyAllDimensions; // Ende der hinzugefügten Zeile. CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopySalesReturnRcptLinesToDoc( ToSalesHeader,FromReturnRcptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 3: ...Ändern Sie den Code in der Funktion „CopyLineToDoc" im Formular „Gepostete Einkaufsbelegzeilen" (5855) wie folgt:
Vorhandener Code 1...
LinesNotCopied := 0; CASE CurrentMenuType OF 0: BEGINNEN CurrForm.PostedRcpts.FORM.GetSelectedLine(FromPurchRcptLine); CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopyPurchRcptLinesToDoc( ToPurchHeader,FromPurchRcptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 1: ...Ersatzcode 1
...
LinesNotCopied := 0; CASE CurrentMenuType OF 0: BEGINNEN CurrForm.PostedRcpts.FORM.GetSelectedLine(FromPurchRcptLine); // Fügen Sie die folgende Zeile hinzu. CopyDocMgt.CopyAllDimensions; // Ende der hinzugefügten Zeile. CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopyPurchRcptLinesToDoc( ToPurchHeader,FromPurchRcptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 1: ...Vorhandener Code 2
...
ToPurchHeader,FromPurchInvLine,LinesNotCopied,MissingExCostRevLink); ENDE; 2: BEGINNEN CurrForm.PostedReturnShpts.FORM.GetSelectedLine(FromReturnShptLine); CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopyPurchReturnShptLinesToDoc( ToPurchHeader,FromReturnShptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 3: ...Ersatzcode 2
...
ToPurchHeader,FromPurchInvLine,LinesNotCopied,MissingExCostRevLink); ENDE; 2: BEGINNEN CurrForm.PostedReturnShpts.FORM.GetSelectedLine(FromReturnShptLine); // Fügen Sie die folgende Zeile hinzu. CopyDocMgt.CopyAllDimensions; // Ende der hinzugefügten Zeile. CopyDocMgt.SetProperties(FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,OriginalQuantity); CopyDocMgt.CopyPurchReturnShptLinesToDoc( ToPurchHeader,FromReturnShptLine,LinesNotCopied,MissingExCostRevLink); ENDE; 3: ...Ändern Sie den Code in den globalen Variablen im Copy Document Mgt. Codeunit (6620) wie folgt:
Vorhandener Code...
SkippedLine@1047 : Boolean; Text029@1048: TextConst 'ENU=Eine oder mehrere Rückgabebelegzeilen wurden nicht eingefügt oder sie enthalten nur die verbleibende Menge der ursprünglichen Belegzeile. Dies liegt daran, dass die Mengen in der gebuchten Belegzeile bereits vollständig oder teilweise übernommen wurden. Wenn Sie die gesamte Menge stornieren möchten, müssen Sie Originalmenge zurückgeben auswählen, bevor Sie die gebuchten Belegzeilen erhalten.'; Text030@1025 : TextConst 'ENU=%1 %2, Zeilennr. %3 wird nicht kopiert, da die gesamte Menge auf der gebuchten Belegzeile bereits manuell angewendet wurde.'; Text031@1038: TextConst 'ENU=Rückgabebelegzeile enthält nur die ursprüngliche Belegzeilenmenge, die nicht bereits manuell angewendet wurde.'; SomeAreFixed@1045: Boolean; VERFAHREN SetProperties@2(NewIncludeHeader@1001 : Boolean;NewRecalculateLines@1000 : Boolean;NewMoveNegLines@1006 : Boolean;NewCreateToHeader@1002 : Boolean;NewHideDialog@1003 : Boolean;NewExactCostRevMandatory@1004 : Boolean;NewApplyFully@ 1005: Boolescher Wert); BEGINNEN IncludeHeader := NewIncludeHeader; RecalculateLines := NewRecalculateLines; ...Ersatzcode
...
SkippedLine@1047 : Boolean; Text029@1048: TextConst 'ENU=Eine oder mehrere Rückgabebelegzeilen wurden nicht eingefügt oder sie enthalten nur die verbleibende Menge der ursprünglichen Belegzeile. Dies liegt daran, dass die Mengen in der gebuchten Belegzeile bereits vollständig oder teilweise übernommen wurden. Wenn Sie die gesamte Menge stornieren möchten, müssen Sie Originalmenge zurückgeben auswählen, bevor Sie die gebuchten Belegzeilen erhalten.'; Text030@1025 : TextConst 'ENU=%1 %2, Zeilennr. %3 wird nicht kopiert, da die gesamte Menge auf der gebuchten Belegzeile bereits manuell angewendet wurde.'; Text031@1038: TextConst 'ENU=Rückgabebelegzeile enthält nur die ursprüngliche Belegzeilenmenge, die nicht bereits manuell angewendet wurde.'; SomeAreFixed@1045: Boolean; // Fügen Sie die folgende Zeile hinzu. CopyDimensions@1050 : Boolean; // Ende der hinzugefügten Zeile. VERFAHREN SetProperties@2(NewIncludeHeader@1001 : Boolean;NewRecalculateLines@1000 : Boolean;NewMoveNegLines@1006 : Boolean;NewCreateToHeader@1002 : Boolean;NewHideDialog@1003 : Boolean;NewExactCostRevMandatory@1004 : Boolean;NewApplyFully@ 1005: Boolescher Wert); BEGINNEN IncludeHeader := NewIncludeHeader; RecalculateLines := NewRecalculateLines; ...Ändern Sie den Code in der Funktion CopyFromPstdSalesDocDimToLine im Copy Document Mgt. Codeunit (6620) wie folgt:
Vorhandener Code...
LOKALE VERFAHREN CopyFromPstdSalesDocDimToLine@21(VAR ToSalesLine@1009: Datensatz 37;FromDocType@1004: Option;VAR FromSalesShptLine@1007: Datensatz 111;VAR FromSalesInvLine@1005: Datensatz 113;VAR FromReturnRcptLine@1003: Datensatz 6661;VAR SalesCrMemoLine@1001: Datensatz 115); VAR DocDim@1002: Datensatz 357; FromPostedDocDim@1000: Datensatz 359; BEGINNEN // Folgende Zeile löschen. WENN NICHT Linien neu berechnen, DANN BEGINNEN // Ende der gelöschten Zeile. DocDim.SETRANGE("Table ID",DATABASE::"Sales Line"); DocDim.SETRANGE("Dokumenttyp",ToSalesLine."Dokumenttyp"); DocDim.SETRANGE("Dokumentnr.,ToSalesLine."Dokumentnr.); DocDim.SETRANGE("Zeilen-Nr.",ToSalesLine."Zeilen-Nr."); DocDim.DELETEALL; ...Ersatzcode
...
LOKALE VERFAHREN CopyFromPstdSalesDocDimToLine@21(VAR ToSalesLine@1009: Datensatz 37;FromDocType@1004: Option;VAR FromSalesShptLine@1007: Datensatz 111;VAR FromSalesInvLine@1005: Datensatz 113;VAR FromReturnRcptLine@1003: Datensatz 6661;VAR SalesCrMemoLine@1001: Datensatz 115); VAR DocDim@1002: Datensatz 357; FromPostedDocDim@1000: Datensatz 359; BEGINNEN // Fügen Sie die folgende Zeile hinzu. WENN NICHT Zeilen neu berechnet ODER Dimensionen kopiert werden, DANN BEGINNEN // Ende der hinzugefügten Zeile. DocDim.SETRANGE("Table ID",DATABASE::"Sales Line"); DocDim.SETRANGE("Dokumenttyp",ToSalesLine."Dokumenttyp"); DocDim.SETRANGE("Dokumentnr.,ToSalesLine."Dokumentnr.); DocDim.SETRANGE("Zeilen-Nr.",ToSalesLine."Zeilen-Nr."); DocDim.DELETEALL; ...Ändern Sie den Code in der Funktion CopyFromPstdPurchDocDimToLine im Copy Document Mgt. Codeunit (6620) wie folgt:
Vorhandener Code...
LOKALE VERFAHREN CopyFromPstdPurchDocDimToLine@13(VAR ToPurchLine@1002: Datensatz 39;FromDocType@1004: Option;VAR FromPurchRcptLine@1009: Datensatz 121;VAR FromPurchInvLine@1007: Datensatz 123;VAR FromReturnShptLine@1005: Datensatz ;VAR FromPurchCrMemoLine@1003 : Datensatz 125); VAR DocDim@1001: Datensatz 357; FromPostedDocDim@1000: Datensatz 359; BEGINNEN // Folgende Zeile löschen. WENN NICHT Linien neu berechnen, DANN BEGINNEN // Ende der gelöschten Zeile. DocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); DocDim.SETRANGE("Dokumenttyp",ToPurchLine."Dokumenttyp"); DocDim.SETRANGE("Dokumentnr.,ToPurchLine."Dokumentnr.); DocDim.SETRANGE("Line No.",ToPurchLine."Line No."); DocDim.DELETEALL; ...Ersatzcode
...
LOKALE VERFAHREN CopyFromPstdPurchDocDimToLine@13(VAR ToPurchLine@1002: Datensatz 39;FromDocType@1004: Option;VAR FromPurchRcptLine@1009: Datensatz 121;VAR FromPurchInvLine@1007: Datensatz 123;VAR FromReturnShptLine@1005: Datensatz ;VAR FromPurchCrMemoLine@1003 : Datensatz 125); VAR DocDim@1001: Datensatz 357; FromPostedDocDim@1000: Datensatz 359; BEGINNEN // Fügen Sie die folgende Zeile hinzu. WENN NICHT Zeilen neu berechnet ODER Dimensionen kopiert werden, DANN BEGINNEN // Ende der hinzugefügten Zeile. DocDim.SETRANGE("Table ID",DATABASE::"Purchase Line"); DocDim.SETRANGE("Dokumenttyp",ToPurchLine."Dokumenttyp"); DocDim.SETRANGE("Dokumentnr.,ToPurchLine."Dokumentnr.); DocDim.SETRANGE("Line No.",ToPurchLine."Line No."); DocDim.DELETEALL; ...Ändern Sie den Code in der Funktion „CopyAllDimensions" im Copy Document Mgt. Codeunit (6620) wie folgt:
Vorhandener Code...
NACHRICHT(Text031); WENN Text <> '' DANN NACHRICHT(Text); ENDE; BEGINNEN ENDE. } } ...Ersatzcode
...
NACHRICHT(Text031); WENN Text <> '' DANN NACHRICHT(Text); ENDE; // Fügen Sie die folgenden Zeilen hinzu. VERFAHREN CopyAllDimensions@85(); BEGINNEN CopyDimensions := TRUE; ENDE; // Ende der hinzugefügten Zeile. BEGINNEN ENDE. } } ...
Voraussetzungen
Um diesen Hotfix anwenden zu können, muss eines der folgenden Produkte installiert sein:
Microsoft Dynamics NAV 2009 R2
Microsoft Dynamics NAV 2009 SP1
Informationen zum Entfernen
Sie können diesen Hotfix nicht entfernen.
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Gilt für" aufgeführt sind.
Hinweis Dies ist ein „FAST PUBLISH"-Artikel, der direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden unverändert als Reaktion auf neu auftretende Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung können die Materialien Tippfehler enthalten und jederzeit ohne Vorankündigung überarbeitet werden. Weitere Hinweise finden Sie in den Nutzungsbedingungen .
No comments:
Post a Comment