Kui loote välismaise maksefaili Microsoft Dynamics NAV saksakeelses versioonis koos lisandmoodul Maksed kaasatud

Rakenduskoht
Dynamics NAV 2009 Service Pack 1 Dynamics NAV 2009 R2

See artikkel kehtib microsoft Dynamics NAV saksa (de) keele lokaadi kohta.

Sümptomid

Microsoft Dynamics NAV saksakeelses versioonis, mis sisaldab lisandmoodul Maksed välismaise maksefaili loomisel ilmnevad järgmised valed ekspordiprobleemid.

  • Oletame, et luua välismaise makse fail, mis on tasu konto. Kui tasude konto erineb makseks kasutatavast pangakontost, siis märkate, et maksefaili kirjutatakse vale pangakonto number.
  • Faili väli V-Satz (10) täidetakse ootamatult väärtusega "N". Eeldate, et välja andmed on tühjad.
  • Faili väli T-Satz (10a) täidetakse ootamatult väljaga DE. Eeldate, et välja andmed on "US", kuna hankija pärineb USA-st ja ainult pangakonto asub DE-s.

See probleem ilmneb järgmistes toodetes:

  • Microsoft Dynamics NAV 2009 hoolduspaketi Service Pack 1 (SP1) saksakeelne versioon
  • Microsoft Dynamics NAV 2009 R2 saksakeelne versioon

Lahendus

Kiirparanduse teave

Microsoftilt on nüüd saadaval toetatud kiirparandus. Siiski on see mõeldud ainult selles artiklis kirjeldatud probleemi lahendamiseks. Rakendage see ainult süsteemidele, kus esineb see konkreetne probleem. See kiirparandus võib saada täiendavaid katseid. Seega, kui see probleem ei mõjuta teid tõsiselt, soovitame oodata järgmist Microsoft Dynamics NAV 2009 hoolduspaketti või järgmist Microsoft Dynamics NAV versiooni, mis sisaldab seda kiirparandust.

Märkus. Erijuhtudel võidakse tavaliselt tugiteenuse kõnede eest tehtud tasud tühistada, kui Microsoft Dynamicsi ja seotud toodete tehniline tugitöötaja leiab, et konkreetne värskendus lahendab teie probleemi. Tavapärased toetuskulud kehtivad täiendavatele tugiteenustega seotud küsimustele ja probleemidele, mis ei vasta kõnealuse värskenduse tingimustele.

            
          

Installiteave

Microsoft pakub programmeerimise näiteid ainult illustreerimiseks, ilma et garantii oleks väljendatud või kaudselt. See hõlmab kaubastatavuse või kindlaks otstarbeks sobivuse kaudseid garantiisid, kuid mitte ainult. Selles artiklis eeldatakse, et olete tuttav kuvatava programmeerimiskeelega ja tööriistadega, mida kasutatakse protseduuride loomiseks ja silumiseks. Microsofti tugiteenuste insenerid saavad aidata selgitada konkreetse protseduuri funktsionaalsust, kuid nad ei muuda neid näiteid selleks, et pakkuda teie vajadustele vastavaid lisafunktsioone või koostada protseduure.

Märkus. Enne selle kiirparanduse installimist veenduge, et kõik Microsoft Navisioni klientrakenduse kasutajad oleksid süsteemist välja logitud. See hõlmab ka Microsoft Navision Application Servicesi (NAS) klientkasutajaid. Peaksite olema ainus klientkasutaja, kes on sisse logitud, kui rakendate selle kiirparanduse.

Selle kiirparanduse rakendamiseks peab teil olema arendaja litsents.

Soovitame, et aknas Windowsi sisselogimised või aknas Andmebaasi sisselogimised olevale kasutajakontole määrataks "SUPER" rolli ID. Kui kasutajakontole ei saa superrolli ID-d määrata, peate kontrollima, kas kasutajakontol on järgmised õigused.

  • Muudetava objekti muutmisõigus.
  • Süsteemiobjekti ID 5210 ja süsteemiobjekti ID 9015 täitmisõigus.

                
