この資料では、すべての国と言語ロケールのすべての Microsoft Dynamics NAV に該当します。
現象
倉庫管理システム (WMS) Microsoft Dynamics NAV の 2013 のアセンブリの管理機能を統合することを想定しています。「アセンブリの順序に」の出荷を元に戻す関数を実行する項目追跡を使用するコンポーネントが含まれています (ATO) 項目。このような場合は、アセンブリの箱にコンポーネントの一部の数量だけが取り消されます。 したがって、コンポーネント品目元帳エントリに手動で箱の内容と数量の間の不均衡があります。
解決策
修正プログラムの情報
サポートされている修正プログラムはマイクロソフトから現在入手可能です。ただし、この資料に記載されている問題を解決するためのものはのみ。この特定の問題が発生したシステムにのみ適用してください。この修正プログラムは、今後さらにテストを行うことがあります。この問題で深刻な影響を受けていない場合は、次の Microsoft Dynamics NAV 2009 サービス パックまたは修正プログラムを含む次の Microsoft Dynamics NAV バージョン待つことを勧めします。
注: かかる料金が免除されるテクニカル サポート担当者 Microsoft Dynamics および関連製品のことは、通常は特別な場合は、特定の更新プログラムは、問題を解決するにを決定します。追加の質問および問題の特定のアップデートの対象にはなりませんが、通常のサポート料金が適用されます。
インストール情報
マイクロソフトでは解説することのみを目的としてプログラミング例を提供しています。暗示あるいは明示していることに対しての保証はしておりません。ここで言う保証とは、特定の目的に対する商品性や適合性の暗示的保証を含んでいますが、それに限定されるわけではありません。この資料では、例示されているプログラミング言語およびプロシージャの作成やデバッグに使用するツールにお客様が精通していることを前提としています。マイクロソフトのサポート エンジニアは、特定のプロシージャの機能を説明することができますが、機能の追加またはお客様固有の要件を満たすようにプロシージャを作成するこれらの例は変更されません。
注: この修正プログラムをインストールする前に、Microsoft Navision のすべてのクライアント ユーザーがシステムの電源を記録することを確認します。これには、Microsoft Navision アプリケーション サービス (NAS) クライアントのユーザーが含まれます。この修正プログラムを実装すると、ログオンしている唯一のクライアント ユーザーが必要です。
この修正プログラムを実装するには、開発者用のライセンスが必要です。
ユーザー アカウントまたはデータベース ログイン ウィンドウに Windows のログイン ウィンドウにある「スーパー」ロール id を割り当てられていることをお勧めします。ユーザー アカウントには、「スーパー」ロール ID を割り当てることができません、する場合は、ユーザー アカウントが次のアクセス許可を持っているを確認する必要があります。
-
変更するオブジェクトの変更のアクセス許可。
-
システム オブジェクトの ID 5210オブジェクトおよびシステム オブジェクトの ID 9015オブジェクトの実行が許可されます。
注:
データの修復を実行する必要があるない限り、データ ストアへの権限を持っている必要はありません。
コードの変更
注: 常にテスト コードを修正、管理された環境で適用する前に、運用コンピューターに修正プログラムします。
この問題を解決するには、次の手順を実行します。
-
「アセンブリのポスト」codeunit (900) 内のPostItemConsumption関数内のコードを次のように変更します。
既存のコード...ItemJnlLine."Unit Cost" := "Unit Cost";
ItemJnlLine.Correction := IsCorrection;
END;
IF IsCorrection THEN
// Delete the following lines.
PostCorrectionItemJnLine(ItemJnlLine,ItemJnlPostLine,DATABASE::"Posted Assembly Line",ApplyToEntryNo)
ELSE BEGIN
AssemblyLineReserve.TransferAsmLineToItemJnlLine(AssemblyLine,ItemJnlLine,ItemJnlLine."Quantity (Base)",FALSE);
ItemJnlPostLine.RunWithCheck(ItemJnlLine);
AssemblyLineReserve.UpdateItemTrackingAfterPosting(AssemblyLine);
END;
PostWhseJnlLine(AssemblyHeader,ItemJnlLine,ItemJnlPostLine,WhseJnlRegisterLine);
// End of the lines.
EXIT(ItemJnlLine."Item Shpt. Entry No.");
END;
LOCAL PROCEDURE PostItemOutput@4(VAR AssemblyHeader@1001 : Record 900;PostingNoSeries@1007 : Code[10];QtyToOutput@1004 : Decimal;QtyToOutputBase@1005 : Decimal;VAR ItemJnlPostLine@1002 : Codeunit 22;VAR WhseJnlRegisterLine@1003 : Codeunit 7301;DocumentNo@1010 : Code[20];IsCorrection@1011 : Boolean;ApplyToEntryNo@1008 : Integer) : Integer;
VAR
...置換用コード
...ItemJnlLine."Unit Cost" := "Unit Cost";
ItemJnlLine.Correction := IsCorrection;
END;
IF IsCorrection THEN
// Add the following lines.
PostCorrectionItemJnLine(ItemJnlLine,AssemblyHeader,ItemJnlPostLine,DATABASE::"Posted Assembly Line",ApplyToEntryNo)
ELSE BEGIN
AssemblyLineReserve.TransferAsmLineToItemJnlLine(AssemblyLine,ItemJnlLine,ItemJnlLine."Quantity (Base)",FALSE);
ItemJnlPostLine.RunWithCheck(ItemJnlLine);
AssemblyLineReserve.UpdateItemTrackingAfterPosting(AssemblyLine);
PostWhseJnlLine(AssemblyHeader,ItemJnlLine,ItemJnlPostLine,WhseJnlRegisterLine);
END;
// End of the lines.
EXIT(ItemJnlLine."Item Shpt. Entry No.");
END;
LOCAL PROCEDURE PostItemOutput@4(VAR AssemblyHeader@1001 : Record 900;PostingNoSeries@1007 : Code[10];QtyToOutput@1004 : Decimal;QtyToOutputBase@1005 : Decimal;VAR ItemJnlPostLine@1002 : Codeunit 22;VAR WhseJnlRegisterLine@1003 : Codeunit 7301;DocumentNo@1010 : Code[20];IsCorrection@1011 : Boolean;ApplyToEntryNo@1008 : Integer) : Integer;
VAR
... -
「アセンブリのポスト」codeunit (900) 内のPostItemOutput関数内のコードを次のように変更します。
既存のコード...GLSetup."Unit-Amount Rounding Precision"));
ItemJnlLine.Correction := IsCorrection;
END;
IF IsCorrection THEN
// Delete the following lines.
PostCorrectionItemJnLine(ItemJnlLine,ItemJnlPostLine,DATABASE::"Posted Assembly Header",ApplyToEntryNo)
ELSE BEGIN
AssemblyHeaderReserve.TransferAsmHeaderToItemJnlLine(AssemblyHeader,ItemJnlLine,ItemJnlLine."Quantity (Base)",FALSE);
ItemJnlPostLine.RunWithCheck(ItemJnlLine);
AssemblyHeaderReserve.UpdateItemTrackingAfterPosting(AssemblyHeader);
END;
PostWhseJnlLine(AssemblyHeader,ItemJnlLine,ItemJnlPostLine,WhseJnlRegisterLine);
EXIT(ItemJnlLine."Item Shpt. Entry No.");
END;
LOCAL PROCEDURE PostCorrectionItemJnLine@37(VAR ItemJnlLine@1001 : Record 83;VAR ItemJnlPostLine@1008 : Codeunit 22;SourceType@1002 : Integer;ApplyToEntry@1005 : Integer);
// End of the lines.
VAR
TempItemLedgEntry2@1000 : TEMPORARY Record 32;
ATOLink@1003 : Record 904;
TempItemLedgEntryInChain@1006 : TEMPORARY Record 32;
ItemApplnEntry@1004 : Record 339;
...置換用コード
...GLSetup."Unit-Amount Rounding Precision"));
ItemJnlLine.Correction := IsCorrection;
END;
IF IsCorrection THEN
// Add the following lines.
PostCorrectionItemJnLine(ItemJnlLine,AssemblyHeader,ItemJnlPostLine,DATABASE::"Posted Assembly Header",ApplyToEntryNo)
ELSE BEGIN
AssemblyHeaderReserve.TransferAsmHeaderToItemJnlLine(AssemblyHeader,ItemJnlLine,ItemJnlLine."Quantity (Base)",FALSE);
ItemJnlPostLine.RunWithCheck(ItemJnlLine);
AssemblyHeaderReserve.UpdateItemTrackingAfterPosting(AssemblyHeader);
PostWhseJnlLine(AssemblyHeader,ItemJnlLine,ItemJnlPostLine,WhseJnlRegisterLine);
END;
EXIT(ItemJnlLine."Item Shpt. Entry No.");
END;
LOCAL PROCEDURE PostCorrectionItemJnLine@37(VAR ItemJnlLine@1001 : Record 83;AssemblyHeader@1007 : Record 900;VAR ItemJnlPostLine@1008 : Codeunit 22;SourceType@1002 : Integer;ApplyToEntry@1005 : Integer);
// End of the lines.
VAR
TempItemLedgEntry2@1000 : TEMPORARY Record 32;
ATOLink@1003 : Record 904;
TempItemLedgEntryInChain@1006 : TEMPORARY Record 32;
ItemApplnEntry@1004 : Record 339;
... -
「アセンブリのポスト」codeunit (900) 内のPostCorrectionItemJnLine関数内のコードを次のように変更します。
既存のコード...ItemJnlLine."Warranty Date" := TempItemLedgEntry."Warranty Date";
ItemJnlLine."Expiration Date" := TempItemLedgEntry."Expiration Date";
ItemJnlLine."Item Shpt. Entry No." := 0;
ItemJnlPostLine.RunWithCheck(ItemJnlLine);
UNTIL TempItemLedgEntry2.NEXT = 0;
END;
LOCAL PROCEDURE FindAppliesToATOUndoEntry@46(VAR ItemLedgEntryInChain@1000 : Record 32) : Integer;
BEGIN
...置換用コード
...ItemJnlLine."Warranty Date" := TempItemLedgEntry."Warranty Date";
ItemJnlLine."Expiration Date" := TempItemLedgEntry."Expiration Date";
ItemJnlLine."Item Shpt. Entry No." := 0;
ItemJnlPostLine.RunWithCheck(ItemJnlLine);
// Add the following line.
PostWhseJnlLine(AssemblyHeader,ItemJnlLine,ItemJnlPostLine,WhseJnlRegisterLine);
UNTIL TempItemLedgEntry2.NEXT = 0;
END;
LOCAL PROCEDURE FindAppliesToATOUndoEntry@46(VAR ItemLedgEntryInChain@1000 : Record 32) : Integer;
BEGIN
...
必要条件
Microsoft Dynamics NAV 2013 がこの修正プログラムを適用するためにインストールする必要があります。
アンインストール情報
この修正プログラムを削除することはできません。
状況
マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。
注: これは、マイクロソフト サポートの組織内から直接作成した「高速公開」の資料です。ここに含まれる情報は、新たに発生している問題に応じて現状のまま提供されています。速やかに利用できるようにした結果として、内容には誤植が含まれている可能性があり、事前告知なしで改訂する場合があります。その他の考慮事項については、使用条件を参照してください。