连接任何 ERP

SkyPlanner 的开放 REST API 可连接 ERP、MES 和运营系统,包括内部 ERP。您可以自行构建集成,也可以让我们的团队协助。

也可独立运行 — ERP 集成是可选的,非必需的。

讨论集成项目

连接 ERP 和 MES 系统,如

集成 / ERP / SAP Business One

SAP Business One 集成指南:对接 SkyPlanner APS 生产排程

本指南面向 SAP Business One 合作伙伴和 IT 团队,介绍如何将 B1 与 SkyPlanner APS 对接。内容涵盖 API 的选择、各类对象的传输方向,以及 B1 项目容易出问题的环节。SkyPlanner 通过 Service Layer 与 SAP Business One 实现双向集成:

  • 将生产订单、工艺路线阶段、资源、物料和采购订单传入 SkyPlanner。
  • 将计划开始日期和到期日期回写到生产订单。
  • 将操作员的工时记录作为 Receipt and Issue for Production 过账。
  • 排程发生变化时,SkyPlanner webhook 会即时推送。
SkyPlanner APS 甘特图时间轴,显示各工作中心的作业安排,下方为订单列表。

物料、BOM、生产订单、库存和财务仍由 SAP Business One 管理,现有制造模块保持不变。SkyPlanner 团队会在实施导入阶段基于标准 B1 对象配置集成,并在上线后提供支持。各公司的数据库在工艺路线阶段、资源组、用户自定义字段和附加组件方面各有不同,集成配置正是针对这些差异建立映射。

Laboratory & Allied 将 SkyPlanner 与基于 HANA 的 SAP Business One 配合使用。如需了解其业务价值,请参阅 SAP Business One 生产排程页面。

SAP Business One 集成方式

SAP Business One 提供三种集成接口。对于云端排程系统,默认使用 Service Layer。

集成方式说明APS 集成适用性
Service LayerREST/OData API。/b1s/v1 使用 OData v3,/b1s/v2 使用 OData v4。可在基于 SAP HANA 的 SAP Business One 上运行;从 10.0 PL01 起,也支持 Microsoft SQL Server。首选方式。使用 HTTP 和 JSON,可从云服务调用。
DI APIWindows COM 库。生产订单对应 ProductionOrders 对象,存储在 OWOR 表中(对象类型为 202)。适用于旧有中间件或本地部署的中间件。需要 Windows 主机。
Integration Framework (B1if)SAP 用于单据级集成场景的中间件。如果合作伙伴已在运行 B1if 集成场景,可采用此方式。

身份验证

Service Layer 采用会话认证。通过 POST /b1s/v1/Login 提交 CompanyDB、UserName 和 Password,即可获得 B1SESSION cookie(负载均衡部署还可选用 ROUTEID)。默认 SessionTimeout 为空闲 30 分钟。每次同步结束后,应显式调用 Logout。请创建专用的 B1 集成用户,确保从 SkyPlanner 写入的每项变更都能在变更日志中追溯。

用于生产排程的 Service Layer 实体

数据Service Layer 实体
物料及计划数据Items
物料清单和工艺路线阶段ProductTrees(Lines、Stages)
设备、人工及其他资源Resources, ResourceGroups
生产订单ProductionOrders(Lines、Stages)
各仓库库存Items 库存数据、Warehouses
未结采购订单及交货日期PurchaseOrders(DocumentLines:未清数量、ShipDate)
基于采购订单的收货PurchaseDeliveryNotes(采购收货单,对象类型为 20)
生产发料InventoryGenExits
生产收货InventoryGenEntries
Webhook 配置EventSubscriptions, EventNotifications

默认每页返回 20 条记录。可通过 Prefer: odata.maxpagesize 请求头(或 PageSize 配置项,该配置项位于 b1s.conf 中)增大每页记录数,并按 odata.nextLink 继续读取。使用 $expand 可在一次调用中获取生产订单的明细行和阶段;批量回写时使用批处理请求。

事件与 webhook

从 SAP Business One 10.0 FP 2602 起,Service Layer 支持 webhook,默认关闭。需通过 CompanyService_UpdateAdminInfo(EnableWebhook = tYES)为各公司分别启用。随后调用 POST EventSubscriptions,提交以下三部分内容:

  • 一个 WebhookURL
  • 一个 AuthenticationType:可选 None、Basic、HMAC 或 OAuth,默认为 HMAC
  • 一个包含业务对象和事务类型的 EventCollection

