Dieser Artikel gilt für Microsoft Dynamics NAV für alle Länder und alle Gebietsschemas.
Problembeschreibung
Beim Erstellen eines Servicevertrags (nicht vorausbezahlt) und ändern die Rechnung vor dem Buchen in Microsoft Dynamics NAV 2009 ist inkonsistente Daten zwischen Serviceposten und Sachkonto. Dieses Problem tritt in den folgenden Produkten auf:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 Servicepack 1
Problemlösung
Hotfix-Informationen
Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Allerdings ist es lediglich zur Behebung dieses Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir, dass Sie warten auf das nächste Servicepack für Microsoft Dynamics NAV 2009 oder die nächste Microsoft Dynamics NAV-Version, die diesen Hotfix enthält.
Hinweis In besonderen Fällen bestimmt Gebühren fallen normalerweise Support aufrufen Wenn Experte Support für Microsoft Dynamics und zugehörige Produkte storniert werden können, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.
Informationen zur Installation
Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder konkludente Gewährleistung. Dies beinhaltet, ist jedoch nicht beschränkt auf, konkludente Gewährleistungen der Tauglichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der von Beispielen verwendeten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supporttechniker helfen der Erläuterung der Funktionalität bestimmter Prozeduren. Allerdings werden sie diese Beispiele nicht ändern, um zusätzliche Funktionalität bereitzustellen oder Prozeduren erstellen, die Ihren spezifischen Bedürfnisse erfüllen.
Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Microsoft Navision-Clientbenutzer vom System abgemeldet werden. Dies gilt auch für Clientbenutzer der Microsoft Navision Application Services (NAS). Sie sollte nur-Client-Benutzers, der angemeldet ist, wenn Sie diesen Hotfix installieren.
Muss eine Entwicklerlizenz verfügen, um diesen Hotfix installieren können.
Es wird empfohlen, das Benutzerkonto im Fenster Windows-Benutzernamen oder im Fenster Datenbank-Anmeldenamen "SUPER" Rollen-ID zugewiesen werden Wenn das Benutzerkonto die Rollen-ID "SUPER" nicht zugeordnet werden kann, müssen Sie sicherstellen, dass das Benutzerkonto die folgenden Berechtigungen verfügt:
-
Änderungsberechtigung für das Objekt, das Sie ändern.
-
Ausführungsberechtigung für System Object ID 5210 und System Object ID 9015 -Objekt.
Hinweis Sie müssen keine Rechte für die Datenspeicher haben, es sei denn, Sie müssen eine Datenreparatur durchführen.
Ändern von Code
Hinweis Testen Sie Programmcodeverbesserungen generell erst in einem Testsytem, bevor Sie sie im Produktionssystem verwenden.
Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:
-
Ändern Sie den Code in der Tabelle "Belegdimension" (357) wie folgt:
Vorhandener Code 1... Text005@1009 : TextConst 'ENU=Canceled.';
Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';
PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
...Neuer Code 1
... Text005@1009 : TextConst 'ENU=Canceled.';
Text006@1010 : TextConst 'ENU=You may have changed a dimension. Some lines are already shipped. When you post the line with the changed dimension to the general ledger, amounts on the Inventory Interim account will be out of balance when reported per dimension.\\Do you want to update the lines?';
Text007@1011 : TextConst 'ENU=You cannot change the dimension because the document is based on a service contract.';
PROCEDURE UpdateGlobalDimCode@25(GlobalDimCodeNo@1000 : Integer;"Table ID"@1001 : Integer;"Document Type"@1002 : Option;"Document No."@1003 : Code[20];"Line No."@1004 : Integer;NewDimValue@1005 : Code[20]);
...Vorhandener Code 2
... PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
VAR
SalesLine@1001 : Record 37;
PurchaseLine@1002 : Record 39;
BEGIN
CASE "Table ID" OF
DATABASE::"Sales Line":
BEGIN
IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Purchase Line":
BEGIN
IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
ERROR(Text005)
END;
END;
END;
...Neuer Code 2
... PROCEDURE VerifyLineDim@5(VAR DocDim@1000 : Record 357);
VAR
SalesLine@1001 : Record 37;
PurchaseLine@1002 : Record 39;
ServiceHeader@1003 : Record 5900;
ServiceLine@1004 : Record 5902;
BEGIN
CASE "Table ID" OF
DATABASE::"Sales Line":
BEGIN
IF SalesLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (SalesLine."Qty. Shipped Not Invoiced" <> 0) OR (SalesLine."Return Rcd. Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,SalesLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Purchase Line":
BEGIN
IF PurchaseLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (PurchaseLine."Qty. Rcd. Not Invoiced" <> 0) OR (PurchaseLine."Return Qty. Shipped Not Invd." <> 0) THEN
IF NOT CONFIRM(Text004,TRUE,PurchaseLine.TABLECAPTION) THEN
ERROR(Text005)
END;
DATABASE::"Service Header":
IF ServiceHeader.GET(DocDim."Document Type",DocDim."Document No.") AND (ServiceHeader."Contract No." <> '') THEN
ERROR(Text007);
DATABASE::"Service Line":
IF ServiceLine.GET(DocDim."Document Type",DocDim."Document No.",DocDim."Line No.") THEN
IF (ServiceLine."Contract No." <> '') THEN
ERROR(Text007);
END;
END;
... -
Ändern Sie den Code in der Tabelle Servicezeile (5902) wie folgt:
Vorhandener Code 1... IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
(("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
("Spare Part Action" = "Spare Part Action"::" "))
THEN
ReserveServLine.VerifyChange(Rec,xRec);
END;
OnDelete=VAR
...Neuer Code 1
... IF (Quantity <> 0) AND ItemExists(xRec."No.") AND
(("Spare Part Action" = "Spare Part Action"::"Component Replaced") OR
("Spare Part Action" = "Spare Part Action"::"Component Installed") OR
("Spare Part Action" = "Spare Part Action"::" "))
THEN
ReserveServLine.VerifyChange(Rec,xRec);
IF "Document Type" = ServiceLine."Document Type"::Invoice THEN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
END;
OnDelete=VAR
...Vorhandener Code 2
... { 5 ; ;Type ;Option ;OnValidate=BEGIN
GetServHeader;
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Neuer Code 2
... { 5 ; ;Type ;Option ;OnValidate=BEGIN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
GetServHeader;
...Vorhandenen Code 3
... { 6 ; ;No. ;Code20 ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
ELSE IF (Type=CONST(G/L Account)) "G/L Account"
ELSE IF (Type=CONST(Item)) Item
ELSE IF (Type=CONST(Resource)) Resource
ELSE IF (Type=CONST(Cost)) "Service Cost";
OnValidate=VAR
ShowLocMessage@1000 : Boolean;
BEGIN
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Neuer Code 3
... { 6 ; ;No. ;Code20 ;TableRelation=IF (Type=CONST(" ")) "Standard Text"
ELSE IF (Type=CONST(G/L Account)) "G/L Account"
ELSE IF (Type=CONST(Item)) Item
ELSE IF (Type=CONST(Resource)) Resource
ELSE IF (Type=CONST(Cost)) "Service Cost";
OnValidate=VAR
ShowLocMessage@1000 : Boolean;
BEGIN
IF ("Appl.-to Service Entry" <> 0) AND ("Contract No." <> '') THEN
ERROR(Text046);
TESTFIELD("Qty. Shipped Not Invoiced",0);
...Vorhandenen Code 4
... { 22 ; ;Unit Price ;Decimal ;OnValidate=BEGIN
GetServHeader;
IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
...Neuer Code 4
... { 22 ; ;Unit Price ;Decimal ;OnValidate=BEGIN
GetServHeader;
IF ("Appl.-to Service Entry" > 0) AND (CurrFieldNo <> 0) THEN
ERROR(Text046,FIELDCAPTION("Unit Price"));
IF ("Unit Price" > ServHeader."Max. Labor Unit Price") AND
...Vorhandenen Code 5
... Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
...Neuer Code 5
... Text043@1097 : TextConst 'ENU=You cannot change the value of the %1 field manually if %2 for this line is %3';
Text044@1012 : TextConst 'ENU=Do you want to split the resource line and use it to create resource lines\for the other service items with divided amounts?';
Text045@1099 : TextConst 'ENU=You cannot delete this service line because one or more service entries exist for this line.';
Text046@1100 : TextConst 'ENU=You cannot modify the document because it is based on a service contract.';
...
Voraussetzungen
Sie müssen eines der folgenden Produkte verfügen, um diesen Hotfix installieren:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 Servicepack 1
Informationen zur Deinstallation
Dieser Hotfix kann nicht entfernt werden.
Status
Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.
Hinweis Dies ist ein im Schnellverfahren veröffentlichter Artikel, der direkt in der Microsoft Support-Organisation erstellt wurde. Die hierin enthaltenen Informationen werden ohne Mängelgewähr in Reaktion auf neue Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung kann das Material möglicherweise typografische Fehler enthalten und jederzeit ohne vorherige Ankündigung geändert werden. Weitere Hinweise finden Sie unter Geschäftsbedingungen .