本文適用於 Microsoft 動態航行點的所有國家/地區和所有的語言地區設定。
狀況
假設您變更的追蹤行,在 [Microsoft 動態航行點 2009年中的批次中在追蹤訂單的數量。當您建立出貨挑選時,出貨挑選數量不正確。
下列產品中,就會發生這個問題︰-
Microsoft 動態航行點 2009 R2
-
Microsoft 動態航行點 2009 Service Pack 1 (SP1)
解決方案
Hotfix 資訊
已經可以從 Microsoft 取得支援的 hotfix。不過,它只被用來修正本文所述的問題。它只適用於發生此特定問題的系統上。此 hotfix 可能會接受其他測試。因此,如果此問題不會嚴重影響,我們建議您等候下一步的 Microsoft 動態航行點 2009 service pack 或包含此 hotfix 的下一個 Microsoft 動態航行點版本。
注意 在特殊的情況下,通常會支援呼叫可能已被取消如果技術支援專業人員的 Microsoft 動態及相關的產品所產生的費用會決定某特定更新程式可以解決您的問題。收取支援費用會套用,如果有其他支援問題是,不能限定的特定更新程式。安裝資訊
Microsoft 會提供程式設計範例僅供說明,而不做任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已相當熟悉使用的我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能。不過,它們不會修改這些範例以提供附加功能或建構程序來滿足您特定需求。
注意套用此 hotfix 之前,請確認所有的 Microsoft 動態航行點用戶端使用者會登出系統。這包括 Microsoft 動態航行點應用程式伺服器 (NAS) 服務。您應該是唯一的用戶端使用者已登入,當您實作此 hotfix。 若要實作此 hotfix,您必須有開發人員授權。 我們建議您在 Windows 登入] 視窗中的色彩,或資料庫登入] 視窗中的使用者帳戶被指派 「 進階 」 的角色識別碼。如果使用者帳戶不能指派為 「 超級 」 的角色識別碼,您必須確認使用者帳戶具有下列權限︰-
您將會變更物件的 [修改] 權限。
-
執行權限的系統物件 ID 5210物件和系統物件 ID 9015
物件。
注意您沒有擁有資料存放區的權限,除非您需要執行資料修復。
程式碼變更
注意永遠測試程式碼修正在受控制的環境中才能套用到實際執行電腦的修正程式。
若要解決這個問題,請變更建立挑選 Codeunit (7312) 中的程式碼如下所示︰現有的程式碼
...CODE
... PROCEDURE CreateTempLine@29(LocationCode@1002 : Code[10];ItemNo@1003 : Code[20];VariantCode@1004 : Code[10];UnitofMeasureCode@1005 : Code[10];FromBinCode@1000 : Code[20];ToBinCode@1007 : Code[20];QtyPerUnitofMeasure@1010 : Decimal;VAR TotalQtytoPick@1001 : Decimal;VAR TotalQtytoPickBase@1000000000 : Decimal); ... i@1012 : Integer; RemQtyToPickBase@1000000002 : Decimal; QtyToPickBase@1000000001 : Decimal; QtyToTrackBase@1009 : Decimal; QtyBaseMaxAvailToPick@1011 : Decimal; ... TempWhseItemTrkgLine.RESET; TempWhseItemTrkgLine.SETFILTER("Qty. to Handle",'<> 0'); IF TempWhseItemTrkgLine.FIND('-') THEN BEGIN REPEAT IF TempWhseItemTrkgLine."Qty. to Handle (Base)" <> 0 THEN BEGIN // Delete the following lines. IF TempWhseItemTrkgLine."Qty. to Handle" > RemQtyToPick THEN BEGIN TempWhseItemTrkgLine."Qty. to Handle" := RemQtyToPick; ... TempWhseItemTrkgLine.MODIFY; END; // Delete the following lines. IF TempWhseItemTrkgLine."Qty. to Handle (Base)" > RemQtyToPickBase THEN BEGIN TempWhseItemTrkgLine."Qty. to Handle (Base)" := RemQtyToPickBase; // End of the deleted lines. ... TempWhseItemTrkgLine.MODIFY; END; ... QtyToPick := TempWhseItemTrkgLine."Qty. to Handle"; QtyToPickBase := TempWhseItemTrkgLine."Qty. to Handle (Base)"; CreateTempLine2(LocationCode,ItemNo,VariantCode,UnitofMeasureCode,FromBinCode,ToBinCode, QtyPerUnitofMeasure,QtyToPick,TempWhseItemTrkgLine,QtyToPickBase); RemQtyToPickBase -= TempWhseItemTrkgLine."Qty. to Handle (Base)" - QtyToPickBase; // Delete the following line. RemQtyToPick -= (TempWhseItemTrkgLine."Qty. to Handle" / QtyPerUnitofMeasure) - QtyToPick; // End of the deleted line. ... LOCAL PROCEDURE UpdateToQtyToPick@71(QtyAvailableBase@1008 : Decimal;ToQtyPerUOM@1004 : Decimal;VAR ToQtyToPick@1003 : Decimal;VAR ToQtyToPickBase@1002 : Decimal;TotalQtyToPick@1001 : Decimal;TotalQtyToPickBase@1000 : Decimal); ... ToQtyToPick := ROUND(ToQtyToPickBase / ToQtyPerUOM,0.00001); IF ToQtyToPick > TotalQtyToPick THEN ToQtyToPick := TotalQtyToPick; IF (ToQtyToPick <> TotalQtyToPick) AND (ToQtyToPickBase = TotalQtyToPickBase) THEN // Delete the following line. IF ToQtyToPickBase = ROUND(TotalQtyToPick * ToQtyPerUOM,0.00001) THEN // End of the deleted line. ...
取代程式碼
...
CODE ... PROCEDURE CreateTempLine@29(LocationCode@1002 : Code[10];ItemNo@1003 : Code[20];VariantCode@1004 : Code[10];UnitofMeasureCode@1005 : Code[10];FromBinCode@1000 : Code[20];ToBinCode@1007 : Code[20];QtyPerUnitofMeasure@1010 : Decimal;VAR TotalQtytoPick@1001 : Decimal;VAR TotalQtytoPickBase@1000000000 : Decimal); ... i@1012 : Integer; RemQtyToPickBase@1000000002 : Decimal; QtyToPickBase@1000000001 : Decimal; QtyToTrackBase@1009 : Decimal; QtyBaseMaxAvailToPick@1011 : Decimal; // Add the following line. NewQtyToHandle@1170000000 : Decimal; // End of the added line. ... TempWhseItemTrkgLine.RESET; TempWhseItemTrkgLine.SETFILTER("Qty. to Handle",'<> 0'); IF TempWhseItemTrkgLine.FIND('-') THEN BEGIN REPEAT IF TempWhseItemTrkgLine."Qty. to Handle (Base)" <> 0 THEN BEGIN // Add the following lines. IF TempWhseItemTrkgLine."Qty. to Handle (Base)" > RemQtyToPickBase THEN BEGIN TempWhseItemTrkgLine."Qty. to Handle (Base)" := RemQtyToPickBase; // End of the added lines. ... TempWhseItemTrkgLine.MODIFY; END; // Add the following lines. NewQtyToHandle := ROUND(RemQtyToPick / RemQtyToPickBase * TempWhseItemTrkgLine."Qty. to Handle (Base)",0.00001); IF TempWhseItemTrkgLine."Qty. to Handle" <> NewQtyToHandle THEN BEGIN TempWhseItemTrkgLine."Qty. to Handle" := NewQtyToHandle; // End of the added lines. ... TempWhseItemTrkgLine.MODIFY; END; ... QtyToPick := TempWhseItemTrkgLine."Qty. to Handle"; QtyToPickBase := TempWhseItemTrkgLine."Qty. to Handle (Base)"; CreateTempLine2(LocationCode,ItemNo,VariantCode,UnitofMeasureCode,FromBinCode,ToBinCode, QtyPerUnitofMeasure,QtyToPick,TempWhseItemTrkgLine,QtyToPickBase); RemQtyToPickBase -= TempWhseItemTrkgLine."Qty. to Handle (Base)" - QtyToPickBase; // Add the following line. RemQtyToPick -= TempWhseItemTrkgLine."Qty. to Handle" - QtyToPick; // End of the added line. ... LOCAL PROCEDURE UpdateToQtyToPick@71(QtyAvailableBase@1008 : Decimal;ToQtyPerUOM@1004 : Decimal;VAR ToQtyToPick@1003 : Decimal;VAR ToQtyToPickBase@1002 : Decimal;TotalQtyToPick@1001 : Decimal;TotalQtyToPickBase@1000 : Decimal); ... ToQtyToPick := ROUND(ToQtyToPickBase / ToQtyPerUOM,0.00001); IF ToQtyToPick > TotalQtyToPick THEN ToQtyToPick := TotalQtyToPick; IF (ToQtyToPick <> TotalQtyToPick) AND (ToQtyToPickBase = TotalQtyToPickBase) THEN // Add the following line. IF (ABS(ToQtyToPick - TotalQtyToPick) = 0.00001) AND (ToQtyToPickBase = TotalQtyToPickBase) THEN // End of the added line. ...
先決條件
您必須具備套用此 hotfix 之後安裝下列產品的其中一個︰
-
Microsoft 動態航行點 2009 R2
-
Microsoft 動態航行點 2009 Service Pack 1
移除資訊
您無法移除此 hotfix。
狀態
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
注意這是直接從 Microsoft 支援組織內建立的「快速發行」文件。本文件所包含的現狀資訊是針對新興問題的回應。為縮短使其可用的時程,資料可能會包含印刷錯誤,且可能會隨時進行修改而不另行通知。如其他考量,請參閱 「使用規定」。