WebhookURL 必须使用 HTTPS,且证书须与主机匹配。EventSubscriptionsService_GetEventCatalog 可列出可订阅的事件。Webhook Messenger Service 必须处于运行状态。

旧版本需采用定时轮询(参见下文关于 UpdateDate 的注意事项)。SBO_SP_TransactionNotification 是数据库级校验钩子,并非事件投递通道。

数据映射:从 SAP Business One 到 SkyPlanner

SAP Business One (Service Layer)SkyPlanner 对象方向频率
Items(Procurement Method 为 Make 的物料)产品B1 → SkyPlanner首次加载,之后定时同步
ProductTrees 的 Lines(物料行)产品用料B1 → SkyPlanner首次加载,之后在变更时同步
ProductTrees 的 Stages 和资源行工序及运行时间B1 → SkyPlanner首次加载,之后在变更时同步
Resources(Machine、Labor、Other)工作中心及人员B1 → SkyPlanner首次加载,后续很少变更
ResourceGroups工作中心组B1 → SkyPlanner首次加载
ProductionOrders(Planned、Released 状态)订单及生产任务B1 → SkyPlannerWebhook(FP 2602+)或每隔几分钟轮询
ProductionOrders 的 Stages生产任务的工序及其顺序B1 → SkyPlanner随订单同步
Items 按 Warehouses 划分的库存物料库存B1 → SkyPlanner定时同步,例如每小时一次
PurchaseOrders(对象类型为 22)的未结明细行及交货日期采购订单/待到货物料及预计交货日期B1 → SkyPlanner定时同步,例如每小时一次
PurchaseDeliveryNotes(采购收货单)中 BaseType 为 22 的明细行采购订单行的已收货数量,并更新库存B1 → SkyPlanner定时同步,例如每小时一次
排定的开始和结束时间PATCH ProductionOrders({DocEntry}):StartDate、DueDate,以及资源行上的 StartDate 和 EndDateSkyPlanner → B1排程变更时由 SkyPlanner webhook 触发
已记录的产量InventoryGenEntries(生产收货)SkyPlanner → B1确认时同步或批量同步
已记录的工时及物料消耗InventoryGenExits(生产发料)SkyPlanner → B1确认时同步或批量同步

班次日历、人员和缺勤信息在 SkyPlanner 中管理。B1 的每日产能数值不纳入数据传输范围(参见下文第一项注意事项)。

集成模式

1. 首次加载主数据。读取 Resources、ResourceGroups、Procurement Method 为 Make 的 Items,以及对应的、包含阶段信息的 ProductTrees。将每个设备资源映射到 SkyPlanner 中的一个工作中心。在首次同步订单前,与计划员一起核对清单。

2. 订单同步。读取状态为 Planned 和 Released 的 ProductionOrders,通过 $expand 展开明细行和阶段。B1 生产订单包含从 BOM 获取的工艺路线阶段,计划员可以在订单创建后修改订单。因此,应使用订单中的阶段,而不是 BOM 中的阶段。一张生产订单只生产一种产品,因此多层级产品的每个层级都对应一张生产订单。将这些订单关联起来,让 SkyPlanner 先安排子件生产,再安排父件生产。

同时,将未结 PurchaseOrders 明细行及其未清数量、交货日期同步到 SkyPlanner 的采购订单端点。SkyPlanner 将已订购物料视为在采购订单交货日期可用。在 B1 中,采购收货单(PurchaseDeliveryNotes)过账后才会产生库存变动。集成程序读取这些收货单,在 SkyPlanner 中将已收货数量标记为已交付,并保留剩余未交付数量。分批收货只计入一次,物料检查同时考虑现有库存和待到货供应。

