Beim Erstellen einer fremden Zahlungsdatei in der deutschen Version von Microsoft Dynamics NAV mit der AddOn enthalten auftreten falsche Export Probleme


Dieser Artikel gilt für Microsoft Dynamics NAV für das Gebietsschema Deutsch (de).

Problembeschreibung


In der deutschen Version von Microsoft Dynamics NAV mit der AddOn enthalten beim Erstellen einer Datei Auslandszahlungen Probleme die folgenden falschen exportieren:
  • Angenommen Sie, Sie Auslandszahlungen Datei erstellen ein Konto Gebühren. Wenn Gebühren Konto das Konto, die für die Zahlung verwendet wird unterscheidet, bemerken Sie, dass eine falsche Kontonummer in der Zahlungsdatei geschrieben wird.
  • Die V-Satz (10) in der Datei "N" unerwartet gefüllt wird. Erwarten Sie die Daten im Feld leer sein.
  • Die T-Satz (10a) in der Datei "De" unerwartet gefüllt wird. Die Daten im Feld "US", da die Hersteller aus den USA und nur das Bankkonto in DE erwartet.

Dieses Problem tritt in den folgenden Produkten auf:
  • Die deutsche Version von Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Die deutsche Version von Microsoft Dynamics NAV 2009 R2

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-Supportmitarbeiter können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, sie werden jedoch diese Beispiele nicht verändern um eine erweiterte Funktionalität aufzuzeigen oder Prozeduren entwickeln, die Ihren Anforderungen entsprechen.

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 keinen Datenspeicher Rechte nur Daten zu reparieren.