Märkus. Teil pole andmesalvede jaoks õigusi, kui te ei pea tegema andmete parandamist.

Koodi muudatused

Märkus. Enne paranduste rakendamist tööarvutitele testige koodiparandusi alati kontrollitud keskkonnas.
Probleemi lahendamiseks tehke järgmist.

  1. Muutke AZV-koodiplokis (5001905) funktsiooni Open Exportfile koodi järgmiselt.
    Muutke globaalse muutuja määratlust järgmiselt.

    • Vana määratlus: Dtaus : kood[150];

    • Uus määratlus: Dtaus : kood[260];

    Olemasolev kood

    ...
         CompanyInfo.GET;
    // Delete the following line.  
      NameOfCompany := CheckFormat(FORMAT(UPPERCASE(CompanyInfo.Name),27));
    
      FormatAddr.BankAcc(AddrArray,BankAccount); 
    ...
    

    Asenduskood

    ...
       CompanyInfo.GET;
    // Add the following line. 
      NameOfCompany := COPYSTR(CheckFormat(FORMAT(UPPERCASE(CompanyInfo.Name),27)),1,MAXSTRLEN(NameOfCompany));
    
      FormatAddr.BankAcc(AddrArray,BankAccount);
    ...
    
  2. Muutke funktsiooni FormatBankAcc koodi AZV koodiplokis (5001905) järgmiselt.
    Looge uus kohalik muutuja BankAccount3 järgmiselt.

    BankAccount3@: Kirje 270

    Olemasolev kood

    ...
       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; 
    ...
    

    Asenduskood

    ...
       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. Muutke funktsiooni VendBankFormat koodi AZV koodiplokis (5001905) järgmiselt.
    Olemasolev kood

    ...
            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,' ')));  
    ...
    

    Asenduskood

    ...
             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. Muutke funktsiooni PaymFileHeader koodi AZV-koodiplokis (5001905) järgmiselt.
    Olemasolev kood

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

    Asenduskood

    ...
           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. Muutke funktsiooni CreateRegistration koodi AZV-koodiplokis (5001905) järgmiselt.
    Kohaliku muutuja InfoTransitUnsalableInvL kustutamine: kood[1]

    Olemasolev kood

    ...
           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);
    ...
    

    Asenduskood

    ...
        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. Muutke funktsiooni CheckFormat koodi AZV-koodiplokis (5001905) järgmiselt.
    Olemasolev kood

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

    Asenduskood

    ...
         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. Muutke AZV-koodiplokis (5001905) funktsiooni CheckPaymFile parameetri Drive määratlust järgmiselt.

    • Vana määratlus: Dtaus : Draiv : kood[150];

    • Uus määratlus: Dtaus : draiv : kood[250];

  8. Muutke funktsiooni TestCompanyInfo koodi AZV-koodiplokis (5001905) järgmiselt.
    Olemasolev kood

    ...
        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 
    ...
    

    Asenduskood

    ...
       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  
    ...
    

          

Eeltingimused

Selle kiirparanduse rakendamiseks peab teil olema installitud üks järgmistest toodetest:

  • Microsoft Dynamics NAV 2009 hoolduspaketi Service Pack 1 (SP1) saksakeelne versioon
  • Microsoft Dynamics NAV 2009 R2 saksakeelne versioon

                
              

Eemaldamisteave

Seda kiirparandust ei saa eemaldada.

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.

Viited

VSTF DynamicsNAV SE: 245257; 254071; 277428

Märkus. See on otse Microsofti tugiteenuste organisatsioonist loodud FAST PUBLISH-artikkel. Käesolevas artiklis sisalduv teave on esitatud kujul, mis on seotud tekkivate küsimustega. Materjali kättesaadavaks tegemise kiiruse tõttu võivad materjalid sisaldada kirjavigu ja neid võib igal ajal ette teatamata läbi vaadata. Muid kaalutlusi leiate teemast Kasutustingimused .