3. 排程回写。排程发生变更时,SkyPlanner 的 webhook 会触发通知。集成程序通过 PATCH /b1s/v1/ProductionOrders({DocEntry}) 写入新的 StartDate 和 DueDate,并更新订单资源行上的 StartDate 和 EndDate(资源行为 ProductionOrderLines),使每个阶段都有排定的时间区间。请求体只包含由 SkyPlanner 负责维护的字段,多张订单合并到一个 $batch 请求中。随后,B1 用户即可在生产订单和 Resource Capacity 窗口中看到排定的日期。对于无法使用 Service Layer 的部署,可由本地服务通过 DI API 的 ProductionOrders 对象执行相同更新(调用 GetByKey、设置日期、调用 Update)。

4. 车间报工。操作员通过移动端报工或生产计时器在 SkyPlanner 中记录作业。每条工时记录都会转换为一次 POST /b1s/v1/InventoryGenEntries,用于记录完工数量(生产收货),以及一次 POST /b1s/v1/InventoryGenExits,用于记录组件消耗和资源工时(生产发料)。

每个单据行的 BaseType 均为 202,BaseEntry 设置为生产订单的 DocEntry;发料行还需填写对应组件行或资源行的 BaseLine。分批完成的数量在记录时即过账,启用批次或序列号管理的物料需填写相应号码,且订单必须处于 Released 状态。

SkyPlanner 工时记录的 ID 会保存在 B1 单据上,因此事件重试不会导致重复过账。过账失败时,系统会重试并报告错误,而不是直接丢弃。

5. 数据管理权与冲突处理规则。编码前先约定以下规则:

  • B1 负责管理物料、BOM、数量和仓库,以及创建订单。
  • SkyPlanner 负责管理生产顺序、开始和结束时间,以及工作中心分配。
  • 如果两边都修改了订单日期,则以 SkyPlanner 下一次运行的结果为准,除非计划员已在 SkyPlanner 中锁定该生产任务。
  • B1 中的订单关闭或取消后,对应生产任务会从排程中移除。

项目包含哪些工作

从实施导入启动算起,通常几周内即可完成实施。在此之前,您可以使用自己的数据进行 30 天免费试用。将 B1 中的物料、资源和未结生产订单导出为 CSV 或 Excel,再通过 SkyPlanner 的数据导入功能加载。这样,还没开始编写集成代码,计划员就能看到实际排程。

典型的 SAP Business One 集成项目包括:

  • 主数据映射。将 B1 资源和资源组映射为工作中心,工艺路线阶段映射为工序,Make 类型的物料映射为产品。
  • 初始数据加载。加载物料、包含阶段和物料行的 Product Trees、资源以及各仓库的库存。
  • 生产订单和采购订单同步。同步未结生产订单及其明细行和阶段,以及未结采购订单及其交货日期。
  • 排程回写。将排定的开始日期和到期日期写入 ProductionOrders。
  • 车间报工。根据 SkyPlanner 工时记录,对 Receipt and Issue for Production 进行过账。
  • 与现行计划并行测试。计划员将 SkyPlanner 的排程与当前的计划方式进行比较。
  • 正式上线。以 SkyPlanner 的排程作为正式执行的计划。

B1 中的资源和工艺路线阶段数据越规范,映射工作就越简单。在 Laboratory & Allied 的项目中,集成是工作量最小的部分之一。其内部 IT 团队基本独立完成了基于 HANA 的 SAP Business One 集成。SkyPlanner 团队则协助处理最复杂的情况,例如产品在多道工序中合并的场景。

SAP Business One 集成注意事项

每日产能不等于班次模型。

B1 按天保存各资源的 Daily Internal Capacity 和 Single Run Capacity(SAP Learning 中说明:”These capacities are defined on a daily basis,”(这些产能按天定义))。SAP 指南指出,Required Days 的计算假设是 “a single production order can be produced on a single machine”(一张生产订单可以在一台机器上完成生产)(SAP 操作指南)。不要直接将这些数值当作生产排程中的实际可用产能。应在 SkyPlanner 中定义班次、人员和工作中心效率。

工艺路线包含在 BOM 中。

系统没有独立的工艺路线主数据。Product Tree 中的 Route Stage 行定义工序顺序,Waiting Days 需手动填写。读取 ProductTrees 和 ProductionOrders 中的 Stages,并检查每个资源行是否都归属于某个阶段。订单如果没有阶段,排程系统就无法获取工序顺序。

资源行的数量需要换算。

