Sunday, September 1, 2024

Die Dimensionen der Hauptbucheinträge sind falsch, wenn Sie die Funktion „Einträge zurücknehmen“ für einen Kunden in Microsoft Dynamics NAV 2009 ausführen – Microsoft-Support

Dieser Artikel gilt für Microsoft Dynamics NAV für alle Länder und alle Sprachgebietsschemas.

Symptome

Angenommen, Sie wenden mehrere Zahlungen mit unterschiedlichen Dimensionen auf eine Rechnung für einen Kunden in Microsoft Dynamics NAV 2009 an. Wenn Sie die Funktion „Einträge aufheben" für den Kunden ausführen, sind die Dimensionen der Hauptbucheinträge falsch. Dieses Problem tritt bei folgenden Produkten auf:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 Service Pack 1 (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:

  1. Ändern Sie den Code in der Funktion UnapplyCustLedgEntry in der Gen. Jnl.-Post Line Codeunit (12) wie folgt: Vorhandener Code 1

     ... TempVatEntryNo@1028 : Ganzzahl; BEGINNEN ...

    Ersatzcode 1

     ... TempVatEntryNo@1028 : Ganzzahl; // Fügen Sie die folgenden Zeilen hinzu. MultipleDimensions@1170000000 : Boolean; CustEntryAppPostEntries@1170000001: Codeunit 226; TotalAmtMD@1170000004 : ARRAY [10] OF Decimal; TotalAmtAddCurMD@1170000003 : ARRAY [10] OF Decimal; DimArr@1170000002: ARRAY [2,10] OF Code[10]; Arrlen@1170000005 : Ganzzahl; NewComb@1170000006 : Boolean; // Ende der hinzugefügten Zeilen. BEGINNEN ...

    Vorhandener Code 2

     ... DtldCustLedgEntry2.FINDSET; // Folgende Zeilen löschen. LedgEntryDim.SETRANGE("Table ID",DATABASE::"Cust. Ledger Entry"); LedgEntryDim.SETRANGE("Eintragsnr.,DtldCustLedgEntry2."Angewandte Kundenpostennr.); TempJnlLineDim.RESET; TempJnlLineDim.DELETEALL; DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); IF TempJnlLineDim.GET(DATABASE::"Cust. Ledger Entry",'','',0,0,GLSetup."Global Dimension 1 Code") THEN GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 1 Code" := ''; IF TempJnlLineDim.GET(DATABASE::"Cust. Ledger Entry",'','',0,0,GLSetup."Global Dimension 2 Code") THEN GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 2 Code" := ''; // Ende der gelöschten Zeilen. WIEDERHOLEN ...

    Ersatzcode 2

     ... DtldCustLedgEntry2.FINDSET; // Fügen Sie die folgenden Zeilen hinzu. MultipleDimensions := CustEntryAppPostEntries.MultipleDimensions(DtldCustLedgEntry2."Initial Entry Global Dim. 1", DtldCustLedgEntry2."Initial Entry Global Dim. 2",DtldCustLedgEntry2); // Ende der hinzugefügten Zeilen. WIEDERHOLEN ...

    Vorhandener Code 3

     ... WIEDERHOLEN // Folgende Zeilen löschen. NewDtldCustLedgEntry := DtldCustLedgEntry2; NewDtldCustLedgEntry."Eintragsnr." := NextDtldLedgEntryEntryNo; NewDtldCustLedgEntry."Posting Date" := GenJnlLine."Posting Date"; NewDtldCustLedgEntry."Transaktionsnr." := NextTransactionNo; NewDtldCustLedgEntry.Amount := -DtldCustLedgEntry2.Amount; NewDtldCustLedgEntry."Betrag (MW)" := -DtldCustLedgEntry2."Betrag (MW)"; NewDtldCustLedgEntry."Debit Amount" := -DtldCustLedgEntry2."Debit Amount"; NewDtldCustLedgEntry."Credit Amount" := -DtldCustLedgEntry2."Credit Amount"; NewDtldCustLedgEntry."Sollbetrag (MW)" := -DtldCustLedgEntry2."Sollbetrag (MW)"; NewDtldCustLedgEntry."Kreditbetrag (MW)" := -DtldCustLedgEntry2."Kreditbetrag (MW)"; NewDtldCustLedgEntry.Unapplied := TRUE; NewDtldCustLedgEntry. „Von Eintragsnr. nicht angewendet." := DtldCustLedgEntry2."Eintrag Nr."; NewDtldCustLedgEntry."Dokumentnr." := GenJnlLine."Dokumentnr."; NewDtldCustLedgEntry."Quellcode" := GenJnlLine."Quellcode"; NewDtldCustLedgEntry."Benutzer-ID" := USERID; NewDtldCustLedgEntry.INSERT; NextDtldLedgEntryEntryNo := NextDtldLedgEntryEntryNo + 1; // Ende der gelöschten Zeilen. ...

    Ersatzcode 3

     ... WIEDERHOLEN // Fügen Sie die folgenden Zeilen hinzu. IF DtldCustLedgEntry2."Angewendete Kundenposten-Nr." <> 0 DANN BEGINNEN LedgEntryDim.RESET; LedgEntryDim.SETRANGE("Table ID",DATABASE::"Cust. Ledger Entry"); LedgEntryDim.SETRANGE("Eintragsnr.,DtldCustLedgEntry2."Angewandte Kundenpostennr.); TempJnlLineDim.RESET; TempJnlLineDim.DELETEALL; DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); IF TempJnlLineDim.GET(DATABASE::"Cust. Ledger Entry",'','',0,0,GLSetup."Global Dimension 1 Code") THEN GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 1 Code" := ''; IF TempJnlLineDim.GET(DATABASE::"Cust. Ledger Entry",'','',0,0,GLSetup."Global Dimension 2 Code") THEN GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 2 Code" := ''; ENDE SONST BEGINNEN GenJnlLine."Shortcut Dimension 1 Code" := DtldCVLedgEntryBuf."Initial Entry Global Dim. 1"; GenJnlLine."Shortcut Dimension 2 Code" := DtldCVLedgEntryBuf."Initial Entry Global Dim. 2"; ENDE; // Ende der hinzugefügten Zeilen. ...

    Vorhandener Code 4

     ... // Folgende Zeilen löschen. DtldCVLedgEntryBuf.TRANSFERFIELDS(NewDtldCustLedgEntry); GenJnlLine."Quellwährungscode" := DtldCustLedgEntry2."Währungscode"; WENN GLSetup."Zusätzliche Berichtswährung" <> DtldCVLedgEntryBuf."Währungscode" DANN DtldCVLedgEntryBuf."Zusätzlicher Währungsbetrag" := CalcAddCurrForUnapplication(DtldCVLedgEntryBuf."Posting Date",DtldCVLedgEntryBuf."Amount (LCY)") ANDERS WENN GLSetup."Zusätzliche Berichtswährung" <> '' DANN DtldCVLedgEntryBuf."Additional-Currency Amount" := DtldCVLedgEntryBuf.Amount; CurrencyLCY.InitRoundingPrecision; // Ende der gelöschten Zeilen. ...

    Ersatzcode 4

     ... // Fügen Sie die folgenden Zeilen hinzu. NewDtldCustLedgEntry := DtldCustLedgEntry2; NewDtldCustLedgEntry."Eintragsnr." := NextDtldLedgEntryEntryNo; NewDtldCustLedgEntry."Posting Date" := GenJnlLine."Posting Date"; NewDtldCustLedgEntry."Transaktionsnr." := NextTransactionNo; NewDtldCustLedgEntry.Amount := -DtldCustLedgEntry2.Amount; NewDtldCustLedgEntry."Betrag (MW)" := -DtldCustLedgEntry2."Betrag (MW)"; NewDtldCustLedgEntry."Debit Amount" := -DtldCustLedgEntry2."Debit Amount"; NewDtldCustLedgEntry."Credit Amount" := -DtldCustLedgEntry2."Credit Amount"; NewDtldCustLedgEntry."Sollbetrag (MW)" := -DtldCustLedgEntry2."Sollbetrag (MW)"; NewDtldCustLedgEntry."Kreditbetrag (MW)" := -DtldCustLedgEntry2."Kreditbetrag (MW)"; NewDtldCustLedgEntry.Unapplied := TRUE; NewDtldCustLedgEntry. „Von Eintragsnr. nicht angewendet." := DtldCustLedgEntry2."Eintrag Nr."; NewDtldCustLedgEntry."Dokumentnr." := GenJnlLine."Dokumentnr."; NewDtldCustLedgEntry."Quellcode" := GenJnlLine."Quellcode"; NewDtldCustLedgEntry."Benutzer-ID" := USERID; NewDtldCustLedgEntry.INSERT; NextDtldLedgEntryEntryNo := NextDtldLedgEntryEntryNo + 1; // Ende der hinzugefügten Zeilen. ...

    Vorhandener Code 5

     ... IF DtldCustLedgEntry2."Entry Type" IN [ ...

    Ersatzcode 5

     ... // Fügen Sie die folgenden Zeilen hinzu. DtldCVLedgEntryBuf.TRANSFERFIELDS(NewDtldCustLedgEntry); GenJnlLine."Quellwährungscode" := DtldCustLedgEntry2."Währungscode"; WENN GLSetup."Zusätzliche Berichtswährung" <> DtldCVLedgEntryBuf."Währungscode" DANN DtldCVLedgEntryBuf."Zusätzlicher Währungsbetrag" := CalcAddCurrForUnapplication(DtldCVLedgEntryBuf."Posting Date",DtldCVLedgEntryBuf."Amount (LCY)") ANDERS WENN GLSetup."Zusätzliche Berichtswährung" <> '' DANN DtldCVLedgEntryBuf."Additional-Currency Amount" := DtldCVLedgEntryBuf.Amount; CurrencyLCY.InitRoundingPrecision; // Ende der hinzugefügten Zeilen. IF DtldCustLedgEntry2."Entry Type" IN [ ...

    Vorhandener Code 6

     ... ENDE; // Folgende Zeilen löschen. TotalAmountLCY := TotalAmountLCY + DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmountAddCurr := TotalAmountAddCurr + DtldCVLedgEntryBuf."Additional-Currency Amount"; WENN DtldCVLedgEntryBuf."Entry Type" = DtldCVLedgEntryBuf."Entry Type"::Application THEN BEGIN WENN DtldCVLedgEntryBuf."Amount (LCY)" >= 0 THEN BEGIN PositiveLCYAppAmt := PositiveLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; PositiveACYAppAmt := PositiveACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE SONST BEGINNEN NegativeLCYAppAmt := NegativeLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; NegativeACYAppAmt := NegativeACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; // Ende der gelöschten Zeilen. ENDE; ...

    Ersatzcode 6

     ... ENDE; // Fügen Sie die folgenden Zeilen hinzu. WENN NICHT MultipleDimensions, DANN BEGINNEN TotalAmountLCY := TotalAmountLCY + DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmountAddCurr := TotalAmountAddCurr + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE SONST BEGINNEN NewComb := TRUE; WENN Arrlen > 0 DANN FOR i:= 1 TO Arrlen DO BEGIN IF (DimArr[1][i] = DtldCustLedgEntry2."Initial Entry Global Dim. 1") UND (DimArr[2][i] = DtldCustLedgEntry2."Initial Entry Global Dim. 2") DANN BEGINNEN NewComb := FALSE; TotalAmtMD[i] += DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmtAddCurMD[i] += DtldCVLedgEntryBuf."Additional-Currency Amount"; i := Arrlen; ENDE; ENDE; WENN NewComb, DANN BEGINNEN Arrlen += 1; DimArr[1][Arrlen] := DtldCustLedgEntry2."Initial Entry Global Dim. 1"; DimArr[2][Arrlen] := DtldCustLedgEntry2."Initial Entry Global Dim. 2"; TotalAmtMD[Arrlen] += DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmtAddCurMD[Arrlen] += DtldCVLedgEntryBuf."Additional-Currency Amount"; // Ende der hinzugefügten Zeilen. ENDE; ...

    Vorhandener Code 7

     ... ENDE; IF NOT (DtldCVLedgEntryBuf."Entry Type" IN [ ...

    Ersatzcode 7

     ... ENDE; // Fügen Sie die folgenden Zeilen hinzu. WENN DtldCVLedgEntryBuf."Entry Type" = DtldCVLedgEntryBuf."Entry Type"::Application THEN BEGIN WENN DtldCVLedgEntryBuf."Amount (LCY)" >= 0 THEN BEGIN PositiveLCYAppAmt := PositiveLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; PositiveACYAppAmt := PositiveACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE SONST BEGINNEN NegativeLCYAppAmt := NegativeLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; NegativeACYAppAmt := NegativeACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE; ENDE; // Ende der hinzugefügten Zeilen. IF NOT (DtldCVLedgEntryBuf."Entry Type" IN [ ...

    Vorhandener Code 8

     ... WENN (TotalAmountLCY <> 0) ODER // Folgende Zeilen löschen. (TotalAmountAddCurr <> 0) AND (GLSetup."Zusätzliche Berichtswährung" <> '') DANN BEGINNEN InitGLEntry(CustPostingGr."Debitorenkonto",TotalAmountLCY,TotalAmountAddCurr,TRUE,TRUE); InsertGLEntry(TRUE); // Ende der gelöschten Zeilen. ENDE; ...

    Ersatzcode 8

     ... // Fügen Sie die folgenden Zeilen hinzu. WENN NICHT MultipleDimensions, DANN BEGINNEN WENN (TotalAmountLCY <> 0) ODER (TotalAmountAddCurr <> 0) AND (GLSetup."Zusätzliche Berichtswährung" <> '') DANN BEGINNEN InitGLEntry(CustPostingGr."Debitorenkonto",TotalAmountLCY,TotalAmountAddCurr,TRUE,TRUE); InsertGLEntry(TRUE); ENDE; ENDE SONST BEGINNEN FOR i := 1 TO Arrlen DO BEGIN WENN (TotalAmtMD[i] <> 0) ODER (TotalAmtAddCurMD[i] <> 0) AND (GLSetup."Zusätzliche Berichtswährung" <> '') DANN BEGINNEN GenJnlLine."Shortcut Dimension 1 Code" := DimArr[1][i]; GenJnlLine."Shortcut Dimension 2 Code" := DimArr[2][i]; InitGLEntry(CustPostingGr."Debitorenkonto",TotalAmtMD[i],TotalAmtAddCurMD[i],TRUE,TRUE); InsertGLEntry(TRUE); ENDE; ENDE; // Ende der hinzugefügten Zeilen. ENDE; ... 
  2. Fügen Sie der Funktion UnapplyVendLedgEntry die folgenden lokalen Variablen hinzu:

     MultipleDimensions@1170000004 : Boolean; VendEntryAppPostEntries@1170000003: Codeeinheit 227; TotalAmtMD@1170000001 : ARRAY [10] OF Decimal; TotalAmtAddCurMD@1170000000 : ARRAY [10] OF Decimal; DimArr@1170000007: ARRAY [2,10] OF Code[10]; Arrlen@1170000006 : Ganzzahl; NewComb@1170000005 : Boolean; 
  3. Ändern Sie den Code in der Funktion UnapplyVendLedgEntry in der Gen. Jnl.-Post Line Codeunit (12) wie folgt: Vorhandener Code 1

     ... DtldVendLedgEntry2.FINDSET; // Folgende Zeilen löschen. LedgEntryDim.SETRANGE("Table ID",DATABASE::"Vendor Ledger Entry"); LedgEntryDim.SETRANGE("Eintragsnr.,DtldVendLedgEntry2."Angewandte Vend. Ledger-Eintragsnr."); TempJnlLineDim.RESET; TempJnlLineDim.DELETEALL; DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); IF TempJnlLineDim.GET(DATABASE::"Vendor Ledger Entry",'','',0,0,GLSetup."Global Dimension 1 Code") THEN GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 1 Code" := ''; IF TempJnlLineDim.GET(DATABASE::"Vendor Ledger Entry",'','',0,0,GLSetup."Global Dimension 2 Code") THEN GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 2 Code" := ''; // Ende der gelöschten Zeilen. WIEDERHOLEN ...

    Ersatzcode 1

     ... DtldVendLedgEntry2.FINDSET; // Fügen Sie die folgenden Zeilen hinzu. MultipleDimensions := VendEntryAppPostEntries.MultipleDimensions(DtldVendLedgEntry2."Initial Entry Global Dim. 1", DtldVendLedgEntry2."Initial Entry Global Dim. 2",DtldVendLedgEntry2); // Ende der hinzugefügten Zeilen. WIEDERHOLEN ...

    Vorhandener Code 2

     ... WIEDERHOLEN // Folgende Zeile löschen. DtldVendLedgEntry2.TESTFIELD(Unapplied,FALSE); // Ende der gelöschten Zeile. ...

    Ersatzcode 3

     ... WIEDERHOLEN // Fügen Sie die folgenden Zeilen hinzu. IF DtldVendLedgEntry2."Angewandte Verkaufsbucheintragsnr." <> 0 DANN BEGINNEN LedgEntryDim.RESET; LedgEntryDim.SETRANGE("Table ID",DATABASE::"Vendor Ledger Entry"); LedgEntryDim.SETRANGE("Eintragsnr.,DtldVendLedgEntry2."Angewandte Vend. Ledger-Eintragsnr."); TempJnlLineDim.RESET; TempJnlLineDim.DELETEALL; DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); IF TempJnlLineDim.GET(DATABASE::"Vendor Ledger Entry",'','',0,0,GLSetup."Global Dimension 1 Code") THEN GenJnlLine."Shortcut Dimension 1 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 1 Code" := ''; IF TempJnlLineDim.GET(DATABASE::"Vendor Ledger Entry",'','',0,0,GLSetup."Global Dimension 2 Code") THEN GenJnlLine."Shortcut Dimension 2 Code" := TempJnlLineDim."Dimension Value Code" ANDERS GenJnlLine."Shortcut Dimension 2 Code" := ''; ENDE SONST BEGINNEN GenJnlLine."Shortcut Dimension 1 Code" := DtldVendLedgEntry2."Initial Entry Global Dim. 1"; GenJnlLine."Shortcut Dimension 2 Code" := DtldVendLedgEntry2."Initial Entry Global Dim. 2"; ENDE; // Ende der hinzugefügten Zeilen. ...

    Vorhandener Code 4

     ... NewDtldVendLedgEntry := DtldVendLedgEntry2; ...

    Ersatzcode 4

     ... // Fügen Sie die folgende Zeile hinzu. DtldVendLedgEntry2.TESTFIELD(Unapplied,FALSE); // Ende der hinzugefügten Zeile. NewDtldVendLedgEntry := DtldVendLedgEntry2; ...

    Vorhandener Code 5

     ... ENDE; // Folgende Zeilen löschen. TotalAmountLCY := TotalAmountLCY + DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmountAddCurr := TotalAmountAddCurr + DtldCVLedgEntryBuf."Additional-Currency Amount"; WENN DtldCVLedgEntryBuf."Entry Type" = DtldCVLedgEntryBuf."Entry Type"::Application THEN BEGIN WENN DtldCVLedgEntryBuf."Amount (LCY)" >= 0 THEN BEGIN PositiveLCYAppAmt := PositiveLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; PositiveACYAppAmt := PositiveACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE SONST BEGINNEN NegativeLCYAppAmt := NegativeLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; NegativeACYAppAmt := NegativeACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; // Ende der gelöschten Zeilen. ENDE; ...

    Ersatzcode 5

     ... ENDE; // Fügen Sie die folgenden Zeilen hinzu. WENN NICHT MultipleDimensions, DANN BEGINNEN TotalAmountLCY := TotalAmountLCY + DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmountAddCurr := TotalAmountAddCurr + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE SONST BEGINNEN NewComb := TRUE; WENN Arrlen > 0 DANN FOR i:= 1 TO Arrlen DO BEGIN IF (DimArr[1][i] = DtldVendLedgEntry2."Initial Entry Global Dim. 1") UND (DimArr[2][i] = DtldVendLedgEntry2."Initial Entry Global Dim. 2") DANN BEGINNEN NewComb := FALSE; TotalAmtMD[i] += DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmtAddCurMD[i] += DtldCVLedgEntryBuf."Additional-Currency Amount"; i := Arrlen; ENDE; ENDE; WENN NewComb, DANN BEGINNEN Arrlen += 1; DimArr[1][Arrlen] := DtldVendLedgEntry2."Initial Entry Global Dim. 1"; DimArr[2][Arrlen] := DtldVendLedgEntry2."Initial Entry Global Dim. 2"; TotalAmtMD[Arrlen] += DtldCVLedgEntryBuf."Amount (LCY)"; TotalAmtAddCurMD[Arrlen] += DtldCVLedgEntryBuf."Additional-Currency Amount"; // Ende der hinzugefügten Zeilen. ENDE; ...

    Vorhandener Code 6

     ... ENDE; ...

    Ersatzcode 6

     ... ENDE; // Fügen Sie die folgenden Zeilen hinzu. WENN DtldCVLedgEntryBuf."Entry Type" = DtldCVLedgEntryBuf."Entry Type"::Application THEN BEGIN WENN DtldCVLedgEntryBuf."Amount (LCY)" >= 0 THEN BEGIN PositiveLCYAppAmt := PositiveLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; PositiveACYAppAmt := PositiveACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE SONST BEGINNEN NegativeLCYAppAmt := NegativeLCYAppAmt + DtldCVLedgEntryBuf."Amount (LCY)"; NegativeACYAppAmt := NegativeACYAppAmt + DtldCVLedgEntryBuf."Additional-Currency Amount"; ENDE; ENDE; // Ende der hinzugefügten Zeilen.

    Vorhandener Code 7

     ... WENN (TotalAmountLCY <> 0) ODER // Folgende Zeilen löschen. (TotalAmountAddCurr <> 0) AND (GLSetup."Zusätzliche Berichtswährung" <> '') DANN BEGINNEN HandlDtlAddjustment(DebitAdjustment,DebitAddjustmentAddCurr,CreditAdjustment,CreditAdjustmentAddCurr, TotalAmountLCY,TotalAmountAddCurr,VendPostingGr."Payables Account"); InsertGLEntry(TRUE); // Ende der gelöschten Zeilen. ENDE; ...

    Ersatzcode 7

     ... WENN NICHT MultipleDimensions, DANN BEGINNEN // Fügen Sie die folgenden Zeilen hinzu. WENN (TotalAmountLCY <> 0) ODER (TotalAmountAddCurr <> 0) AND (GLSetup."Zusätzliche Berichtswährung" <> '') DANN BEGINNEN InitGLEntry(VendPostingGr."Kreditorenkonto",TotalAmountLCY,TotalAmountAddCurr,TRUE,TRUE); InsertGLEntry(TRUE); ENDE; ENDE SONST BEGINNEN FOR i := 1 TO Arrlen DO BEGIN WENN (TotalAmtMD[i] <> 0) ODER (TotalAmtAddCurMD[i] <> 0) AND (GLSetup."Zusätzliche Berichtswährung" <> '') DANN BEGINNEN GenJnlLine."Shortcut Dimension 1 Code" := DimArr[1][i]; GenJnlLine."Shortcut Dimension 2 Code" := DimArr[2][i]; InitGLEntry(VendPostingGr."Kreditorenkonto",TotalAmtMD[i],TotalAmtAddCurMD[i],TRUE,TRUE); InsertGLEntry(TRUE); ENDE; ENDE; // Ende der hinzugefügten Zeilen. ENDE; ... 
  4. Fügen Sie der Codeeinheit „CustEntry-Apply Posted Entries" (226) die folgende Funktion hinzu:

     VERFAHREN MultipleDimensions@1170000000(Dim1Code@1170000000: Code[10];Dim2Code@1170000001: Code[10];VAR DtldCustLedEntry@1170000002: Datensatz 379): Boolean; BEGINNEN DtldCustLedEntry.SETFILTER("Initial Entry Global Dim. 1",'<>%1',Dim1Code); WENN DtldCustLedEntry.FINDFIRST, DANN BEGIN DtldCustLedEntry.SETRANGE("Initial Entry Global Dim. 1"); EXIT(TRUE); ENDE; DtldCustLedEntry.SETRANGE("Initial Entry Global Dim. 1"); DtldCustLedEntry.SETFILTER("Initial Entry Global Dim. 2",'<>%1',Dim2Code); WENN DtldCustLedEntry.FINDFIRST, DANN BEGIN DtldCustLedEntry.SETRANGE("Initial Entry Global Dim. 2"); EXIT(TRUE); ENDE; DtldCustLedEntry.SETRANGE("Initial Entry Global Dim. 2"); EXIT(FALSE); ENDE; 
  5. Fügen Sie der Codeeinheit „VendEntry-Apply Posted Entries" (227) die folgende Funktion hinzu:

     VERFAHREN MultipleDimensions@1170000000(Dim1Code@1170000000: Code[10];Dim2Code@1170000001: Code[10];DtldVendLedEntry@1170000002: Datensatz 380): Boolean; BEGINNEN DtldVendLedEntry.SETFILTER("Initial Entry Global Dim. 1",'<>%1',Dim1Code); WENN DtldVendLedEntry.FINDFIRST, DANN BEGIN DtldVendLedEntry.SETRANGE("Initial Entry Global Dim. 1"); EXIT(TRUE); ENDE; DtldVendLedEntry.SETRANGE("Initial Entry Global Dim. 1"); DtldVendLedEntry.SETFILTER("Initial Entry Global Dim. 2",'<>%1',Dim2Code); WENN DtldVendLedEntry.FINDFIRST, DANN BEGIN DtldVendLedEntry.SETRANGE("Initial Entry Global Dim. 2"); EXIT(TRUE); ENDE; DtldVendLedEntry.SETRANGE("Initial Entry Global Dim. 2"); EXIT(FALSE); 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 Service Pack 1

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