您的仓储管理数据模板
您的仓储管理数据模板
- 用于全面分析的建议属性
- 物料流转中需追踪的关键活动
- Blue Yonder WMS 数据提取实用指南
仓储管理属性
| 名称 | 描述 | ||
|---|---|---|---|
| 事件开始时间 EventStartTime | 表示特定仓库活动或事件开始的时间戳。 | ||
| 描述 此属性记录仓库任务或事件启动的日期和时间。它为 case 中的所有活动提供了时间顺序背景。 此时间戳对于所有基于时间的流程挖掘分析都至关重要。它用于对事件进行排序、计算活动之间的周期时间、衡量整个流程的持续时间,并识别等待时间或延误。它构成了绩效分析的支柱,也是制作流程图动画所必需的。 为何重要 开始时间戳对于按时间顺序排列事件以及计算所有性能指标(如周期时间和等待时间)是必不可少的。 获取方式 见于事件日志或任务表,对应于记录动作的创建或开始时间。 示例 2023-10-26T08:30:00Z2023-10-26T09:15:10Z2023-10-26T11:05:45Z | |||
| 仓库订单 WarehouseOrder | 仓库订单的唯一标识符,作为跟踪从创建到完成的所有相关物流活动的主要 case。 | ||
| 描述 仓库订单 (Warehouse Order) 是核心标识符,它将与特定物流请求(如入库收货或出库发货)相关的所有事件和任务组合在一起。它代表仓库内的一个完整工作单元。 在流程挖掘中,此属性用于定义 case,从而能够对整个订单生命周期进行端到端分析。通过追踪与单个仓库订单相关的所有活动,分析师可以衡量总履约时间,识别常见的流程变体,并了解订单在设施中的完整历程。 为何重要 这是核心 case 标识符,它连接了所有相关的仓库活动,从而能够对订单履约或收货流程进行完整的端到端分析。 获取方式 这通常是仓库订单标题表中的主键。有关订单管理相关的表,请咨询 Blue Yonder WMS 文档。 示例 WO-0012845WO-0012991WO-0013057 | |||
| 活动名称 ActivityName | 发生的特定仓库任务或事件的名称,例如“货物已拣取”或“货件已派发”。 | ||
| 描述 此属性描述在仓储管理流程中执行的具体步骤或任务。过程日志中的每个事件都与一个活动名称相关联,形成了构成流程流的步骤序列。 在分析中,活动名称是发现流程图、分析步骤间转换以及识别瓶颈或偏离标准程序的基础。它几乎用于所有的流程挖掘分析,从一致性检查到绩效监控。 为何重要 此属性对于构建流程图至关重要,因为它定义了各个步骤,并允许对流程流进行可视化和分析。 获取方式 此信息通常在仓库任务或事件日志表中找到,通常源自任务类型或状态代码。 示例 已创建拣货任务从库位拣货货物已发出 | |||
| 最后数据更新 LastDataUpdate | 指示该记录上次从源系统刷新时间的时间戳。 | ||
| 描述 此属性记录从 Blue Yonder WMS 最后一次提取或更新数据集的日期和时间。它提供了有关所分析数据新鲜度的元数据。 此时间戳对于数据治理以及用户了解分析的时效性非常重要。它确保利益相关者了解数据的实时性,并相信他们看到的是流程最近且相关的快照。 为何重要 此时间戳告知用户数据的新鲜度,确保他们了解分析所涵盖的时间段。 获取方式 这是一个通常在数据提取 (ETL) 过程中生成并添加的元数据字段。 示例 2024-01-15T04:00:00Z2024-01-16T04:00:00Z | |||
| 源系统 SourceSystem | 提取数据的系统,在本案例中为 Blue Yonder WMS。 | ||
| 描述 此属性标识事件数据的源系统。在现代 IT 环境中,单个端到端流程的数据可能来自多个系统,如 ERP、WMS 和 TMS。 指定源系统对于数据治理、故障排除和理解数据背景至关重要。它有助于将数据质量问题溯源到其起源,并且在合并来自多个源的数据以创建统一流程视图时是必不可少的。 为何重要 它提供了必要的数据血缘,有助于在数据校验或多系统合并数据的情况下追溯数据来源。 获取方式 这通常是在 data 提取过程中添加的静态值,用于标记数据集的来源。 示例 BlueYonderWMS_USBlueYonderWMS_EU | |||
| 事件结束时间 EventEndTime | 表示特定仓库活动或事件完成的时间戳。 | ||
| 描述 此属性记录仓库任务或事件完成的日期和时间。如果可用,它提供了对每个活动处理时间的精确测量。 同时拥有开始和结束时间可以进行更详细的绩效分析。它能够将等待时间(活动之间的时间)与处理时间(活动本身的持续时间)分开。这对于确定延误是由闲置期还是任务完成时间过长引起的至关重要。 为何重要 它能精准计算活动的实际处理时间,将其与等待时间区分开来,这是进行针对性性能改进的关键。 获取方式 见于事件日志或任务表,对应于记录动作的完成或关闭时间。 示例 2023-10-26T08:35:12Z2023-10-26T09:20:05Z2023-10-26T11:06:00Z | |||
| 优先级级别 PriorityLevel | 仓库订单的优先级,例如“高”、“标准”或“低”。 | ||
| 描述 优先级 (Priority Level) 表示仓库订单的紧急程度。高优先级订单(如加急货件)预计比标准订单处理得更快。WMS 使用此属性来对任务进行排序并分配资源。 在流程挖掘中,此属性对于分析优先级策略是否有效至关重要。“高优先级订单履约”仪表板依靠此字段过滤紧急订单,并将其周期时间与标准订单进行比较。它有助于验证高优先级订单是否真的在流程中移动得更快,或者它们是否卡在同样的瓶颈中。 为何重要 这样可以分析高优先级订单是否比标准订单处理得更快,从而验证优先级规则的有效性。 获取方式 此信息通常存储在仓库订单标题表中。 示例 高标准低 | |||
| 实际数量 ActualQuantity | 在任务期间处理的物品实际数量,例如实际清点或拣取的数量。 | ||
| 描述 实际数量 (Actual Quantity) 是仓库操作员在执行任务时实际处理的单位数量。这可以是收到的供应商货品数量、从存储库位拣选的单位数量或装入运输集装箱的数量。 通过与计划数量进行对比,该属性可以揭示流程中的异常和错误。它是计算差异率的核心指标,而差异率是衡量运营质量的关键。此类数据对于识别供应商发货问题、拣货错误或库存不准等情况至关重要。 为何重要 将其与计划数量进行对比,对于识别流程错误和计算差异率等关键质量 KPI 至关重要。 获取方式 见于任务确认或交易日志表,操作员在此记录执行数量。 示例 1004924 | |||
| 库存地点 StorageLocation | 仓库内的特定位置,例如存放或拣选货物的货位或过道。 | ||
| 描述 此属性标识与任务相关的仓库物理位置。对于上架活动,它是目标货位;对于拣货活动,它是源货位。这可以表示为包括过道、货架、层级和货位号在内的复合代码。 按存储位置分析数据有助于了解仓库布局效率、理货策略和资源移动。它用于识别高流量区域、利用不足的区域以及物料流中的潜在瓶颈。此属性是“存储位置利用趋势”仪表板的基础。 为何重要 它为分析仓库布局、库位优化策略的有效性以及识别移动瓶颈提供了关键背景。 获取方式 见于库存、仓库任务(拣货、上架)以及库位主数据相关的表中。 示例 A1-R03-S02-B01B5-R10-S04-B05C2-R01-S01-B02 | |||
| 用户/操作员 ID UserOperatorId | 执行该活动的仓库员工或操作员的标识符。 | ||
| 描述 此属性捕获负责执行给定仓库任务(如拣货、包装或上架)的人员的唯一 ID。它将流程活动与人力资源联系起来。 按用户/操作员 ID 分析活动对于了解资源利用率、工作负载分布和个人绩效至关重要。它有助于回答诸如哪些操作员效率最高、谁可能需要额外培训或如何在团队中平衡任务等问题。这是“仓库资源利用率”仪表板的主要维度。 为何重要 此属性将流程步骤与执行这些步骤的个人联系起来,从而能够分析资源绩效、工作负载和培训需求。 获取方式 通常见于任务或交易表,与操作期间登录系统或手持设备的 user 关联。 示例 JSMITHBWILLISAMILLER | |||
| 要求完成日期 RequestedCompletionDate | 计划或要求仓库订单完成并派发的日期和时间。 | ||
| 描述 要求完成日期 (Requested Completion Date) 代表履行出库仓库订单的服务水平协议 (SLA) 或目标。它是货物应完成拣货、包装并准备好发货的截止日期。 此日期是衡量实际绩效的基准。通过将其与实际派发时间戳进行比较,可用于计算“准时发货率”KPI。根据此属性分析订单有助于识别哪些订单存在延迟风险,并诊断违反 SLA 的根本原因。 为何重要 此属性是衡量准时绩效的基准,对于计算“准时发货率”KPI 至关重要。 获取方式 通常存储在仓库订单标题表中,通常继承自源销售订单或交货请求。 示例 2023-10-27T17:00:00Z2023-10-28T12:00:00Z2023-11-01T17:00:00Z | |||
| 计划数量 PlannedQuantity | 给定任务的预期物品数量,例如要拣取或接收的数量。 | ||
| 描述 计划数量 (Planned Quantity) 代表仓库订单为特定任务指定的标准单位数量。对于入库交付,它是供应商应发货的数量;对于拣货任务,它是客户订单要求的数量。 该属性对于准确性分析至关重要。通过对比计划数量与实际数量,可以识别收货、拣货或库存盘点中的差异。它直接支持“拣货数量差异率”等 KPI,并且是“数量准确性审计”仪表板的核心要素。 为何重要 它作为衡量准确性的基准,支持检测收货和拣货活动中的数量差异。 获取方式 见于与仓库订单或特定任务关联的详情表或行项目表。 示例 1005024 | |||
| Task 状态 TaskStatus | 给定任务的最终状态,例如“已完成”、“已取消”或“失败”。 | ||
| 描述 此属性描述特定仓库任务的结果。虽然许多任务都能成功完成,但有些任务可能会被主管取消,或由于系统或运营问题而失败。这比仅有活动名称提供了更多背景信息。 按任务状态分析有助于了解异常和流程故障。取消或失败任务的比例较高可能表明库存准确性、系统配置或操作员培训存在潜在问题。它有助于锁定容易失败并需要进一步调查的活动。 为何重要 它提供活动的结果,支持对取消或失败任务等异常情况进行分析,这些情况通常预示着更深层的运营问题。 获取方式 通常在任务表中找到,表示任务记录的最终状态。 示例 已完成已取消暂停 | |||
| 仓库 ID WarehouseId | 活动发生时所在的特定仓库或分销中心的标识符。 | ||
| 描述 仓库 ID (Warehouse ID) 唯一标识流程发生的设施。这对于运营多个配送中心的企业至关重要。 此属性允许在不同站点之间进行基准测试和比较分析。通过按仓库 ID 过滤或拆分数据,公司可以比较绩效,识别绩效最高站点的最佳实践,并了解为什么某些设施表现落后。它为多站点运营分析提供了关键维度。 为何重要 对于多站点组织,此属性对于绩效基准分析和跨地点流程对比至关重要。 获取方式 这通常是几乎所有事务表中都可用的顶级组织字段,也可以从系统实例中推断出来。 示例 WHC-01DC-EAST-03FAC-WEST | |||
| 仓库订单类型 WarehouseOrderType | 对仓库订单进行分类,例如入库收货、出库发货或内部移库。 | ||
| 描述 此属性对仓库订单的总体用途进行分类。常见类型包括来自供应商的入库交付、发往客户的出库货件、退货处理或仓库位置之间的内部移库。 按仓库订单类型细分流程是任何分析的基本第一步。入库和出库流程通常有显著差异,具有不同的步骤、资源和绩效目标。此属性允许过滤数据,以便单独分析特定流程(如收货或订单履约)。 为何重要 它允许对不同流程(如入库 vs 出库)进行分类和对比分析,这些流程具有不同的流向和目标。 获取方式 见于仓库订单头表,通常体现为单据类型或订单类别字段。 示例 入库交货出库发货内部转交 | |||
| 发运 ID ShipmentId | 仓库订单所属出库货件的唯一标识符。 | ||
| 描述 发货 ID (Shipment ID) 是一个更高级别的标识符,如果多个仓库订单通过同一辆卡车或容器派发,则可以将它们组合在一起。对于单个订单,它可能与仓库订单号或交货单号相同。 按发货 ID 进行分析可以提供派发流程的视图。它有助于了解订单是如何整合的,衡量从暂存到整车最终派发的时间,并分析发货部门的效率。它将仓库活动与供应链的最后运输环节联系起来。 为何重要 它将同时发出的仓库订单归组,从而支持对货件合并和发货流程的分析。 获取方式 见于货运或运输相关表,并可溯源至仓库订单。 示例 SHP-45000123SHP-45000124SHP-45000125 | |||
| 商品 SKU ProductSku | 正在处理物品的库存单位 (SKU) 或物料编号。 | ||
| 描述 此属性标识仓库任务中涉及的具体产品。它提供了有关移动、存储、拣选和包装物料的细粒度细节。 按产品 SKU 分析流程可以揭示与特定物品相关的模式。例如,某些产品可能容易出现拣货错误,由于特殊的处理要求而具有较长的上架时间,或者被存储在效率低下的位置。这允许进行针对特定产品的流程优化并改进理货策略。 为何重要 它支持产品级分析,有助于识别导致流程延迟、错误或需要特殊处理的物料。 获取方式 此信息位于仓库订单或任务表的行项目级别。 示例 PN-A5540-BSKU-300-RED-LGHW-88201 | |||
| 是否准时发货 IsOnTimeShipment | 一个布尔标志,如果货件在要求的截止日期或之前发出,则该标志为 true。 | ||
| 描述 此计算属性提供了一个简单的 true 或 false 指标,说明订单是否满足其发货 SLA。它是通过比较“货件已派发”活动的时间戳与订单的“要求完成日期”得出的。 此标志简化了准时绩效的分析和可视化。它允许轻松进行过滤和汇总,以计算“准时发货率”KPI 并为相应的仪表板提供支持。它还能进行根本原因分析,以识别延迟发货的共同特征。 为何重要 此布尔标志简化了“准时发货率”KPI 的计算,并允许轻松过滤以分析延迟订单的特征。 获取方式 通过对比“发货完毕”活动的时间戳与 RequestedCompletionDate 属性计算得出。 示例 truefalsetrue | |||
| 是否存在数量差异 IsQuantityMismatch | 一个布尔标志,指示任务的实际处理数量是否与计划数量不同。 | ||
| 描述 此计算属性是一个简单的标志,表示给定任务(如拣货或收货)的数量差异。当“实际数量”不等于“计划数量”时,它被设置为 true。 此标志用于轻松识别和统计流程中的错误。它简化了“拣货数量差异率”和“入库数量差异率”等 KPI 的计算。它还通过允许分析师过滤所有不匹配事件并寻找与产品、操作员或位置相关的模式,从而促进根本原因分析。 为何重要 它会标记存在数量错误的事件,简化了差异率的计算,并支持对错误任务进行针对性分析。 获取方式 通过对比每个相关活动的 PlannedQuantity 和 ActualQuantity 字段计算得出。 示例 falsetruefalse | |||
| 活动处理时间 ActivityProcessingTime | 完成单个活动所需的时间(以秒或分钟为单位)。 | ||
| 描述 这是一项计算指标,用于测量活动开始和结束之间经过的时间。它代表执行任务所花费的实际时间,而不是等待任务开始所花费的时间。 此指标对于绩效分析至关重要,有助于识别哪些特定活动最耗时。它使分析师能够区分流程本身缓慢的步骤和步骤之间发生的延误,从而实现更有针对性的改进。这是专注于吞吐量和瓶颈的仪表板的关键指标。 为何重要 它能隔离出主动处理任务的时间,有助于精准找对哪些具体活动耗时最长。 获取方式 通过从每个活动记录的 EventEndTime 中减去 EventStartTime 计算得出。 示例 31229515 | |||
| 设备 ID EquipmentId | 所用物料搬运设备的标识符,例如特定的叉车或传送带。 | ||
| 描述 设备 ID (Equipment ID) 指定了用于执行仓库任务的机械或设备。这可能包括叉车、手动托盘车、自动导引车 (AGV) 或特定的包装站。 此属性允许分析设备利用率、性能和维护需求。通过跟踪每台设备的活动,管理人员可以识别过度使用或利用不足的资产,比较不同机器类型的效率,并收集数据以制定维护计划。它是“仓库资源利用率”仪表板的关键维度。 为何重要 它允许分析设备利用率和性能,有助于优化资产分配和维护计划。 获取方式 可能记录在任务执行日志中,尤其是在操作员需要登录设备的环境下。 示例 FORKLIFT-07AGV-03PACKSTATION-12 | |||
仓储管理活动
| 活动 | 描述 | ||
|---|---|---|---|
| 仓库订单已创建 | 此事件标志着仓库订单的创建,仓库订单是管理入库、出库或内部仓库任务的核心文档。当新订单输入 Blue Yonder WMS 时(无论是手动输入还是通过集成),通常将其捕获为显式事务。 | ||
| 为何重要 这是流程的明确开始。分析从该事件到完成的时间可得出总订单履约提前期,这对于衡量整体效率和对服务水平协议的遵循情况至关重要。 获取方式 此事件可能记录在订单标题表中,由仓库订单记录的创建时间戳捕获。查找与 捕获 取自仓库订单记录的创建时间戳。 事件类型 explicit | |||
| 仓库订单已完成 | 这是仓库订单的最终状态,表示所有相关活动(包括发货)均已完成且订单已关闭。当订单的生命周期状态更新为“已完成”或“已关闭”时捕获。 | ||
| 为何重要 此活动标志着流程 case 的明确结束。它确保流程分析能够捕获每个订单从开始到结束的完整生命周期。 获取方式 这可以从仓库订单标题表的状态更改中推断出来。查找最终状态(如“已完成”、“已关闭”或“已开票”),以及该状态更改的时间戳。 捕获 根据订单头最后一次状态更改的时间戳推断得出。 事件类型 inferred | |||
| 已创建拣货任务 | 此事件表示创建了一个任务,供操作员从存储位置提取货物以履行出库订单。当出库订单被释放以进行拣货时,由 WMS 生成此显式事件。 | ||
| 为何重要 这是物理出库流程的开始。分析从订单创建到拣货任务创建的时间,可以揭示订单处理和分配中的延迟。 获取方式 在任务管理或仓库控制表中记录。它对应于与仓库订单关联的拣货任务的创建时间戳。 捕获 系统生成的拣货任务的创建时间戳。 事件类型 explicit | |||
| 收货并计数 | 此事件表示货物已卸载、扫描,并已根据交货单据验证了数量。通常在收货员在系统中确认入库订单上每件物品的接收数量时捕获。 | ||
| 为何重要 这是一个关键里程碑,使库存在系统中正式可用,尽管尚未准备好履约。此步骤的持续时间和准确性直接影响库存可见性和上架流程的开始。 获取方式 这是记录在库存或收货日志中的显式事务。查找与收货过账相关的事务,或入库交货行项目状态更改为“已收货”的记录。 捕获 确认收货事务的时间戳。 事件类型 explicit | |||
| 货品上架入库 | 此事件确认货物已成功移动并扫描到其指定的存储货位。当操作员确认上架任务完成时(通常使用手持 RF 设备)捕获。 | ||
| 为何重要 这标志着入库流程的结束,使库存可用于履约。分析从收货到这一时刻的时间对于“收货至上架周期时间”仪表板至关重要。 获取方式 当上架任务状态更新为“已完成”或“已确认”时,记录为带有时间戳的事务。此数据可在仓库任务或移库单表中找到。 捕获 上架仓库任务的确认时间戳。 事件类型 explicit | |||
| 货物已发出 | 此事件表示包装好的货物已装载到承运人的卡车上,且卡车已离开仓库。通常在系统中发布“发货过账”时记录,标志着发货的最终完成。 | ||
| 为何重要 这是一个关键里程碑,标志着仓库对订单责任的结束。它是衡量准时发货绩效和端到端履约提前期的最终数据点。 获取方式 这是一个重大的财务和物流事务,通常称为“发货过账”(PGI)。此事务的时间戳作为派发时间,通常存储在出库交货或发货单据表中。 捕获 发货过账 (PGI) 事务的时间戳。 事件类型 explicit | |||
| 上架任务已创建 | 此活动标志着系统创建了一项任务,将收到的货物从收货码头移至最终存储位置。这是由 WMS 逻辑生成的显式系统事件,用于指导仓库操作员。 | ||
| 为何重要 这是上架流程的开始。收货和上架任务创建之间的延迟可能表明系统配置或性能问题,导致货物滞留在收货区。 获取方式 在任务管理或仓库控制表中生成并记录。请查找与入库交付关联的上架任务或移库单的创建时间戳。 捕获 系统生成的上架任务的创建时间戳。 事件类型 explicit | |||
| 从库位拣货 | 代表拣货任务的完成,即操作员已提取物品并在系统中确认了该动作。当操作员扫描物品并在其设备上确认拣货时,该事件会被捕获。 | ||
| 为何重要 此里程碑结束了拣货阶段。此活动的准确性和持续时间对于整体订单履约效率至关重要,并构成了“拣货准确性”分析的基础。 获取方式 从拣货任务状态更改为“已完成”时的确认时间戳获取。这可以在仓库任务表中找到,通常与特定操作员和设备关联。 捕获 拣货仓库任务的确认时间戳。 事件类型 explicit | |||
| 仓库订单已取消 | 代表在仓库订单完全处理或发货前将其取消。当用户执行取消事务,将订单状态更新为“已取消”时,系统会捕获此事件。 | ||
| 为何重要 分析取消订单有助于识别流程失败的原因,如库存缺货或客户变更。这是理解流程偏差和失败率的关键终止事件。 获取方式 这通常是根据仓库订单的最终状态推断出的事件。将使用状态更改为“已取消”或“已删除”的时间戳。 捕获 根据状态更改为“已取消”的时间戳推断得出。 事件类型 inferred | |||
| 入库交付已通知 | 代表收到来自供应商的预发货通知 (ASN),表明货物正在运往仓库。这是一个明确的事件,当系统接收并处理 ASN(通常通过 EDI 或门户网站)时会被捕获。 | ||
| 为何重要 此活动是入库规划和资源分配的触发点。该通知与实际收货之间的时间是衡量供应商绩效和入库管道可见性的关键 KPI。 获取方式 从 ASN 接收日志或 Blue Yonder WMS 内入库交付单据的创建时间戳获取。请检查 ASN 或入库发货通知相关的表。 捕获 来自 ASN 或入库交付单据创建的时间戳。 事件类型 explicit | |||
| 包装完成 | 此事件确认货件的所有物品已装入运输容器,并已生成标签。当包装员在系统中确认订单的包装流程完成时记录。 | ||
| 为何重要 这标志着仓库内部增值活动的完成。从这一点到货件派发的时间代表了暂存和装载时间,这是潜在延误的一个关键领域。 获取方式 这是在包装流程最终完成时记录的显式事务。查找出库交货状态更改为“已包装”的记录,或包装站事务的完成时间戳。 捕获 “确认包装”或“关闭容器”事务的时间戳。 事件类型 explicit | |||
| 发货暂存 | 代表将包装好的容器从包装区移动到指定的发货暂存道以等待承运人提取。当操作员确认将处理单元移动到暂存区时,该事件会被记录。 | ||
| 为何重要 此活动有助于分析停滞时间,即已包装订单在装载前等待的时间。较长的暂存时间可能表明与承运人的协调不力或暂存空间利用效率低下。 获取方式 此事件可以从处理单元或运输容器的位置更改为暂存位置来推断。它也可以是一个显式的“移至暂存”任务确认。 捕获 根据库存移动日志推断,显示已转移至暂存库位。 事件类型 inferred | |||
| 已执行质量检验 | 代表对接收货物执行的质量检查。这可能是某些物料的标准步骤,也可能是由于异常触发的事件;当质量检验员在系统中记录其发现时,该事件会被捕获。 | ||
| 为何重要 质量检验可能是入库流程中延误的主要原因。通过分析检验的频率和持续时间,有助于识别供应商的质量问题以及检验工作流中的瓶颈。 获取方式 记录在与入库交付相关的质量管理 (QM) 模块或日志中。查找质量检验结果的具体事务代码,或库存状态更改为“质量保留”的记录。 捕获 质量检验完成或状态更新的时间戳。 事件类型 explicit | |||
| 开始打包 | 此活动标志着在包装站开始包装流程。通常在操作员在包装站扫描拣取的物品或订单周转箱以开始准备发货时记录。 | ||
| 为何重要 此事件信号从拣货到包装的交接。它有助于隔离履约流程中的包装阶段,从而识别包装区域内的特定瓶颈。 获取方式 这可能是包装站用户界面的显式事务日志。或者,也可以从与该订单的包装工作中心相关的第一个带有时间戳的活动中推断出来。 捕获 包装站“开始包装”事务的时间戳。 事件类型 explicit | |||
| 货物到达码头 | 此活动标志着卡车或承运人在卸货开始前物理抵达仓库收货码头。此事件通常由场站管理模块记录,或由大门工作人员登记送货时记录。 | ||
| 为何重要 跟踪到达时间有助于衡量承运人的准时绩效,并识别承运人到达与收货流程开始之间的延迟。它突显了场站管理或收货门处潜在的瓶颈。 获取方式 通常记录在 Blue Yonder WMS 的场站管理或大门控制模块中。它也可以是收货员在卡车到达时手动输入的时间戳。 捕获 承运人登记事务的时间戳。 事件类型 explicit | |||
提取指南
步骤
- 前提条件与访问:确保您拥有具有执行 MOCA 命令和访问所需表(如 ord_hdr, pckwrk_dtl 和 invmov)权限的 Blue Yonder WMS 用户帐户。您需要访问 MOCA 客户端,如 MOCA Console 或命令行界面。
- 检查并自定义 MOCA 脚本:复制提供的 MOCA 脚本。仔细检查表名和列名,确保它们与您的 Blue Yonder WMS 具体实现相匹配。密切关注
@[where_clause_dates]和@[where_clause_warehouse]等占位符,这些必须替换为实际值。 - 定义提取参数:替换脚本中的占位符变量。对于
@[where_clause_dates],定义特定的日期范围,例如where adddte between 'YYYY-MM-DD' and 'YYYY-MM-DD'。对于@[where_clause_warehouse],指定要提取的仓库 ID,例如where wh_id = '[Your Warehouse ID]'。 - 连接到 MOCA 服务器:启动 MOCA 客户端(如 MOCA Console)并建立与正确的 Blue Yonder WMS 环境的连接。
- 执行 MOCA 脚本:将自定义脚本粘贴到 MOCA Console 中并执行命令。脚本将在服务器上运行并收集所有指定活动的数据。
- 监控执行情况:对于大型数据集,查询可能需要相当长的时间。监控控制台是否有错误消息或性能警告。如果查询超时,请考虑针对较小的日期范围运行。
- 将结果导出到文件:脚本成功执行后,结果将显示在控制台中。使用客户端的导出功能将输出保存为 CSV 文件。命令行常用的方法是将输出直接通过管道传输到文件,例如:
mocarun -S "[Your MOCA Script]" > event_log.csv。 - 为 ProcessMind 格式化 CSV:打开导出的 CSV 文件。验证列标题是否与查询中指定的属性(
WarehouseOrder、ActivityName、EventStartTime等)匹配。确保文件以 UTF-8 编码保存,以防止上传时出现字符问题。 - 检查并上传:对文件内容进行最终检查,查找任何明显的错误或不一致之处。确认无误后,将 CSV 文件上传到 ProcessMind 进行分析。
配置
- 日期范围:建议提取 3 到 6 个月的数据,以确保流程变体具有代表性。日期过滤器占位符
@[where_clause_dates]应应用于每个 SELECT 语句中的主 timestamp 列,例如adddte或moddte。 - 仓库和客户过滤器:务必使用过滤器限制提取范围。
@[where_clause_warehouse]占位符应根据具体仓库 ID (wh_id) 以及(如果适用)客户 ID (client_id) 进行过滤。这对于性能和数据相关性至关重要。 - 订单类型过滤器:为提高分析的针对性,可考虑针对特定的仓库订单类型 (
ordtyp) 进行过滤。例如,您可能只想分析出库客户订单或入库采购订单。这可以添加到脚本相关部分的 WHERE 子句中。 - 性能考量:数据提取脚本涉及多个大表的 join 和 union 操作。为避免影响系统性能,请将提取任务安排在业务低峰期运行。对于超大型环境,建议采取分批次增量提取(例如每次提取一个月)的稳妥策略。
- 前提条件:执行脚本的用户必须对查询中引用的所有表具有读取权限,包括
ord_hdr、ord_dtl、invmov、pckwrk_dtl、asnhdr和trn_log。此外,用户还必须获得执行 MOCA 命令的授权。
a 查询示例 config
publish data
where wh_id = '[Your Warehouse ID]'
and event_time between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
|
[
/* 1. Warehouse Order Created */
select
ordnum as WarehouseOrder,
'Warehouse Order Created' as ActivityName,
adddte as EventStartTime,
moddte as EventEndTime,
add_usr_id as UserOperatorId,
ordqty as PlannedQuantity,
null as ActualQuantity,
null as StorageLocation,
req_ship_dte as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from ord_hdr
where ordtyp in ('ORD', 'INB')
and adddte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 2. Inbound Delivery Notified */
select
supnum as WarehouseOrder, /* ASN number often used as the order key for inbound */
'Inbound Delivery Notified' as ActivityName,
adddte as EventStartTime,
moddte as EventEndTime,
add_usr_id as UserOperatorId,
null as PlannedQuantity,
null as ActualQuantity,
null as StorageLocation,
expdte as RequestedCompletionDate,
null as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from asnhdr
where adddte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 3. Goods Arrived at Dock */
select
refnum as WarehouseOrder,
'Goods Arrived at Dock' as ActivityName,
cmpl_dte as EventStartTime,
cmpl_dte as EventEndTime,
mod_usr_id as UserOperatorId,
null as PlannedQuantity,
null as ActualQuantity,
dstloc as StorageLocation, /* Typically a receiving dock location */
null as RequestedCompletionDate,
null as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from trn_log
where trncod = 'RCV_ARVL'
and cmpl_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 4. Goods Received and Counted */
select
ordnum as WarehouseOrder,
'Goods Received and Counted' as ActivityName,
cmpl_dte as EventStartTime,
cmpl_dte as EventEndTime,
mod_usr_id as UserOperatorId,
untqty as PlannedQuantity,
actqty as ActualQuantity,
srcloc as StorageLocation,
null as RequestedCompletionDate,
null as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from invmov
where trntyp = 'R' /* Standard receipt transaction type */
and cmpl_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 5. Quality Inspection Performed */
select
ordnum as WarehouseOrder,
'Quality Inspection Performed' as ActivityName,
cmpl_dte as EventStartTime,
cmpl_dte as EventEndTime,
mod_usr_id as UserOperatorId,
untqty as PlannedQuantity,
actqty as ActualQuantity,
srcloc as StorageLocation,
null as RequestedCompletionDate,
null as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from invmov
where trntyp = 'H' and trncod = 'QA_CMP' /* Example transaction for QA Hold Release/Complete */
and cmpl_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 6. Putaway Task Created */
select
ordnum as WarehouseOrder,
'Putaway Task Created' as ActivityName,
adddte as EventStartTime,
moddte as EventEndTime,
add_usr_id as UserOperatorId,
pckqty as PlannedQuantity,
null as ActualQuantity,
srcloc as StorageLocation,
null as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from pckwrk_dtl
where wrktyp = 'P' /* Putaway work type */
and adddte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 7. Goods Put Away in Storage */
select
ordnum as WarehouseOrder,
'Goods Put Away in Storage' as ActivityName,
cmpl_dte as EventStartTime,
cmpl_dte as EventEndTime,
mod_usr_id as UserOperatorId,
untqty as PlannedQuantity,
actqty as ActualQuantity,
dstloc as StorageLocation,
null as RequestedCompletionDate,
null as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from invmov
where trntyp = 'M' and trncod = 'PUTAWAY' /* Move transaction for putaway */
and cmpl_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 8. Picking Task Created */
select
ordnum as WarehouseOrder,
'Picking Task Created' as ActivityName,
adddte as EventStartTime,
moddte as EventEndTime,
add_usr_id as UserOperatorId,
pckqty as PlannedQuantity,
null as ActualQuantity,
srcloc as StorageLocation,
null as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from pckwrk_dtl
where wrktyp = 'O' /* Outbound Picking work type */
and adddte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 9. Goods Picked from Storage */
select
ordnum as WarehouseOrder,
'Goods Picked from Storage' as ActivityName,
pk_end_dte as EventStartTime,
pk_end_dte as EventEndTime,
pckr_id as UserOperatorId,
pckqty as PlannedQuantity,
actqty as ActualQuantity,
srcloc as StorageLocation,
null as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from pckwrk_dtl
where wrktyp = 'O'
and statcod = 'P' /* Status 'Picked' */
and pk_end_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 10. Packing Initiated */
select
ordnum as WarehouseOrder,
'Packing Initiated' as ActivityName,
cmpl_dte as EventStartTime,
cmpl_dte as EventEndTime,
mod_usr_id as UserOperatorId,
null as PlannedQuantity,
null as ActualQuantity,
dstloc as StorageLocation, /* Packing station */
null as RequestedCompletionDate,
null as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from trn_log
where trncod = 'PACK_INIT'
and cmpl_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 11. Goods Packed */
select
ordnum as WarehouseOrder,
'Goods Packed' as ActivityName,
moddte as EventStartTime,
moddte as EventEndTime,
mod_usr_id as UserOperatorId,
null as PlannedQuantity,
null as ActualQuantity,
null as StorageLocation,
req_ship_dte as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from ord_hdr
where statcod >= 80 and statcod < 90 /* Example status range for Packed */
and moddte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 12. Staging for Shipment */
select
ordnum as WarehouseOrder,
'Staging for Shipment' as ActivityName,
cmpl_dte as EventStartTime,
cmpl_dte as EventEndTime,
mod_usr_id as UserOperatorId,
untqty as PlannedQuantity,
actqty as ActualQuantity,
dstloc as StorageLocation, /* Staging lane */
null as RequestedCompletionDate,
null as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from invmov
where trncod = 'STG_MOVE' /* Move to staging transaction */
and cmpl_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 13. Shipment Dispatched */
select
ordnum as WarehouseOrder,
'Shipment Dispatched' as ActivityName,
act_ship_dte as EventStartTime,
act_ship_dte as EventEndTime,
mod_usr_id as UserOperatorId,
ordqty as PlannedQuantity,
shpqty as ActualQuantity,
null as StorageLocation,
req_ship_dte as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from ord_hdr
where statcod = 90 /* Status Shipped */
and act_ship_dte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 14. Warehouse Order Completed */
select
ordnum as WarehouseOrder,
'Warehouse Order Completed' as ActivityName,
moddte as EventStartTime,
moddte as EventEndTime,
mod_usr_id as UserOperatorId,
ordqty as PlannedQuantity,
shpqty as ActualQuantity,
null as StorageLocation,
req_ship_dte as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from ord_hdr
where statcod = 99 /* Status Completed/Closed */
and moddte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
union all
/* 15. Warehouse Order Canceled */
select
ordnum as WarehouseOrder,
'Warehouse Order Canceled' as ActivityName,
moddte as EventStartTime,
moddte as EventEndTime,
mod_usr_id as UserOperatorId,
ordqty as PlannedQuantity,
null as ActualQuantity,
null as StorageLocation,
req_ship_dte as RequestedCompletionDate,
prifld as PriorityLevel,
'Blue Yonder WMS' as SourceSystem,
sysdate as LastDataUpdate
from ord_hdr
where statcod = 91 /* Example Canceled status */
and moddte between to_date(@start_date, 'YYYY-MM-DD') and to_date(@end_date, 'YYYY-MM-DD')
and wh_id = '[Your Warehouse ID]'
] 步骤
- 建立数据库连接:获取 Blue Yonder WMS 底层数据库(通常为 Oracle 或 SQL Server)的只读凭据和连接详细信息(服务器地址、数据库名称、端口)。使用 DBeaver、Oracle SQL Developer 或 SQL Server Management Studio 等标准 SQL 客户端进行连接。
- 识别核心 WMS 表:提供的查询依赖于标准的 Blue Yonder WMS 表,如
ord(订单)、pckwrk(拣货任务)、wrkque(工作队列)、invmov(库存移动)和lodhdr(装载头)。请根据系统的 data dictionary 验证这些表名和列结构,因为可能存在自定义设置。 - 检查并参数化 SQL 查询:将提供的 SQL 脚本复制到 SQL 客户端中。在脚本顶部的
BaseOrders公用表表达式 (CTE) 中找到占位符变量。 - 设置日期范围:修改
adddte >= 'YYYY-MM-DD'和adddte < 'YYYY-MM-DD'子句以定义数据提取的时间窗口。建议初始分析选择 3 到 6 个月的时间段。 - 应用系统特定过滤器:调整
wh_id = '[Your_Warehouse_ID]'过滤器以限制提取特定仓库的数据。根据需要添加或修改其他过滤器,例如多客户环境下的client_id。 - 执行提取脚本:运行完整的 SQL 脚本。该查询旨在将多个表的 events 合并为统一的事件日志格式。执行时间取决于日期范围和数据量。
- 验证初始结果:查询完成后,快速检查输出结果。确认
WarehouseOrder、ActivityName和EventStartTime列已按预期填充。行数应显著多于唯一仓库订单的数量。 - 导出事件日志:将查询结果导出为 CSV 文件。确保文件编码设置为 UTF-8,以防止上传过程中出现字符编码问题。
- 准备上传:确认导出的 CSV 文件中的列标题符合要求的属性,例如
WarehouseOrder、ActivityName、EventStartTime。文件现在已可以上传到 Process Mining 软件中。
配置
- 前提条件:您必须拥有 Blue Yonder WMS 数据库的只读 SQL 访问权限。熟悉所在组织的特定 WMS 配置和数据模型将大有裨益。
- 数据库连接:此方法需要直接连接数据库。在开始前,请确保已配置必要的防火墙规则或网络访问权限。
- 日期范围过滤:在查询的
WHERE子句中设置特定日期范围对于管理数据量至关重要。通常 3 到 6 个月的数据量足以进行有意义的分析,且不会给数据库带来过重负担。 - 仓库和客户过滤:在多仓库或多客户环境中,请务必通过特定的
wh_id(仓库 ID)和client_id(客户 ID)进行过滤,以确保分析的针对性和数据集的可控性。 - 性能考量:在生产数据库上执行此查询可能会影响系统性能。强烈建议在业务低峰期运行,或者(如果可用)在专门的报表数据库或副本数据库上运行。
- 系统自定义:提供的查询使用了标准表名和列名。请准备好根据 Blue Yonder WMS 实例中的自定义设置或版本差异来调整这些名称。如有疑问,请咨询内部 WMS 管理员或查阅数据字典。
a 查询示例 sql
WITH BaseOrders AS (
SELECT
ordnum AS WarehouseOrder
FROM
ord
WHERE
adddte >= '2023-01-01' -- Placeholder: Set your start date
AND adddte < '2023-07-01' -- Placeholder: Set your end date
AND wh_id = '[Your_Warehouse_ID]' -- Placeholder: Set your warehouse ID
)
-- 1. Warehouse Order Created
SELECT
o.ordnum AS WarehouseOrder,
'Warehouse Order Created' AS ActivityName,
o.adddte AS EventStartTime,
o.adddte AS EventEndTime,
o.add_usr_id AS UserOperatorId,
o.req_shp_dte AS RequestedCompletionDate,
o.prirty AS PriorityLevel,
CAST(o.ordqty AS DECIMAL(18, 4)) AS PlannedQuantity,
NULL AS ActualQuantity,
NULL AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM ord o
WHERE o.ordnum IN (SELECT WarehouseOrder FROM BaseOrders)
UNION ALL
-- 2. Inbound Delivery Notified (ASN Received)
SELECT
a.ordnum AS WarehouseOrder,
'Inbound Delivery Notified' AS ActivityName,
a.adddte AS EventStartTime,
a.adddte AS EventEndTime,
a.add_usr_id AS UserOperatorId,
a.exp_arv_dte AS RequestedCompletionDate,
NULL AS PriorityLevel,
CAST(ad.qtyord AS DECIMAL(18, 4)) AS PlannedQuantity,
NULL AS ActualQuantity,
NULL AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM asnhdr a
JOIN asndtl ad ON a.asnhdr_id = ad.asnhdr_id
WHERE a.ordnum IN (SELECT WarehouseOrder FROM BaseOrders)
UNION ALL
-- 3. Goods Arrived at Dock
SELECT
t.ordnum AS WarehouseOrder,
'Goods Arrived at Dock' AS ActivityName,
t.checkin_dte AS EventStartTime,
t.checkin_dte AS EventEndTime,
t.usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
NULL AS PlannedQuantity,
NULL AS ActualQuantity,
t.dock_loc AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM trk_log t -- Note: Yard management table may vary
WHERE t.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND t.checkin_dte IS NOT NULL
UNION ALL
-- 4. Goods Received and Counted
SELECT
i.ordnum AS WarehouseOrder,
'Goods Received and Counted' AS ActivityName,
i.moddte AS EventStartTime,
i.moddte AS EventEndTime,
i.mod_usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
CAST(i.qtyexp AS DECIMAL(18, 4)) AS PlannedQuantity,
CAST(i.qtyrcv AS DECIMAL(18, 4)) AS ActualQuantity,
i.inv_loc AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM rcvlin i -- Receiving Line table
WHERE i.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND i.qtyrcv > 0
UNION ALL
-- 5. Quality Inspection Performed
SELECT
q.ordnum AS WarehouseOrder,
'Quality Inspection Performed' AS ActivityName,
q.insp_dte AS EventStartTime,
q.insp_dte AS EventEndTime,
q.usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
CAST(q.insp_qty AS DECIMAL(18, 4)) AS PlannedQuantity,
CAST(q.act_qty AS DECIMAL(18, 4)) AS ActualQuantity,
q.stoloc AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM qc_log q -- Quality Control log table may vary
WHERE q.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND q.status = 'COMPLETED'
UNION ALL
-- 6. Putaway Task Created
SELECT
w.ordnum AS WarehouseOrder,
'Putaway Task Created' AS ActivityName,
w.adddte AS EventStartTime,
NULL AS EventEndTime,
w.add_usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
w.wrkprt AS PriorityLevel,
CAST(w.untqty AS DECIMAL(18, 4)) AS PlannedQuantity,
NULL AS ActualQuantity,
w.frmloc AS StorageLocation, -- From receiving dock
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM wrkque w
WHERE w.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND w.wrktyp = 'PUTAWAY'
UNION ALL
-- 7. Goods Put Away in Storage
SELECT
m.ordnum AS WarehouseOrder,
'Goods Put Away in Storage' AS ActivityName,
m.adddte AS EventStartTime,
m.adddte AS EventEndTime,
m.usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
NULL AS PlannedQuantity,
CAST(m.movqty AS DECIMAL(18, 4)) AS ActualQuantity,
m.toloc AS StorageLocation, -- Destination storage location
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM invmov m -- Inventory Movement table
WHERE m.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND m.trntyp = 'PUTFIN' -- Putaway Finish transaction type
UNION ALL
-- 8. Picking Task Created
SELECT
w.ordnum AS WarehouseOrder,
'Picking Task Created' AS ActivityName,
w.adddte AS EventStartTime,
NULL AS EventEndTime,
w.add_usr_id AS UserOperatorId,
o.req_shp_dte AS RequestedCompletionDate,
w.wrkprt AS PriorityLevel,
CAST(w.untqty AS DECIMAL(18, 4)) AS PlannedQuantity,
NULL AS ActualQuantity,
w.frmloc AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM wrkque w
JOIN ord o ON w.ordnum = o.ordnum
WHERE w.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND w.wrktyp = 'PICK'
UNION ALL
-- 9. Goods Picked from Storage
SELECT
p.ordnum AS WarehouseOrder,
'Goods Picked from Storage' AS ActivityName,
p.moddte AS EventStartTime,
p.moddte AS EventEndTime,
p.mod_usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
CAST(p.pckqty AS DECIMAL(18, 4)) AS PlannedQuantity, -- Often planned and actual are the same here
CAST(p.pckqty AS DECIMAL(18, 4)) AS ActualQuantity,
p.pckloc AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM pckwrk p
WHERE p.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND p.wrksts = 'C' -- Status for Completed Pick
UNION ALL
-- 10. Packing Initiated
SELECT
s.ordnum AS WarehouseOrder,
'Packing Initiated' AS ActivityName,
s.moddte AS EventStartTime,
NULL AS EventEndTime,
s.mod_usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
NULL AS PlannedQuantity,
NULL AS ActualQuantity,
s.pckstn AS StorageLocation, -- Packing Station
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM ord_status_log s -- Status log table may vary
WHERE s.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND s.ordsta = 'PCK_START'
UNION ALL
-- 11. Goods Packed
SELECT
c.ordnum AS WarehouseOrder,
'Goods Packed' AS ActivityName,
c.moddte AS EventStartTime,
c.moddte AS EventEndTime,
c.mod_usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
NULL AS PlannedQuantity,
CAST(c.actqty AS DECIMAL(18, 4)) AS ActualQuantity,
c.pckstn AS StorageLocation, -- Packing Station
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM ship_cntr c -- Shipping Container table
WHERE c.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND c.cntr_sts = 'PACKED'
UNION ALL
-- 12. Staging for Shipment
SELECT
m.ordnum AS WarehouseOrder,
'Staging for Shipment' AS ActivityName,
m.adddte AS EventStartTime,
m.adddte AS EventEndTime,
m.usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
NULL AS PlannedQuantity,
CAST(m.movqty AS DECIMAL(18, 4)) AS ActualQuantity,
m.toloc AS StorageLocation, -- Staging location
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM invmov m
WHERE m.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND m.trntyp = 'STAGEMOV' -- Staging Movement transaction type
UNION ALL
-- 13. Shipment Dispatched
SELECT
l.ordnum AS WarehouseOrder,
'Shipment Dispatched' AS ActivityName,
l.shp_dte AS EventStartTime,
l.shp_dte AS EventEndTime,
l.mod_usr_id AS UserOperatorId,
NULL AS RequestedCompletionDate,
NULL AS PriorityLevel,
NULL AS PlannedQuantity,
CAST(sl.shpqty AS DECIMAL(18, 4)) AS ActualQuantity,
l.wh_id AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM lodhdr l
JOIN ship_line sl ON l.lodnum = sl.lodnum
WHERE l.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND l.lodsts = 'S' -- Shipped status
UNION ALL
-- 14. Warehouse Order Completed
SELECT
o.ordnum AS WarehouseOrder,
'Warehouse Order Completed' AS ActivityName,
o.moddte AS EventStartTime,
o.moddte AS EventEndTime,
o.mod_usr_id AS UserOperatorId,
o.req_shp_dte AS RequestedCompletionDate,
o.prirty AS PriorityLevel,
CAST(o.ordqty AS DECIMAL(18, 4)) AS PlannedQuantity,
CAST(o.shpqty AS DECIMAL(18, 4)) AS ActualQuantity,
NULL AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM ord o
WHERE o.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND o.ordsta = 'C' -- Status for Completed
UNION ALL
-- 15. Warehouse Order Canceled
SELECT
o.ordnum AS WarehouseOrder,
'Warehouse Order Canceled' AS ActivityName,
o.moddte AS EventStartTime,
o.moddte AS EventEndTime,
o.mod_usr_id AS UserOperatorId,
o.req_shp_dte AS RequestedCompletionDate,
o.prirty AS PriorityLevel,
CAST(o.ordqty AS DECIMAL(18, 4)) AS PlannedQuantity,
NULL AS ActualQuantity,
NULL AS StorageLocation,
'Blue Yonder WMS' AS SourceSystem,
GETDATE() AS LastDataUpdate
FROM ord o
WHERE o.ordnum IN (SELECT WarehouseOrder FROM BaseOrders) AND o.ordsta = 'X'; -- Status for Canceled