BOM 行中的 Quantity 表示生产 BOM 表头所列数量需要的用量,而非生产一个单位的用量。Additional Quantity 会计入计划时间,”regardless of the quantity of the parent item produced”(与所生产父项物料的数量无关)(SAP 操作指南)。应将其视为每张订单的固定时间,类似于生产准备时间。计算单位加工时间前,先除以表头数量,否则每个生产任务的时间都会出现倍数偏差。

资源主数据往往需要清理。

资源分为 Machine、Labor 和 Other 类型。机器可以关联固定资产,人工可以关联员工;资源还可以关联非库存物料,用于采购或销售该资源。但这些关联都无法说明哪些资源是真正可用于排程的机器。在将资源转换为工作中心列表之前,应先清理资源组和重复资源。

库存规则可能导致报工过账失败。

收货单和发料单都属于库存单据。常见错误包括混淆 InventoryGenEntries 与 InventoryGenExits、未给启用批次或序列号管理的物料填写相应号码,以及对 Planned 状态的订单过账。

会话与分页。

会话过期时会返回 “Invalid session or session already timeout.”(会话无效或已超时)。遇到此错误时需重新登录。默认每页仅返回 20 条记录;如果同步程序忽略 odata.nextLink,数据就会被截断,且不会有提示。

UpdateDate 不包含时间。

在 OWOR 表中,UpdateDate 是日期字段,更新时间单独存放在 UpdateTS 中。如果轮询仅按 UpdateDate 筛选,每次运行都会读取当天所有发生过变更的订单。应结合这两个字段筛选,或在集成端去重。

Webhook 采用“至少一次”投递机制。

Webhook Messenger 对投递失败的消息最多重试五次(间隔为 2、4、8、16 和 32 秒),之后将其标记为失败。重试可能产生重复消息,而且只保证同一公司内的消息顺序。应基于事件 ID 实现处理程序的幂等性,并保留每晚轮询核对的机制。

SAP Business One 集成由谁配置

配置工作包括映射您的工艺路线阶段、资源和 B1 设置,还包括 B1 排程未考虑的约束:准备时间矩阵、工具、操作员人数和替代资源。

  1. SkyPlanner 团队在实施导入阶段完成配置,并在上线后提供支持。每家公司使用 B1 的方式都不同,团队会将相应经验应用到配置中。这是默认方案。
  2. 您的 SAP Business One 合作伙伴也可以参与。熟悉您公司数据库、附加组件和用户自定义字段的合作伙伴,可以基于 Service Layer 和 SkyPlanner 的 REST API 开发集成(API 参考文档)。
  3. 您的开发团队也可以自行开发集成。SkyPlanner 的 REST API 可读写订单、产品、物料、工序、采购订单和工时记录。该 API 使用 JWT bearer token 认证,文档采用 Swagger/OpenAPI,公开文档见 SkyPlanner 文档。Webhook 会实时推送排程和状态变更。只需一个 SkyPlanner API 密钥即可开始开发(参见集成教程),SkyPlanner 团队会在需要时提供协助。Laboratory & Allied 的内部 IT 团队采用的就是这一方案。

先在 30 天免费试用期间验证排程,确保集成工作以已经符合工厂实际情况的排程为基础。

技术团队为何选择 SkyPlanner 对接 B1

  • 如果您希望集成规模小、范围明确,可以选择 SkyPlanner。传入的是标准 B1 对象(生产订单、Product Trees、Resources、Items),传出的是日期以及 Issue and Receipt from Production。无需修改 B1 制造模块,也无需迁移数据。
  • 如果项目需要尽早验证价值,可以选择 SkyPlanner。30 天免费试用可使用导出的 CSV 数据,支持最多 20 个工作中心,无需信用卡。集成开始前,业务团队就能看到自己的生产排程。
  • 如果排程必须符合实际约束,可以选择 SkyPlanner。换型时间、共享工具、需要多名操作员的生产任务、替代资源、库存和未结采购订单,都在 SkyPlanner 中建模。集成只负责传输 B1 数据。
  • 如果您希望计划员和操作员共用一套系统,可以选择 SkyPlanner。Arcturus 引擎可在数秒内生成排程,生产情况变化时,Autopilot 会自动重新排程。操作员通过手机或平板电脑记录作业,集成程序再将这些报工记录回写到 B1。
  • 如果您需要可预见的成本,可以选择 SkyPlanner。价格从每月 199 € 起,包含 5 个工作中心,按月付费,可随时取消。集成费用会根据您的流程和需求,与订阅方案一起预先报价,让您在开始前就了解全部费用。