Ä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:
  1. Ändern Sie den Code in der Funktion Öffnen Exportdatei AZV Codeunit (5001905) wie folgt:
    Ändern Sie die Definition der globalen Variablen wie folgt
    • Alte Definition: Dtaus: Code [150]
    • Neue Definition: Dtaus: Code [260]
    Vorhandener code
    ...     CompanyInfo.GET;
    // Delete the following line.
    NameOfCompany := CheckFormat(FORMAT(UPPERCASE(CompanyInfo.Name),27));

    FormatAddr.BankAcc(AddrArray,BankAccount);
    ...
    Neuer code
    ...   CompanyInfo.GET;
    // Add the following line.
    NameOfCompany := COPYSTR(CheckFormat(FORMAT(UPPERCASE(CompanyInfo.Name),27)),1,MAXSTRLEN(NameOfCompany));

    FormatAddr.BankAcc(AddrArray,BankAccount);
    ...
  2. Ändern Sie den Code in der Funktion FormatBankAcc in der Codeunit " AZV " (5001905) wie folgt:
    Erstellen Sie eine neue lokale Variable BankAccount3:

    BankAccount3 @: Datensatz 270

    Vorhandener code
    ...   IF (PaymLedgEntry."Account No. Charges"<>") AND (PaymLedgEntry."Account No. Charges"<>PaymLedgEntry."Bank Account No.") THEN
    BEGIN
    // Delete the following lines.
    BankAccount.GET(PaymLedgEntry."Account No. Charges");
    "Bank Code" := BankAccount."Bank Branch No.";
    IF STRLEN("Bank Code") = 0 THEN
    ERROR(Text1105400002,BankAccount."No.");
    BankCodeBank := FormatBankCode("Bank Code");
    IF STRLEN(BankCodeBank) <> 8 THEN
    ERROR(Text1105400003,BankAccount."No.");
    BankCodeRec3 := BankCodeBank;
    Account := BankAccount."Bank Account No.";
    IF STRLEN(Account) = 0 THEN
    ERROR(Text1105400004,BankAccount."No.");
    AccountBank := FormatAccount(Account);
    IF STRLEN(AccountBank) >10 THEN
    ERROR(
    Text1105400005,BankAccount."No.");
    AccountRec3 := AccountBank;
    // End of the deleted lines.

    END ELSE BEGIN
    BankCodeRec3 := PADSTR('',8,'0');
    AccountRec3 := PADSTR('',10,'0');
    END;
    ...
    Neuer code
    ...   IF (PaymLedgEntry."Account No. Charges"<>") AND (PaymLedgEntry."Account No. Charges"<>PaymLedgEntry."Bank Account No.") THEN
    BEGIN

    // Add the following lines.
    BankAccount3.GET(PaymLedgEntry."Account No. Charges");
    IF STRLEN(BankAccount3."Bank Branch No.") = 0 THEN
    ERROR(Text1105400002,BankAccount3."No.");
    BankCodeRec3 := FormatBankCode(BankAccount3."Bank Branch No.");
    IF STRLEN(BankCodeRec3) <> 8 THEN
    ERROR(Text1105400003,BankAccount3."No.");
    IF STRLEN(BankAccount3."Bank Account No.") = 0 THEN
    ERROR(Text1105400004,BankAccount3."No.");
    AccountRec3 := FormatAccount(BankAccount3."Bank Account No.");
    IF STRLEN(AccountRec3) >10 THEN
    ERROR(
    Text1105400005,BankAccount3."No.");
    //End of the added lines.

    END ELSE BEGIN
    BankCodeRec3 := PADSTR('',8,'0');
    AccountRec3 := PADSTR('',10,'0');
    END;
    ...
  3. Ändern Sie den Code in der Funktion VendBankFormat in der Codeunit " AZV " (5001905) wie folgt:
    Vorhandener code
    ...        ERROR(Text1105400129,Country."Bank Country Code");
    END;

    // Delete the following line.
    VendCountry := Country."Bank Country Code";

    IF PostedAZV.IBAN <>'' THEN BEGIN
    Account := DELCHR(PostedAZV.IBAN);
    Account := CheckFormat(UPPERCASE(PADSTR(Account,34,' ')));
    ...
    Neuer code
    ...         ERROR(Text1105400129,Country."Bank Country Code");
    END;

    // Add the following line.
    VendCountry := PostedAZV."Country Code";

    IF PostedAZV.IBAN <> '' THEN BEGIN
    Account := DELCHR(PostedAZV.IBAN);
    Account := CheckFormat(UPPERCASE(PADSTR(Account,34,' ')));
    ...
  4. Ändern Sie den Code in der Funktion PaymFileHeader in der Codeunit " AZV " (5001905) wie folgt:
    Vorhandener code
    ...     IF STRLEN(CompanyNo) <>8 THEN
    ERROR(Text1105400137,BankAccount."No.");
    END;

    Account := BankAccount."Bank Account No.";
    IF STRLEN(Account) = 0 THEN
    ...
    Neuer code
    ...       IF STRLEN(CompanyNo) <>8 THEN
    ERROR(Text1105400137,BankAccount."No.");

    // Add the following lines.
    END ELSE BEGIN
    IF CompanyNo = '' THEN
    CompanyNo := PADSTR('',8,'0');
    // End of the added lines.

    END;

    Account := BankAccount."Bank Account No.";
    IF STRLEN(Account) = 0 THEN
    ...
  5. Ändern Sie den Code in der Funktion CreateRegistration in der Codeunit " AZV " (5001905) wie folgt:
    Löschen Sie die lokale Variable InfoTransitUnsalableInvL: Code [1]

    Vorhandener code
    ...       PassagingTransitL := 'N';
    BrokenTransitL := 'N';
    // Delete the following line.
    InfoTransitUnsalableInvL := 'N';
    InfoTransitUnsalableForeignL := 'N';
    IF RegistrationSet."Passaging Transit" THEN
    PassagingTransitL := 'J';
    IF RegistrationSet."Broken Transit" THEN BEGIN
    BrokenTransitL := 'J';
    RegistrationSet.TESTFIELD("Add. Information Transit");
    Transit := COPYSTR(Transit,1,62) +
    PADSTR(CheckFormat(FORMAT(UPPERCASE(RegistrationSet."Add. Information Transit"),40)),40,' ');
    END;

    // Delete the following lines.
    IF RegistrationSet."Info Transit unsalable Inv" THEN
    InfoTransitUnsalableInvL := 'J';
    // End of the deleted lines.

    IF RegistrationSet."Info Transit unsalable forei." THEN
    InfoTransitUnsalableForeignL := 'J';

    Z := Text1105400025 +
    PADSTR(RegistrationSet."Itemname Trading Goods",27,' ') +
    NumToString(RegistrationSet."Capitel No. Goods",2,'0') +
    PADSTR('',7,'0') +
    PADSTR(BankCountries."Bank Country Short Name",7,' ') +
    PADSTR(RegistrationSet."Country Code",3,' ') +
    NumToString(FORMAT(ROUND(MAmount,1,'<'),12,1),12,'0') +
    PassagingTransitL +
    BrokenTransitL +
    // Delete the following line.
    InfoTransitUnsalableInvL +
    InfoTransitUnsalableForeignL +
    Transit;
    Exportfile.SEEK(Exportfile.POS-2);
    ...
    Neuer code
    ...    PassagingTransitL := 'N';
    BrokenTransitL := 'N';
    InfoTransitUnsalableForeignL := 'N';
    IF RegistrationSet."Passaging Transit" THEN
    PassagingTransitL := 'J';
    IF RegistrationSet."Broken Transit" THEN BEGIN
    BrokenTransitL := 'J';
    RegistrationSet.TESTFIELD("Add. Information Transit");
    Transit := COPYSTR(Transit,1,62) +
    PADSTR(CheckFormat(FORMAT(UPPERCASE(RegistrationSet."Add. Information Transit"),40)),40,' ');
    END;
    IF RegistrationSet."Info Transit unsalable forei." THEN
    InfoTransitUnsalableForeignL := 'J';

    Z := Text1105400025 +
    PADSTR(RegistrationSet."Itemname Trading Goods",27,' ') +
    NumToString(RegistrationSet."Capitel No. Goods",2,'0') +
    PADSTR('',7,'0') +
    PADSTR(BankCountries."Bank Country Short Name",7,' ') +
    PADSTR(RegistrationSet."Country Code",3,' ') +
    NumToString(FORMAT(ROUND(MAmount,1,'<'),12,1),12,'0') +
    PassagingTransitL +
    BrokenTransitL +
    // Add the following line.
    PADSTR('',1,' ') +
    InfoTransitUnsalableForeignL +
    Transit;
    Exportfile.SEEK(Exportfile.POS-2);
    ...
  6. Ändern Sie den Code in der Funktion CheckFormat in der Codeunit " AZV " (5001905) wie folgt:
    Vorhandener code
    ...    WHILE STRPOS(FieldContent,'š') >0 DO
    FieldContent := COPYSTR(FieldContent,1,STRPOS(FieldContent,'š')-1) + Text1105400035 +
    COPYSTR(FieldContent,STRPOS(FieldContent,'š')+1,MAXSTRLEN(FieldContent));

    CheckRec := DELCHR(FieldContent,'=',Text1105400036);
    ...
    Neuer code
    ...     WHILE STRPOS(FieldContent,'š') >0 DO
    FieldContent := COPYSTR(FieldContent,1,STRPOS(FieldContent,'š')-1) + Text1105400035 +
    COPYSTR(FieldContent,STRPOS(FieldContent,'š')+1,MAXSTRLEN(FieldContent));

    // Add the following lines.
    WHILE STRPOS(FieldContent,'&') > 0 DO
    FieldContent := COPYSTR(FieldContent,1,STRPOS(FieldContent,'&')-1) + ' ' +
    COPYSTR(FieldContent,STRPOS(FieldContent,'&')+1,MAXSTRLEN(FieldContent));
    WHILE STRPOS(FieldContent,'$') > 0 DO
    FieldContent := COPYSTR(FieldContent,1,STRPOS(FieldContent,'$')-1) + ' ' +
    COPYSTR(FieldContent,STRPOS(FieldContent,'$')+1,MAXSTRLEN(FieldContent));
    WHILE STRPOS(FieldContent,'*') > 0 DO
    FieldContent := COPYSTR(FieldContent,1,STRPOS(FieldContent,'*')-1) + ' ' +
    COPYSTR(FieldContent,STRPOS(FieldContent,'*')+1,MAXSTRLEN(FieldContent));
    WHILE STRPOS(FieldContent,'%') > 0 DO
    FieldContent := COPYSTR(FieldContent,1,STRPOS(FieldContent,'%')-1) + ' ' +
    COPYSTR(FieldContent,STRPOS(FieldContent,'%')+1,MAXSTRLEN(FieldContent));
    //End of the added lines.

    CheckRec := DELCHR(FieldContent,'=',Text1105400036);
    ...
  7. Ändern Sie die Definition der Laufwerk-Parameters in der CheckPaymFile -Funktion in der Codeunit " AZV " (5001905) wie folgt:
    • Alte Definition: Dtaus: Laufwerk: Code [150]
    • Neue Definition: Dtaus: Laufwerk: Code [250]
  8. Ändern Sie den Code in der Funktion TestCompanyInfo in der Codeunit " AZV " (5001905) wie folgt:
    Vorhandener code
    ...    CompanyInfo.GET;
    // Delete the following line.
    CompName := CheckFormat(FORMAT(UPPERCASE(CompanyInfo.Name),27));
    BankAccount.GET(Bacc);
    "Bank Code" := BankAccount."Bank Branch No.";
    IF STRLEN("Bank Code") = 0 THEN
    ...
    Neuer code
    ...   CompanyInfo.GET;
    // Add the following line.
    CompName := COPYSTR(CheckFormat(FORMAT(UPPERCASE(CompanyInfo.Name),27)),1,MAXSTRLEN(CompName));
    BankAccount.GET(Bacc);
    "Bank Code" := BankAccount."Bank Branch No.";
    IF STRLEN("Bank Code") = 0 THEN
    ...

Voraussetzungen

Sie müssen eines der folgenden Produkte verfügen, um diesen Hotfix installieren:
  • Die deutsche Version von Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Die deutsche Version von Microsoft Dynamics NAV 2009 R2


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.

Referenzen


VSTF DynamicsNAV SE: 245257; 254071; 277428
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 .