AddOn 支払を含むドイツ語バージョンの Microsoft Dynamics NAV で外部支払ファイルを作成するときに、エクスポートの問題が正しく発生しない

適用先
Dynamics NAV 2009 Service Pack 1 Dynamics NAV 2009 R2

この記事は、ドイツ語 (de) 言語ロケールの Microsoft Dynamics NAV に適用されます。

現象

AddOn 支払が含まれているドイツ語バージョンの Microsoft Dynamics NAV では、外部支払ファイルを作成するときに、次の正しくないエクスポートの問題が発生します。

  • 課金アカウントを持つ外部支払ファイルを作成することを想定しています。 請求先アカウントが支払いに使用される銀行口座と異なる場合は、正しくない銀行口座番号が支払ファイルに書き込まれていることがわかります。
  • ファイル 内の V-Satz フィールド (10) は予期せず "N" で入力されます。 フィールド内のデータは空である必要があります。
  • ファイル 内の T-Satz フィールド (10a) が予期せず "DE" で入力されます。 仕入先が米国からのものであり、銀行口座のみが DE にあるため、フィールドのデータは "US" であると予想されます。

この問題は、次の製品で発生します。

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) のドイツ語バージョン
  • Microsoft Dynamics NAV 2009 R2 のドイツ語バージョン

解決策

修正プログラムの情報

サポートされている修正プログラムが Microsoft から入手できるようになりました。 ただし、この記事で説明されている問題を修正することのみを目的としています。 この特定の問題が発生しているシステムにのみ適用します。 この修正プログラムは、追加のテストを受け取る場合があります。 したがって、この問題の影響を大きく受けない場合は、次の Microsoft Dynamics NAV 2009 Service Pack またはこの修正プログラムを含む次の Microsoft Dynamics NAV バージョンを待つことをおすすめします。

注 特別なケースでは、Microsoft Dynamics および関連製品のテクニカル サポート プロフェッショナルが特定の更新プログラムによって問題が解決されると判断した場合、通常はサポート呼び出しに対して発生する料金が取り消されることがあります。 ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

            
          

インストール情報

Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。

注 この修正プログラムをインストールする前に、すべての Microsoft Navision クライアント ユーザーがシステムからログオフされていることを確認します。 これには、Microsoft Navision Application Services (NAS) クライアント ユーザーが含まれます。 この修正プログラムを実装するときにログオンする唯一のクライアント ユーザーである必要があります。

この修正プログラムを実装するには、開発者ライセンスが必要です。

[Windows ログイン] ウィンドウまたは [データベース ログイン] ウィンドウのユーザー アカウントに "SUPER" ロール ID を割り当てることをお勧めします。 ユーザー アカウントに "SUPER" ロール ID を割り当てることができない場合は、ユーザー アカウントに次のアクセス許可があることを確認する必要があります。

  • 変更するオブジェクトの [変更] アクセス許可。
  • システム オブジェクト ID 5210 オブジェクトとシステム オブジェクト ID 9015 オブジェクトの Execute アクセス許可。

                
メモ データ修復を実行する必要がない限り、データ ストアに対する権限は必要ありません。

コードの変更

メモ 運用環境のコンピューターに修正プログラムを適用する前に、制御された環境でコード修正を常にテストします。
この問題を解決するには、次の手順を実行します。

  1. AZV codeunit (5001905) の Open Exportfile 関数のコードを次のように変更します。
    グローバル変数の定義を次のように変更します。

    • 古い定義: Dtaus : Code[150];

    • 新しい定義: Dtaus : Code[260];

    既存のコード

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

    置換コード

    ...
       CompanyInfo.GET;
    // Add the following line. 
      NameOfCompany := COPYSTR(CheckFormat(FORMAT(UPPERCASE(CompanyInfo.Name),27)),1,MAXSTRLEN(NameOfCompany));
    
      FormatAddr.BankAcc(AddrArray,BankAccount);
    ...
    
  2. AZV codeunit (5001905) の FormatBankAcc 関数のコードを次のように変更します。
    次のように、新しいローカル変数 BankAccount3 を作成します。

    BankAccount3@ : レコード 270

    既存のコード

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

    置換コード

    ...
       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. AZV codeunit (5001905) の VendBankFormat 関数のコードを次のように変更します。
    既存のコード

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

    置換コード

    ...
             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. AZV codeunit (5001905) の PaymFileHeader 関数のコードを次のように変更します。
    既存のコード

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

    置換コード

    ...
           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. AZV codeunit (5001905) の CreateRegistration 関数のコードを次のように変更します。
    ローカル変数 InfoTransitUnsalableInvL を削除する: Code[1]

    既存のコード

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

    置換コード

    ...
        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. AZV codeunit (5001905) の CheckFormat 関数のコードを次のように変更します。
    既存のコード

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

    置換コード

    ...
         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. AZV codeunit (5001905) の CheckPaymFile 関数の Drive パラメーターの定義を次のように変更します。

    • 古い定義: Dtaus : ドライブ: Code[150];

    • 新しい定義: Dtaus : Drive : Code[250];

  8. AZV codeunit (5001905) の TestCompanyInfo 関数のコードを次のように変更します。
    既存のコード

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

    置換コード

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

          

前提条件

この修正プログラムを適用するには、次のいずれかの製品がインストールされている必要があります。

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) のドイツ語バージョン
  • Microsoft Dynamics NAV 2009 R2 のドイツ語バージョン

                
              

アンインストール情報

この修正プログラムを削除することはできません。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

VSTF DynamicsNAV SE: 245257;254071;277428

注: この資料は、"迅速な公開" を目的としてマイクロソフト サポート組織により直接作成されたものです。 ここに含まれる情報は、新しい問題に対応するため、そのままの状態で提供されます。 情報を迅速に公開するため、この資料には誤植などが含まれる可能性があり、また、予告なく改訂される場合があります。 その他の注意事項については、使用条件を参照してください。