販売注文処理で [Sales Transaction Entry]\(販売トランザクションエントリ\) ウィンドウを開くときの "前のトランザクション レベルの転記セッションが処理を完了していません" エラー

この記事では、Microsoft Dynamics GP の販売注文処理または Microsoft Business Solutions - グレート プレーンズで Sales Transaction Entry ウィンドウを開こうとすると発生する可能性がある、 以前のトランザクション レベルの転記セッションが処理エラーを完了していない 場合の解決策について説明します。

適用対象: Microsoft Dynamics GP
元の KB 番号: 852623

現象

Microsoft Dynamics GP の販売注文処理または Microsoft Business Solutions - グレート プレーンズで [Sales Transaction Entry]\(販売トランザクション エントリ\) ウィンドウを開こうとすると、次のエラー メッセージが表示されることがあります。

前のトランザクション レベルの転記セッションが処理を完了していません。 完了するまでの時間をお待ちください。 失敗したと思われる場合は、グレートプレーンズからログアウトし、再度ログインしてトランザクションを回復します。

注:

[Sales Transaction Entry]\(販売トランザクション エントリ\) ウィンドウを開くには、[ トランザクション] を選択し、[ Sales] をポイントして、[ Sales Transaction Entry]\(販売トランザクション エントリ\) を選択します。

原因

この問題は、レコードがSY00500 テーブル、SY00800 テーブル、またはSOP10100 テーブルでロックされている場合に発生する可能性があります。 レコードのバッチ番号が空白であるか、ユーザー ID がバッチ番号として一覧表示されます。

解決方法

この問題を解決するには、次の手順を実行します。

  1. すべてのユーザーに Microsoft Dynamics GP を終了させる。

  2. 会社データベースのバックアップを作成します。

  3. SQL Query Analyzer で、DYNAMICS データベースに対してSY00800 テーブルで次の delete ステートメントを実行します。

    DELETE SY00800
    
  4. 会社データベースに対して次の両方のステートメントを実行して、SY00500 テーブル内の問題レコードを探します。

    注:

    次のステートメントでは、 xxx はエラーを含むユーザー ID を表します。

    SELECT * from SY00500 where BACHNUMB = ''
    SELECT * from SY00500 where BACHNUMB = 'xxx'
    
  5. 空白の BACHNUMB フィールドで返されるレコードがある場合は、次の delete ステートメントを使用します。

    DELETE SY00500 where BACHNUMB = ''
    
  6. BACHNUMB フィールドにユーザー ID で返されるレコードがある場合は、次の delete ステートメントを使用します。

    注:

    次のステートメントでは、 xxx はエラーを含むユーザー ID を表します。

    DELETE SY00500 where BACHNUMB ='xxx'
    
  7. [Sales Transaction Entry]\(販売トランザクション エントリ\) ウィンドウで既存のドキュメントを選択できることを確認します。 このウィンドウを開くには、[ トランザクション] を選択し、[ Sales] をポイントし、[ Sales Transaction Entry]\(販売トランザクション エントリ\) を選択します。 既存のドキュメントを削除する場合は、[削除] を選択 します。 既存のドキュメントを無効にする場合は、[Void] を選択 します

  8. 引き続きエラー メッセージが表示される場合、または [Sales Transaction Entry]\(販売トランザクション エントリ\) ウィンドウで既存のドキュメントを選択できない場合は、SQL Query Analyzer で会社データベースに対して次のスクリプトを実行して、SOP10100 テーブル内の問題レコードを見つけます。

    注:

    次のスクリプトでは、 xxx はエラーを含むユーザー ID を表します。

    SELECT BACHNUMB,* from SOP10100 where BACHNUMB = '' SELECT BACHNUMB,* from SOP10100 where BACHNUMB = '<xxx>'
    SELECT * FROM SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    SELECT * FROM SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    SELECT * FROM SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    SELECT * FROM SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    
  9. 返されたレコードをメモし、SQL Query Analyzer で次のステートメントを実行して、問題レコードをSOP10100 テーブルから削除します。

    注:

    • トランザクションが在庫モジュールと債権管理モジュールに転記されていることを確認する必要があります。 トランザクションが [在庫] モジュールと [売掛金管理] モジュールに転記されなかった場合は、削除ステートメントを実行した後、[販売取引エントリ] ウィンドウでトランザクションを再入力する必要があります。
    • 次のステートメントでは、 xxx はエラーを含むユーザー ID を表します。
    DELETE SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    DELETE SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    DELETE SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    DELETE SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    DELETE SOP10100 where BACHNUMB = '' DELETE SOP10100 where BACHNUMB = 'xxx'
    
  10. Microsoft Dynamics GP で、Microsoft Dynamics GP メニューの [メンテナンス ] をポイントし、[ リンクの確認] を選択します。

  11. [系列] の一覧で [Sales] を選択し、Sales Work テーブル グループでチェックリンク プロシージャを実行します。

  12. トランザクションが売掛金管理モジュールおよび在庫モジュールに転記されなかった場合は、[販売取引エントリ] ウィンドウでトランザクションを再入力します。