如需了解现有计划功能的不足,请阅读 SAP Business One 生产排程详解;如需了解其他 ERP,请访问 ERP 集成中心。

制造企业对 SkyPlanner 的评价

Laboratory & Allied 位于内罗毕的制药厂内,操作员身穿洁净服在灌瓶生产线上工作

+90%生产效率

“生产效率提高了 90%。”

Abdul Rucyinga,IT 负责人
Laboratory & Allied · 制药

生产效率提高了 90%,为所有工作中心制定覆盖三个月的优化计划,用时不到 30 分钟。

阅读 Laboratory & Allied 的评价

UTU 供应链专家 Kalle Kalliomäki 在乌尔维拉的配电盘生产车间

2 小时每周节省时间

“SkyPlanner 让我们的生产计划从使用 Excel 表格转向了实时生产优化。”

Kalle Kalliomäki,供应链专家
UTU · 配电盘和开关设备

生产计划工作每周节省 2 小时,新的作业队列几秒内就能下达到产线。

阅读 UTU 的评价

Fredman Operations 生产经理 Anu Järvinen 站在劳马的机器人码垛单元旁

6 个月的可用产能,销售一目了然

“SkyPlanner 为所有生产计划工作打下了基础,提供了可靠保障。”

Anu Järvinen,生产经理
Fredman Operations · 食品级包装纸

销售人员能提前掌握未来六个月的可用产能。排程变更请求过去需要一小时甚至更久才能答复,现在几秒钟就能回应。

阅读 Fredman Operations 的评价

Piristeel 位于考哈瓦的屋面安全设施工厂航拍图

99.2%准时交付率

“SkyPlanner 让生产瓶颈更容易发现,也让生产管理更加清晰。”

Toni Tuori,生产经理
Piristeel · 屋面安全设施及雨水系统

今年的准时交付率达到了 99.2%,排程每天最多可节省四小时的工作时间。

阅读 Piristeel 的评价

常见问题

SAP Business One 集成由谁搭建?

SkyPlanner 团队在导入实施期间配置双向集成,并在上线后提供支持。生产订单、工艺阶段、资源、采购订单和收货数据会传入 SkyPlanner,排程日期以及 Issue and Receipt from Production 则回传至 B1。您的 B1 合作伙伴或内部开发人员也可以基于 Service Layer 和 SkyPlanner 的 REST API 自行开发集成,只需一个 API 密钥即可开始。

SkyPlanner 与 SAP Business One 的集成实施需要多长时间?

通常在启动导入实施后的几周内即可完成。团队会映射资源和工艺阶段,接入生产订单和采购订单,并在上线前对照您当前的计划测试排程。

选择 Service Layer 还是 DI API?

新开发的集成应使用 Service Layer。它基于 HTTP,可在 HANA 和 SQL Server 上运行,适合云端排程系统。只有在现有中间件已经依赖 DI API 的情况下,才使用 DI API。

是否必须使用 SAP Business One 10.0 FP 2602?

只有使用 Webhook 时才需要该版本。较早的 10.0 版本通过定时轮询进行集成。

排程日期如何回写到 SAP Business One?

由 SkyPlanner 的排程变更 webhook 触发,通过 PATCH /b1s/v1/ProductionOrders({DocEntry}) 设置订单上的 StartDate 和 DueDate,以及资源行上的 StartDate 和 EndDate。产量和工时通过 InventoryGenEntries 和 InventoryGenExits 回写,并使用值为 202 的 BaseType 及 BaseEntry 关联到订单。

B1 是否需要安装制造业附加组件?

不需要。集成仅涉及 B1 的标准对象:生产订单、Product Trees、Resources、Items、采购订单和库存单据。无需将任何数据迁移到新的制造数据模型中。

能否在集成前,用我们的 B1 数据测试 SkyPlanner?

可以。30 天试用最多支持 20 个工作中心,可通过 CSV 或 Excel 导入数据,无需信用卡。您可以开始免费试用,或联系销售,讨论您的 B1 配置。