Sunday, September 1, 2024

Dimensionswerte werden für Vorauszahlungen in der ungarischen Version von Microsoft Dynamics NAV 2009 falsch gebucht – Microsoft-Support

Dieser Artikel gilt für Microsoft Dynamics NAV für das Sprachgebietsschema Ungarisch (hu).

Symptome

Angenommen, Sie erstellen einen Kundenauftrag, der eine Vorauszahlung enthält, und legen den Dimensionscode in der ungarischen Version von Microsoft Dynamics NAV 2009 R2 nicht fest. Wenn Sie den Kundenauftrag buchen, fordert das System Sie auf, einen Dimensionscode für den Kundenauftrag festzulegen. Nachdem Sie den Dimensionscode festgelegt und den Kundenauftrag erneut gebucht haben, erstellt das System den Hauptbucheintrag, der eine Hauptbucheintragsdimension enthält. Das System füllt das Feld für diese Postendimension jedoch nicht wie erwartet aus.

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 Navision-Clients vom System abgemeldet sind. Dazu gehören Clientbenutzer von Microsoft Navision Application Services (NAS). 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 Objekt „Systemobjekt-ID 5210" und für das Objekt „Systemobjekt-ID 9015".

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:

  1. Ändern Sie den Code in der Tabelle „Buchungszeilendimension" (356). Gehen Sie dazu folgendermaßen vor:

    1. Fügen Sie die Funktion „GetDimValueCode" hinzu und geben Sie dann den ersten Parameter wie folgt an:

      • Name : DimCode

      • Datentyp : Code

      • Länge : 20

    2. Fügen Sie einen zweiten Parameter hinzu und geben Sie den Parameter dann wie folgt an:

      • Name : DimValueCode

      • Datentyp : Code

      • Länge : 20

    3. Fügen Sie in der neu erstellten Funktion GetDimValueCode (DimCode: Code[20] DimValueCode: Code[20]) den folgenden Code hinzu:

       SETRANGE("Dimensionscode",DimCode); WENN SIE ZUERST FINDEN, DANN DimValueCode := "Dimensionswertcode"; SETRANGE("Dimensionscode"); 
  2. Ändern Sie den Code in der Codeunit „Sales-Post Advances" (26585). Gehen Sie dazu folgendermaßen vor:

    1. Ändern Sie den Code in der PostPaymentCorrection-Funktion wie folgt: Vorhandener Code 1

       ... SourceCodeSetup@1470003: Datensatz 242; CustLedgEntry@1470007: Datensatz 21; PrepaidAmount@1470000: Dezimal; PrepaidAmountLCY@1470005 : Dezimal; InvoiceAmount@1470009 : Dezimal; BEGINNEN WENN LinkedAdvanceEntry.ISEMPTY DANN AUSFAHRT; CustLedgEntry.SETRANGE("Customer No.",SalesInvHeader."Rechnungsempfänger-Kundennr."); ...

      Ersatzcode 1

       ... SourceCodeSetup@1470003: Datensatz 242; CustLedgEntry@1470007: Datensatz 21; PrepaidAmount@1470000: Dezimal; PrepaidAmountLCY@1470005 : Dezimal; InvoiceAmount@1470009 : Dezimal; //Folgende Zeile hinzufügen. PostedDocDim@1470015: Datensatz 359; BEGINNEN WENN LinkedAdvanceEntry.ISEMPTY DANN AUSFAHRT; CustLedgEntry.SETRANGE("Customer No.",SalesInvHeader."Rechnungsempfänger-Kundennr."); ...

      Vorhandener Code 2

       ... PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)"; GenJnlLine."Gilt für Dokumenttyp" := LinkedAdvanceEntry."Dokumenttyp"; GenJnlLine."Gilt für Dok.-Nr." := LinkedAdvanceEntry."Dokumentnr."; TempJnlLineDim.DELETEALL; //Löschen Sie die folgenden Zeilen. LedgEntryDim.SETRANGE("Table ID",DATABASE::"Cust. Ledger Entry"); LedgEntryDim.SETRANGE("Eintrag Nr.,LinkedAdvanceEntry."Eintrag Nr.); DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); //Ende der gelöschten Zeilen. GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); BIS LinkedAdvanceEntry.NEXT = 0; // Zahlung buchen GenJnlLine.INIT; ...

      Ersatzcode 2

       ... PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)"; GenJnlLine."Gilt für Dokumenttyp" := LinkedAdvanceEntry."Dokumenttyp"; GenJnlLine."Gilt für Dok.-Nr." := LinkedAdvanceEntry."Dokumentnr."; TempJnlLineDim.DELETEALL; //Folgende Zeilen hinzufügen. PostedDocDim.SETRANGE("Table ID",DATABASE::"Sales Invoice Header"); PostedDocDim.SETRANGE("Document No.",SalesInvHeader."No."); MoveDocDimtoJnlLineDim(PostedDocDim,TempJnlLineDim,DATABASE::"Cust. Ledger Entry"); GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 1 Code"); GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 2 Code"); //Ende der hinzugefügten Zeilen. GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); BIS LinkedAdvanceEntry.NEXT = 0; // Zahlung buchen GenJnlLine.INIT; ...

      Vorhandener Code 3

       ... GenJnlLine.VALIDATE("Währungscode",SalesInvHeader."Währungscode"); GenJnlLine.VALIDATE(Amount,-PrepaidAmount); GenJnlLine.VALIDATE("Betrag (LCY)",-PrepaidAmountLCY); GenJnlLine."Gilt für Dokumenttyp" := GenJnlLine."Gilt für Dokumenttyp"::Invoice; GenJnlLine."Gilt für Dok.-Nr." := SalesInvHeader."No."; GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2); ENDE; VERFAHREN PostVATReverse@1470029(VAR Rec@1470000: Datensatz 26585): Boolean; VAR ...

      Ersatzcode 3

       ... GenJnlLine.VALIDATE("Währungscode",SalesInvHeader."Währungscode"); GenJnlLine.VALIDATE(Amount,-PrepaidAmount); GenJnlLine.VALIDATE("Betrag (LCY)",-PrepaidAmountLCY); GenJnlLine."Gilt für Dokumenttyp" := GenJnlLine."Gilt für Dokumenttyp"::Invoice; GenJnlLine."Gilt für Dok.-Nr." := SalesInvHeader."No."; // Fügen Sie die folgenden Zeilen hinzu. GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 1 Code"); GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 2 Code"); // Ende der hinzugefügten Zeilen. GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2); ENDE; VERFAHREN PostVATReverse@1470029(VAR Rec@1470000: Datensatz 26585): Boolean; VAR ... 
    2. Fügen Sie die Funktion MoveDocDimtoJnlLineDim hinzu und geben Sie dann den ersten Parameter wie folgt an:

      • Var : Ja

      • Name : FromPostedDocDim

      • Datentyp : Datensatz

      • Untertyp : Dimension des gebuchten Dokuments

    3. Fügen Sie einen zweiten Parameter hinzu und geben Sie den Parameter dann wie folgt an:

      • Var : Ja

      • Name : ToJnLineDim

      • Datentyp : Datensatz

      • Untertyp : Journalzeilendimension

    4. Fügen Sie einen dritten Parameter hinzu und geben Sie den Parameter dann wie folgt an:

      • Var : Nein

      • Name : Tabellen-ID

      • Datentyp : Ganzzahl

    5. Fügen Sie in der neu erstellten Funktion „MoveDocDimtoJnlLineDim" (VAR FromPostedDocDim: „Gepostete Dokumentdimension" aufzeichnen; VAR ToJnlLineDim: „Journalzeilendimension" aufzeichnen) den folgenden Code hinzu:

       MIT FromPostedDocDim DO WENN FINDSET DANN WIEDERHOLEN ToJnlLineDim.INIT; ToJnlLineDim."Table ID" := TableId; ToJnlLineDim."Dimensionscode" := "Dimensionscode"; ToJnlLineDim."Dimensionswertcode" := "Dimensionswertcode"; ToJnlLineDim.INSERT; BIS NÄCHSTES = 0; 
  3. Ändern Sie den Code in der Codeeinheit Purchase-Post Advances (26586). Gehen Sie dazu folgendermaßen vor:

    1. Ändern Sie den Code in der PostPaymentCorrection-Funktion wie folgt: Vorhandener Code 1

       ... SourceCodeSetup@1470003: Datensatz 242; VendLedgEntry@1470007: Datensatz 25; PrepaidAmount@1470000: Dezimal; PrepaidAmountLCY@1470005 : Dezimal; InvoiceAmount@1470009 : Dezimal; BEGINNEN WENN LinkedAdvanceEntry.ISEMPTY DANN AUSFAHRT; VendLedgEntry.SETRANGE("Vendor No.",PurchInvHeader."Pay-to Vendor No."); ...

      Ersatzcode 1

       ... SourceCodeSetup@1470003: Datensatz 242; VendLedgEntry@1470007: Datensatz 25; PrepaidAmount@1470000: Dezimal; PrepaidAmountLCY@1470005 : Dezimal; InvoiceAmount@1470009 : Dezimal; //Folgende Zeile hinzufügen. PostedDocDim@1470015: Datensatz 359; BEGINNEN WENN LinkedAdvanceEntry.ISEMPTY DANN AUSFAHRT; VendLedgEntry.SETRANGE("Vendor No.",PurchInvHeader."Pay-to Vendor No."); ...

      Vorhandener Code 2

       ... PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)"; GenJnlLine."Gilt für Dokumenttyp" := LinkedAdvanceEntry."Dokumenttyp"; GenJnlLine."Gilt für Dok.-Nr." := LinkedAdvanceEntry."Dokumentnr."; TempJnlLineDim.DELETEALL; //Löschen Sie die folgenden Zeilen. LedgEntryDim.SETRANGE("Table ID",DATABASE::"Vendor Ledger Entry"); LedgEntryDim.SETRANGE("Eintrag Nr.,LinkedAdvanceEntry."Eintrag Nr.); DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); //Ende der gelöschten Zeilen. GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); BIS LinkedAdvanceEntry.NEXT = 0; // Zahlung buchen GenJnlLine.INIT; ...

      Ersatzcode 2

       ... PrepaidAmountLCY := PrepaidAmountLCY + GenJnlLine."Amount (LCY)"; GenJnlLine."Gilt für Dokumenttyp" := LinkedAdvanceEntry."Dokumenttyp"; GenJnlLine."Gilt für Dok.-Nr." := LinkedAdvanceEntry."Dokumentnr."; TempJnlLineDim.DELETEALL; //Folgende Zeilen hinzufügen. PostedDocDim.SETRANGE("Table ID",DATABASE::"Purch. Inv. Header"); PostedDocDim.SETRANGE("Dokumentnr.,PurchInvHeader."No."); MoveDocDimtoJnlLineDim(PostedDocDim,TempJnlLineDim,DATABASE::"Kreditorenbucheintrag"); GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 1 Code"); GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim.GetDimValueCode(GLSetup."Global Dimension 2 Code"); //Ende der gelöschten Zeilen. GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); BIS LinkedAdvanceEntry.NEXT = 0; // Zahlung buchen GenJnlLine.INIT; ...

      Vorhandener Code 3

       ... GenJnlLine.VALIDATE("Währungscode",PurchInvHeader."Währungscode"); GenJnlLine.VALIDATE(Amount,-PrepaidAmount); GenJnlLine.VALIDATE("Betrag (LCY)",-PrepaidAmountLCY); GenJnlLine."Gilt für Dokumenttyp" := GenJnlLine."Gilt für Dokumenttyp"::Invoice; GenJnlLine."Gilt für Dok.-Nr." := PurchInvHeader."No."; GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2); ENDE; VERFAHREN PostVATReverse@1470029(VAR Rec@1470000: Datensatz 26587): Boolean; VAR ...

      Ersatzcode 3

       ... GenJnlLine.VALIDATE("Währungscode",PurchInvHeader."Währungscode"); GenJnlLine.VALIDATE(Amount,-PrepaidAmount); GenJnlLine.VALIDATE("Betrag (LCY)",-PrepaidAmountLCY); GenJnlLine."Gilt für Dokumenttyp" := GenJnlLine."Gilt für Dokumenttyp"::Invoice; GenJnlLine."Gilt für Dok.-Nr." := PurchInvHeader."No."; // Fügen Sie die folgenden Zeilen hinzu. GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 1 Code"); GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim2.GetDimValueCode(GLSetup."Global Dimension 2 Code"); // Ende der hinzugefügten Zeilen. GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim2); ENDE; VERFAHREN PostVATReverse@1470029(VAR Rec@1470000: Datensatz 26587): Boolean; VAR ... 
    2. Fügen Sie die Funktion MoveDocDimtoJnlLineDim hinzu und geben Sie dann den ersten Parameter wie folgt an:

      • Var : Ja

      • Name : FromPostedDocDim

      • Datentyp : Datensatz

      • Untertyp : Dimension des gebuchten Dokuments

    3. Fügen Sie einen zweiten Parameter hinzu und geben Sie den Parameter dann wie folgt an:

      • Var : Ja

      • Name : ToJnLineDim

      • Datentyp : Datensatz

      • Untertyp : Journalzeilendimension

    4. Fügen Sie einen dritten Parameter hinzu und geben Sie den Parameter dann wie folgt an:

      • Var : Nein

      • Name : Tabellen-ID

      • Datentyp : Ganzzahl

    5. Fügen Sie in der neu erstellten Funktion „MoveDocDimtoJnlLineDim" (VAR FromPostedDocDim: „Gepostete Dokumentdimension" aufzeichnen; VAR ToJnlLineDim: „Journalzeilendimension" aufzeichnen) den folgenden Code hinzu:

       MIT FromPostedDocDim DO WENN FINDSET DANN WIEDERHOLEN ToJnlLineDim.INIT; ToJnlLineDim."Table ID" := TableId; ToJnlLineDim."Dimensionscode" := "Dimensionscode"; ToJnlLineDim."Dimensionswertcode" := "Dimensionswertcode"; ToJnlLineDim.INSERT; BIS NÄCHSTES = 0; 

Voraussetzungen

Um diesen Hotfix anwenden zu können, muss die ungarische Version von Microsoft Dynamics NAV 2009 R2 installiert sein.

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