本文提供了用于解决在 Microsoft dynamics GP 中尝试关闭制造订单时出现的错误消息的方法。
适用于: Microsoft Dynamics GP
原始 KB 数: 953438
注意
在按照本文中的说明操作之前,请确保拥有数据库的完整备份副本,如果出现问题,可以还原该副本。
现象
尝试关闭“制造订单关闭”窗口中的完整制造订单或“编辑制造订单状态”窗口时,Microsoft Dynamics GP 和 Microsoft Business Solutions - Great Plains 中,将收到以下错误消息:
此制造订单具有挂起的组件交易。 有关详细信息,请参阅选择文档 XXXXX。
注意
XXXXXX 是选取文档编号的占位符。
原因
此问题可能由于以下原因之一而发生:
- 已保存的未发布选取文档适用于制造订单(MO)。 请参阅决议 1。
- 待定数量存在于 MOP1400(MOP_Picklist_Site_QTY)表中,但这些数量没有其他制造表中的数据支持。 请参阅解决方法 2。
决议 1
若要解决此问题,请使用 SQL 查询工具查找和发布未发布的选取文档。 为此,请按照下列步骤进行操作:
启动支持管理员控制台、Microsoft SQL Query Analyzer 或 SQL Server Management Studio。 为此,请使用以下方法之一,具体取决于所使用的程序。
方法 1 - 适用于 SQL Server 桌面引擎
如果使用 SQL Server 桌面引擎(也称为 MSDE 2000),请启动支持管理员控制台。 为此,请选择“开始”,指向“所有程序”,指向“Microsoft管理员控制台”,然后选择“支持管理员控制台”。
方法 2 - 对于 SQL Server 2000
如果使用 SQL Server 2000,请启动 SQL 查询分析器。 为此,请选择“开始”,指向“所有程序”,指向Microsoft SQL Server,然后选择“查询分析器”。
方法 3 - 对于 SQL Server 2005
如果使用 SQL Server 2005,请启动 SQL Server Management Studio。 为此,请选择“开始”,指向“所有程序”,指向“MICROSOFT SQL Server 2005”,然后选择“SQL Server Management Studio”。
针对公司数据库运行以下脚本:
Select PICKNUMBER from MOP1210 where MANUFACTUREORDER_I = 'XXXX' and MANUFACTUREORDER_I in (select MANUFACTUREORDER_I from MOP1400 where MANUFACTUREORDER_I in (select MANUFACTUREORDER_I where PENDING_REV_ISS_QTY_I > 0 or PENDING_ISSUE_QTY_I > 0 or PENDING_SCRAP_QTY_I > 0 or PENDING_REV_SCRAP_QTY_I > 0)) and TRX_TYPE in (1,2,5,6) and PICKNUMBER in (select PICKNUMBER from MOP1200 where POSTED = 0)注意
在此脚本中,必须将 XXXX 占位符替换为制造订单号。
步骤 2 中脚本返回的结果表明存在一个未发布的拣货文档。 若要发布选取文档或删除选取文档中的项目,请执行以下步骤:
- 在 “事务 ”菜单上,指向 “制造”,指向 “制造订单”,然后选择“ 组件 Trx 条目”。
- 在 生产拣选编号 列表中,选择步骤 2 中的拣选文档编号。
- 按照以下步骤之一操作:
如果要发布项,请选择“标记全部”,然后选择“发布”。
如果不想发布项目,请选择每个项目编号旁边的复选框,选择“编辑”,然后选择“删除行”。
注意
如果从选取文档中删除了所有项目,则无需发布选取文档。
决议 2
即使没有挂起的文档,MOP1400表也可能保留选取文档的挂起数量。 若要解决此问题,请使用 SQL 查询工具来更新MOP1400表。 为此,请按照下列步骤进行操作:
启动支持管理员控制台、Microsoft SQL Query Analyzer 或 SQL Server Management Studio。 为此,请使用以下方法之一,具体取决于所使用的程序。
方法 1 - 对于 SQL Server 桌面引擎
如果使用 SQL Server 桌面引擎(也称为 MSDE 2000),请启动支持管理员控制台。 为此,请选择“开始”,指向“所有程序”,指向“Microsoft管理员控制台”,然后选择“支持管理员控制台”。
方法 2 - 对于 SQL Server 2000
如果使用 SQL Server 2000,请启动 SQL 查询分析器。 为此,请选择“开始”,指向“所有程序”,指向Microsoft SQL Server,然后选择“查询分析器”。
方法 3 - 对于 SQL Server 2005
如果使用 SQL Server 2005,请启动 SQL Server Management Studio。 为此,请选择“开始”,指向“所有程序”,指向“MICROSOFT SQL Server 2005”,然后选择“SQL Server Management Studio”。
针对公司数据库运行以下脚本:
select PENDING_ISSUE_QTY_I, MANUFACTUREORDER_I from MOP1400 where PENDING_ISSUE_QTY_I > 0 and MANUFACTUREORDER_I = 'MOxxx' select PENDING_REV_ISS_QTY_I, MANUFACTUREORDER_I from MOP1400 where PENDING_REV_ISS_QTY_I > 0 and MANUFACTUREORDER_I = 'MOxxx' select PENDING_SCRAP_QTY_I, MANUFACTUREORDER_I from MOP1400 where PENDING_SCRAP_QTY_I > 0 and MANUFACTUREORDER_I = 'MOxxx' select PENDING_REV_SCRAP_QTY_I, MANUFACTUREORDER_I from MOP1400 where PENDING_REV_SCRAP_QTY_I > 0 and MANUFACTUREORDER_I = 'MOxxx'注意
在此脚本中,必须将 MOxxx 占位符替换为制造订单号。
步骤 2 中从脚本返回的结果指示必须更新MOP1400表。 针对公司数据库运行以下脚本:
update MOP1400 set PENDING_ISSUE_QTY_I = 0 where PENDING_ISSUE_QTY_I > 0 and MANUFACTUREORDER_I = 'xxxx' update MOP1400 set PENDING_REV_ISS_QTY_I = 0 where PENDING_REV_ISS_QTY_I > 0 and MANUFACTUREORDER_I = 'xxxx' update MOP1400 set PENDING_SCRAP_QTY_I = 0 where PENDING_SCRAP_QTY_I > 0 and MANUFACTUREORDER_I = 'xxxx' update MOP1400 set PENDING_REV_SCRAP_QTY_I = 0 where PENDING_REV_SCRAP_QTY_I > 0 and MANUFACTUREORDER_I = 'xxxx'注意
在此脚本中,必须将 xxxx 占位符替换为制造订单号。