この記事では、Microsoft Dynamics GP の Component トランザクション エントリ ウィンドウ に "逆引き問題" トランザクションを投稿したときに発生するエラーの解決策について説明します。
適用対象: Microsoft Dynamics GP
元の KB 番号: 952378
症状
Microsoft Dynamics GP の Component Transaction Entry ウィンドウに "逆引き問題" トランザクションを投稿しようとすると、次のエラー メッセージが表示されます。
このトランザクションでは、品目の数量が不十分です。
原因
この問題は、さまざまなテーブルに保留中の数量があるために発生する可能性があります。 保留中の数量は、未転記の選択ドキュメントまたは誤って更新されたテーブルのいずれかから取得できます。
解決方法
注記
この記事の手順に従う前に、問題が発生した場合に復元できるデータベースの完全なバックアップ コピーがあることを確認してください。
この問題を解決するには、さまざまなテーブルに保留中の数量があるかどうかを判断します。 保留中の数量がある場合は、保留中の選択ドキュメントを転記するか、テーブルを修正するために正しくない値を更新する必要があります。 この手順の一般的な手順は次のとおりです。
- 製造テーブルに保留中の数量がないことを確認します。
- 保留中の数量の原因となる未転記の選択ドキュメントがないことを確認します。
- 問題のある選択伝票に対して在庫トランザクションが転記されていることを確認します。
- 保留中の製造テーブルから無効な行を削除します。
- コンポーネントの "仕掛品" (WIP) 数量が正しいことを確認します。
- コンポーネントに対して発行された数量が正しいことを確認します。
- 逆の問題をもう一度完了してみてください。
手順 1: 製造テーブルに保留中の数量がないことを確認する
製造オーダーの保留中の数量を含むテーブルがいくつかあります。 次の表で、製造オーダーの保留中の数量を確認します。
- 製造オーダーロット発行テーブル (MOP1020)
- 製造指図の保留ビンテーブル (MOP1025)
- 製造オーダ保留ビン Trx テーブル (MOP1026)
これらのテーブルにレコードが必要な唯一の例外は、[コンポーネント トランザクションエントリ] ウィンドウに "未転記の保存された選択" ドキュメントがある場合です。 これらのテーブルにレコードがある場合、保留中の数量がどのピック伝票またはどの「製造指図書」の入庫と関連付けられているかを確認する必要があります。 これを行うには、次の手順を実行します。
使用する Microsoft SQL Server のバージョンに応じて、SQL Server Management Studio を起動するか、SQL Query Analyzer を起動します。 これを行うには、次のいずれかの手順を使用します。
- SQL Server 2005 を使用している場合は、SQL Server Management Studio を開きます。 これを行うには、Start をクリックし、Programs にポイントし、Microsoft SQL Server 2005 にポイントして、SQL Server Management Studio をクリックします。
- SQL Server 2000 または SQL Server 7.0 を使用している場合は、SQL Query Analyzer を開きます。 これを行うには、 Start をクリックし、 Programs をポイントし、 Microsoft SQL Server をポイントして、 Query Analyzer をクリックします。
次のいずれかの手順を使用します。
SQL Server Management Studio で、オブジェクト エクスプローラーで Databases を展開し、[Dynamics をクリックします。 [新しいクエリ ] をクリックしクエリ ペインに次の select ステートメントを入力し、[ Execute をクリックします。
SELECT * FROM MOP1020 WHERE MANUFACTUREORDER_I= '<XXX>' SELECT * FROM MOP1025 WHERE MANUFACTUREORDER_I= '<XXX>' SELECT * FROM MOP1026 WHERE MANUFACTUREORDER_I= '<XXX>'
SQL Query Analyzer で、 Query ペインに次の select ステートメントを入力し、 Execute をクリックします。
SELECT * FROM MOP1020 WHERE MANUFACTUREORDER_I= '<XXX>' SELECT * FROM MOP1025 WHERE MANUFACTUREORDER_I= '<XXX>' SELECT * FROM MOP1026 WHERE MANUFACTUREORDER_I= '<XXX>'
注記
<XXX>を "製造オーダー受領書" 番号に置き換えます。 保留中の数量に関連付けられている "伝票の選択" 番号または "製造オーダー受領書" 番号を決定するには、次のいずれかの値を参照してください。
- テーブル MOP1020の DOCNUMBR 列の値
- テーブル MOP1025またはテーブル MOP1026の MOPDOCNUM 列の値
手順 2: 保留中の数量の原因となる未転記の選択ドキュメントがないことを確認する
これらのテーブルのいずれかにレコードがある場合は、[コンポーネント トランザクション エントリ] ウィンドウに保存されている保留中のドキュメントが存在する可能性があります。 この保存済みの保留中のドキュメントを転記するか、保留中の行をドキュメントから削除する必要があります。 これを行うには、次の手順を実行します。
- Transactions メニューで、製造をポイントし、製造オーダーをポイントし、Component Trx エントリをクリックしてください。
- [ 製造選択番号 フィールドに、 Step 1: 製造テーブルに保留中の数量がないことを確認する のスクリプトから返されるすべての選択伝票を入力します。 次に、次のいずれかの手順を使用します。
- Post ボタンが使用できない場合は、「ステップ 3: 問題のある選択ドキュメントに対して在庫トランザクションが転記されたことを確認するセクションに移動します。
- Post ボタンが使用可能な場合は、選択ドキュメントを転記するか、選択ドキュメントから行を削除します。 選択ドキュメントから行を削除するには、各行をクリックし、Edit メニューの [行削除] をクリックします。
手順 3: 問題のある選択ドキュメントに対して在庫トランザクションが転記されていることを確認する
Post ボタンが使用できない場合は、選択ドキュメントが転記されています。 ただし、テーブルからはクリアされません。 この選択ドキュメントに関連付けられている在庫トランザクションが Microsoft Dynamics GP のインベントリに転記されていることを確認する必要があります。 これを行うには、次の手順を実行します。
- [ Inquiry メニューの Inventory をポイントし、 Item Transaction をクリックします。
- [明細トランザクション]ウィンドウで、 項目番号 フィールドに明細番号を入力し、 Document 日付範囲 セクションに日付範囲を入力します。
- 結果で、トランザクションをダブルクリックして詳細情報を表示します。
- 問い合わせ メニューで 製造 にポイントし、製造オーダー にポイントした後、MO アクティビティ をクリックします。
- MO 番号フィールドに、製造オーダー番号を入力します。
- 詳細情報が必要な文書の文書番号を見つけて、文書をダブルクリックします。
- 伝票が正しく転記されている場合は、[在庫トランザクション照会]ウィンドウにコンポーネントが表示されます。 コンポーネントが表示されない場合は、Microsoft Dynamics のテクニカル サポートにお問い合わせください。
手順 4: 保留中の製造テーブルから無効な行を削除する
[コンポーネント トランザクションエントリ] ウィンドウに "未転記の保存されたピック" ドキュメントがなく、在庫トランザクションを転記した場合は、テーブルMOP1020、テーブルMOP1025、およびテーブルMOP1026から、この製造オーダーに関連するすべてのレコードを削除する必要があります。 これを行うには、SQL Server Management Studio または SQL Query Analyzer で次のステートメントを実行します。
DELETE MOP1020 WHERE MANUFACTUREORDER_I= '<XXX>'
DELETE MOP1025 WHERE MANUFACTUREORDER_I='<XXX>'
DELETE MOP1026 WHERE MANUFACTUREORDER_I='<XXX>'
注意
<XXX>を製造オーダー番号に置き換えます。
手順 5: コンポーネントの WIP 数量が正しいことを確認する
保留中の数量を削除した後、これらの保留中の数量が "仕掛品" (WIP) の数量に影響しないようにする必要があります。 これを行うには、SmartList を実行するか、SQL Server でスクリプトを使用します。 それには、以下のいずれかの方法を使用します。
方法 1: "処理中の作業" SmartList を使用する
"処理中の作業" SmartList を見つけます。 これを行うには、適切な手順を使用します。
- Microsoft Dynamics GP 10.0 で、Microsoft Dynamics GP メニューの SmartList をクリックし、次に Work in Process をクリックします。
- Microsoft Dynamics GP 9.0 で、[View] メニューの [SmartList をクリックし、[プロセスの作業] をクリック。
WIP QTY IN 列の値を確認します。 この値は、コンポーネントに対して発行される合計数量です。
方法 2: SQL Server でスクリプトを使用する
すべての問題トランザクションの合計からすべての "逆引き問題" トランザクションの合計を差し引いた値は、テーブル MOP1000の QTYRECVD 列の値と一致する必要があります。 QTYSOLD列の値は、完成品の受領時に消費されたすべての数量の合計である必要があります。 テーブル MOP1000の QTYRECVD 列を確認し、テーブル MOP1210の QTYSOLD 列を確認するには、次の手順に従います。
SQL Server Management Studio または SQL Query Analyzer で、次のスクリプトを実行します。
SELECT QTYRECVD,* FROM MOP1000 WHERE MANUFACTUREORDER_I='<XXX>'
注意
<XXX>を製造オーダー番号に置き換えます。
テーブル MOP1000の QTYRECVD 列の値は、すべての問題トランザクションの合計からすべての "逆引き問題" トランザクションの合計を引いた値である必要があります。
SQL Server Management Studio または SQL Query Analyzer で、次のスクリプトを実行します。
SELECT TRX_TYPE, TRXQTY, * FROM MOP1210 WHERE MANUFACTUREORDER_I='<XXX>'
TRX_TYPEの種類ごとに、 TRXQTY 列に値を追加する必要があります。 合計は受け取った数量です。
注
TRX_TYPEには、次の値が使用されます。
- 1: トランザクションを発行する
- 2: 逆引き発行トランザクション
QTYSOLD 列の値は、完成品の受領書で消費されたすべての数量の合計である必要があります。
手順 6: コンポーネントに対して発行された数量が正しいことを確認する
テーブル PK010033、テーブル MOP1400、およびテーブル MOP1210で発行された数量が正しいことを確認する必要があります。 これを行うには、次の手順を実行します。
QTY_ISSUED_I列の値が正しいことを確認するには、テーブルのPK010033とテーブルのMOP1400を確認します。 "逆引き問題" トランザクションの一部がテーブル PK010033とテーブル MOP1400を更新することがあります。 ただし、他のテーブルには影響しません。 これらのテーブルの QTY_ISSUED_I 列の値が正しいことを確認するには、次の手順に従います。
[問い合わせ] メニューの [製造] にカーソルを合わせ、[製造オーダー] にカーソルを合わせ、[MO アクティビティ] をクリックします。
製造オーダーアクティビティウィンドウで、MO 番号 フィールドに製造オーダー番号を入力します。
詳細情報が必要なドキュメントをダブルクリックします。 ドキュメントが正しく転記された場合は、[在庫トランザクション照会] ウィンドウにコンポーネントが表示されます。
テーブル MOP1400とテーブル PK010033の QTY_ISSUED_I 列の値が正しいことを確認します。 これを行うには、SQL Server Management Studio または SQL Query Analyzer で次のスクリプトを実行します。
SELECT QTY_ISSUED_I, * FROM MOP1400 WHERE MANUFACTUREORDER_I='<XXX>' SELECT QTY_ISSUED_I, * FROM PK010033 WHERE MANUFACTUREORDER_I='<XXX>'
注意
<XXX>を製造オーダー番号に置き換えます。
QTY_ISSUED_I列の値が正しくない場合は、SQL Server のスクリプトを使用して更新します。 これを行うには、SQL Server Management Studio または SQL Query Analyzer で次のスクリプトを実行します。
Update PK010033 set QTY_ISSUED_I = '<XX>' WHERE DEX_ROW_ID = '<YYYY>' Update MOP1400 set QTY_ISSUED_I = '<XX>' WHERE DEX_ROW_ID = '<YYYY>'
注意
<XX> を発行された正しい数の項目に置き換えます。 <YYYY>を、このセクションの前の手順 1. で返されたDEX_ROW_ID列の値に置き換えます。
テーブル MOP1200とテーブル MOP1210で、正しい番号が発行され、逆発行されていることを確認します。 これを行うには、次の手順を実行します。
"逆引き問題" トランザクションが完全に処理されていない場合は、テーブル MOP1210から削除するか、正しい値を使用して更新します。 "逆引き問題" トランザクションが完全に処理されていない場合は、関連アイテムを処理するときに次のエラー メッセージが表示されます。
このトランザクションでは数量が不十分です。
テーブル MOP1210の逆問題トランザクションを削除するには、SQL Server Management Studio または SQL Query Analyzer で次のスクリプトを実行します。
DELETE MOP1210 WHERE WHERE MANUFACTUREORDER_I='<XXX>'and DEX_ROW_ID ='<YYYY>'
注意
<XXX>を製造オーダー番号に置き換えます。 <YYYY>を、アイテムから削除する必要があるDEX_ROW_ID値に置き換えます。
コンポーネントの数量が部分的に処理された場合は、テーブル MOP1210のレコードを更新する必要があります。 これを行うには、SQL Server Management Studio または SQL Query Analyzer で次のスクリプトを実行します。
UPDATE MOP1210 SET TRXQTY ='<X>' WHERE WHERE MANUFACTUREORDER_I='<YYY>'and DEX_ROW_ID ='<ZZZZ>'
注記
<X>を正しい数量に置き換えます。 <YYY>を製造オーダー番号に置き換えます。 <ZZZZ>を更新する必要があるDEX_ROW_ID値に置き換えます。
これらの項目に対してインベントリ調整プロセスを実行します。 これを行うには、適切な手順を使用します。
- Microsoft Dynamics GP 10.0 で、Microsoft Dynamics GP メニューの Utilities をポイントし、Inventory をポイントして、[Reconcile] をクリックします。
- Microsoft Dynamics GP 9.0 で、Tools メニューの Utilities をポイントし、Inventory をポイントして、Reconcile をクリックします。
これらの手順を完了すると、製造オーダーまたはこの問題の原因となる品目の "逆引き問題" トランザクションを正常に処理できます。 これを行うには、次の手順を実行します。
- トランザクション メニューで、製造をポイントし、製造オーダーをポイントして、Component Trx エントリをクリックしてください。
- 範囲セクションに製造オーダー番号の範囲を入力し、トランザクションタイプリストで逆発行をクリックします。
- 元に戻すアイテムをクリックし、ピックドキュメントに追加をクリック。
- 転記 をクリックします。