1. 工位资源维护
页面入口:系统管理 > 工位管理。
- 按工位名称输入查询条件,点击“查询”确认现有记录。
- 点击“新增”维护工位号、工位名称及资源属性;已有工位点击所在行“编辑”。
- 核对工位号无重复后,在 MES 页面提交保存。
接口触发:B1 POST Resources(新增)或 PATCH Resources('工位号')(编辑)。禁止直接调用。

TECHNICAL INTEGRATION GUIDE
适用于 SAP Business One Service Layer、TM 条码任务,以及 SQL Server 链接服务器只读查询。
本项目存在三类 SAP/TM 集成方式,必须按各自的数据方向和调用边界实施:
| 集成方式 | 用途 | 方向 | 项目位置 |
|---|---|---|---|
| SAP B1 Service Layer 网关 | 工位、工艺、生产订单、采购申请、生产发料等业务对象的查询或写入 | MES 调用 SAP | src/api/b1s.js |
| TM 条码网关 | 生产领料出库任务、质检/退库入库任务的创建与状态反馈 | MES 调用 TM | src/api/tm.js |
SQL Server 链接服务器 [SAP] | 物料、项目、缺件、发货等报表的只读查询 | MES 数据库读取 SAP 视图 | 数据库存储过程与 db_backups/*.sql |
getB1、postB1、patchB1 或 TM 的 gettm、posttm、patchtm,不要在 Vue 页面保存 B1 密码、SessionId 或 TM AccessToken。externalReadOnly: true 时,封装会阻止 POST 与 PATCH。src/api/b1s.jsbaseURLB1当前部署配置位于 static/config.js:baseURLB1 指向 B1 网关 /b1s,baseURLtm 指向 TM 网关 /openapi。地址由运行环境配置提供,前端源码不应硬编码 SAP 地址、账号、密码、SessionId 或 TM Token。
开发环境代理将 /api/b1s 转至 SAP Service Layer 的 /b1s/v1,将 /api/tm 转至条码系统的 /openapi/v1。生产调用实际以运行时 baseURLB1 与 baseURLtm 为准。
前端封装未在每个业务调用中传递 SAP 用户名和密码,认证与 SAP 会话应由 B1 网关统一管理。登录信息、会话 Cookie、证书及跨域策略均不得写入页面代码、接口参数、浏览器日志或本说明文档。
对接方案规定:每次直接调用 SAP Service Layer 前,先登录取得响应体中的 SessionId;后续请求在 Header 中携带 Cookie: B1SESSION=<SessionId>;。方案样例的会话有效期为 30 分钟,具体以登录响应的 SessionTimeout 为准。
/Login,也没有给每次请求附加 B1SESSION。这是正确的浏览器安全边界,B1 网关必须负责登录、缓存/续期会话并转发请求。下列直接调用示例只适用于网关服务端或 Postman 联调,不能将账号密码搬到前端。POST https://{b1-host}:50000/b1s/v1/Login
Content-Type: application/json
{
"CompanyDB": "TEST_YL 或 SBO_YL",
"UserName": "${B1_USER}",
"Password": "${B1_PASSWORD}",
"Language": "15"
}
// 成功响应必须读取并安全保存 SessionId;不要写入浏览器 localStorage。
{
"SessionId": "...",
"Version": "...",
"SessionTimeout": 30
}
GET https://{b1-host}:50000/b1s/v1/ProductionOrders?$filter=AbsoluteEntry eq 1234
Cookie: B1SESSION=${SESSION_ID};
Accept: application/json
收到 401、会话过期或 “not connected to a company” 类错误时,网关应只重登录一次后重试原请求;仍失败则返回失败给 MES。禁止在前端静默无限重试,避免重复创建采购申请、生产发料单等外部单据。
b1s.js 与 tm.js 均向各自网关根路径发送 HTTP POST。网关请求体为 JSON,实际下游动词由 func 指定;B1 或 TM 的认证 Header 由网关维护。
| 字段 | 类型 | 说明 | 示例 |
|---|---|---|---|
func | string | 目标 Service Layer 动词 | GET 可查询;POST、PATCH 禁止调用 |
cmd | string | SAP 对象路径,封装会移除传入路径中的首个 / | ProductionOrders(1234) |
content | string | 业务参数或请求体的 JSON 字符串 | {"ProductionOrderStatus":"boposClosed"} |
// 读取:getB1('/ProductionOrders', { "$filter": "AbsoluteEntry eq 1234" })
POST {baseURLB1}
Content-Type: application/json
{
"func": "GET",
"cmd": "ProductionOrders",
"content": "{\"$filter\":\"AbsoluteEntry eq 1234\"}"
}
// 禁止调用(func=PATCH):patchB1('/ProductionOrders(1234)', { ProductionOrderStatus: 'boposClosed' })
{
"func": "PATCH",
"cmd": "ProductionOrders(1234)",
"content": "{\"ProductionOrderStatus\":\"boposClosed\"}"
}
封装默认超时为 100 秒。调用结果统一为 { success: true, data } 或 { success: false, message };页面必须检查 success 后再提示用户或更新本地状态。
ProductionOrders| 操作 | 调用 | 用途 | 写入风险 |
|---|---|---|---|
| GET | getB1('/ProductionOrders', { '$filter': 'AbsoluteEntry eq 订单号' }) | 读取订单、工序阶段、资源行等数据。 | 无写入;结果为空时不可直接取 value[0]。 |
| PATCH | patchB1('/ProductionOrders(订单号)', { ProductionOrderStatus: 'boposClosed' }) | 关闭生产订单。 | 高。须逐单记录结果,处理部分成功和重复关闭。 |
| PATCH | patchB1('ProductionOrders(订单号)', { ProductionOrderLines, ProductionOrdersStages }) | 工时校验场景更新订单工序与资源。 | 高。先读取最新订单,再合并工序/资源,不能用陈旧的整单数组覆盖 SAP 数据。 |
生产订单是 MES 与 SAP 的主关联对象。以 AbsoluteEntry(MES 中的订单号/计划号)查询;订单状态使用 boposPlanned、boposReleased、boposClosed、boposCancelled。更新 ProductionOrderLines 或 ProductionOrdersStages 后,SAP 不保证返回完整订单,必须立即按 AbsoluteEntry 重查,并将实际的 LineNumber、StgEntry、StgSeqNum 回写到 MES 的关联记录。
// 当前项目可直接使用的查询方式:由 B1 网关持有会话
const orderResult = await getB1('/ProductionOrders', {
'$filter': 'AbsoluteEntry eq ' + orderNo,
'$select': 'AbsoluteEntry,ProductionOrderStatus,ItemNo,PlannedQuantity,Project'
});
if (!orderResult.success || !orderResult.data?.value?.length) {
throw new Error(orderResult.message || '未找到 SAP 生产订单');
}
const order = orderResult.data.value[0];
Resources| 操作 | 调用与关键字段 | 业务场景 |
|---|---|---|
| POST | postB1('/Resources', { VisCode, Name, Type: 'rtMachine', Group: 1, Active: 'tYES', ... }) | 新增 MES 工位后同步创建 SAP 资源。 |
| PATCH | patchB1("/Resources('工位号')", { Name }) | 工位名称变更后同步 SAP 资源名称。 |
RouteStages| 操作 | 调用与关键字段 | 业务场景 |
|---|---|---|
| POST | postB1('/RouteStages', { Code, Description, CreationDate, DateOfUpdate }) | 新增 MES 工艺后同步创建 SAP 工艺阶段。 |
| GET + PATCH | 先用 Code 过滤查询得到 InternalNumber,再 patchB1('/RouteStages(' + InternalNumber + ')', {...})。 | 编辑 MES 工艺时更新 SAP 描述和更新时间。 |
PurchaseRequests| 操作 | 调用与关键字段 | 业务场景 |
|---|---|---|
| POST | postB1('/PurchaseRequests', { ReqType, Requester, DocDate, RequredDate, DocumentLines }) | 外协派工并同步 SAP 时创建采购申请;DocumentLines 中包含物料、数量、仓库、生产订单及工序关联字段。 |
采购申请创建成功后,必须从返回数据取得并保存 SAP DocEntry 及 DocNum。表头至少维护 ReqType、Requester、DocDate、DocDueDate、TaxDate、RequriedDate;每个 DocumentLines 行至少维护 ItemCode、Quantity、WarehouseCode。日期按 YYYY-MM-DD 传递,数量按业务精度处理。
InventoryGenExits项目的工时校验页面会先同步生产订单工序/资源,再创建 SAP 生产发料单,以回传设备或人工报工。单据头使用 DocDate、DocDueDate、Comments;行项目基于生产订单使用 BaseType: 202、BaseEntry(生产订单号)、BaseLine(SAP 生产订单行号),并携带资源/物料行、数量、仓库及工序阶段关联。
const feedback = await postB1('/InventoryGenExits', {
DocDate: '2026-08-03',
DocDueDate: '2026-08-03',
Comments: 'MES报工 AID:12345; 项目:HT-0001',
DocumentLines: [{
BaseType: 202,
BaseEntry: 1234,
BaseLine: 2,
LineType: 'dlt_Resource',
WarehouseCode: '',
U_ResName: '数控车床A',
Quantity: 1.5
}]
});
if (!feedback.success) throw new Error(feedback.message || 'SAP 生产反馈失败');
// 保存返回的 DocEntry,作为 MES 报工与 SAP 发料单的追溯键。
项目使用 src/api/tm.js,运行时入口为 window.dt_Config.baseURLtm。现有页面已实际调用以下路径:posttm('/stocktask/task/issueordertask', payload) 创建领料出库任务;posttm('/stocktask/task/receiptordertask', payload) 创建收货/退库入库任务。网关把 func、cmd、content 转发至 TM OpenAPI。
| TM 业务接口 | 下游 OpenAPI 路径 | 项目触发场景 | 核心请求字段 |
|---|---|---|---|
| 创建出库任务 | POST /openapi/v1/stocktask/task/issueordertask | 加工中心、装配中心、质量中心领料。 | doc_date、doc_type、external_num、task_items[] |
| 创建入库任务 | POST /openapi/v1/stocktask/task/receiptordertask | 不合格品入库、退库质检后入库。 | doc_date、doc_type、external_num、task_items[] |
Authorization: AccessToken,并定义 401/403 响应;没有给出“登录/换取 AccessToken”的 URL、请求体、Token 有效期或刷新协议。项目源码也没有实现 logintm,虽然仪表盘调用了该名称。因此当前代码不能作为 TM 登录实现的依据。要使 TM 调用可用,必须由条码系统供应方提供并确认以下五项,再由网关实现,前端不保存 Token:登录/换取 Token 地址与方法、账号认证字段、Header 格式、有效期与刷新方式、401 后的重试规则。网关应将 Token 写入服务端安全存储,并在转发 TM 请求时增加 Authorization: <AccessToken> 和需要时的 Accept-Language: zh_CN。
const payload = {
doc_date: '2026-08-03',
doc_type: '202-60', // 现有领料页面使用的业务类型;变更前需与 TM 数据字典核对
external_num: '1234', // MES/SAP 关联单据号
task_items: [{
base_type: '202',
base_entry: '1234',
base_line_num: 2,
external_num: '1234',
item_code: 'ITEM-001',
item_name: '物料名称',
line_memo: 'MES领料任务',
whs_code: 'W03',
manage_type: 'B',
price: 0,
quantity: 2
}]
};
const tmResult = await posttm('/stocktask/task/issueordertask', payload);
if (!tmResult.success) throw new Error(tmResult.message || 'TM 网关请求失败');
// TM 接口返回结构为 { code, data, message }。
// 必须按供应方确认的成功 code 判断,并保存 data 中的任务标识;不能仅凭 HTTP 2xx 提示“请求成功”。
if (!isTmBusinessSuccess(tmResult.data)) throw new Error(tmResult.data?.message || 'TM 创建任务失败');
TM 入库任务同样使用 receiptordertask;入库明细必须至少包含物料编码与数量,涉及批次时还需传 batch_number。条码接口文档定义的返回结构为 { code, data, message },HTTP 200/201 才代表传输成功,401 表示 Token 无效,403 表示无权限,404 表示路径/资源不存在。业务成功码需由 TM 供应方确认后配置到网关。
await posttm(...) 后不检查 result2.success 和 result2.data.code 即弹出“请求成功”。联调或正式上线前,必须改为以上述两层校验为准,并把 TM 的任务 ID、返回码、返回信息和请求流水号落库,才能支持查询、重推与对账。以下数据通过 SQL Server 链接服务器 [SAP] 读取,不属于 Service Layer 写接口。存储过程只能使用最小字段集,避免无条件跨库大范围查询。
| SAP 视图 | 项目用途 | 代表字段/关联口径 |
|---|---|---|
SBO_YL.dbo.UBT_OITM | 物料下拉查询、设计报工物料查询。 | 物料编码、物料名称、物料描述、规格型号、自制件属性。 |
SBO_YL.dbo.VIEW_OPRJ | 设计报工项目号查询。 | 项目代码、项目名称;项目号必须从 SAP 项目视图读取。 |
SBO_YL.dbo.VIEW_Jijiankukc | 及时齐套跟踪的缺件和库存查询。 | ItemCode、DocEntry、Project、未发货数量、在制采购、采购预计交货日期、库存量等。 |
SBO_YL.dbo.UBT_ODRF_ODLNMES | 发货通知与发货瓶颈看板。 | 生产单号、项目号、物料、交货数量、要求发货时间、单据状态。 |
-- 只读示例:以参数限定、显式转换数据类型
SELECT TOP (100)
CAST([物料编码] AS nvarchar(100)) AS [物料编码],
CAST([物料名称] AS nvarchar(200)) AS [物料名称]
FROM [SAP].[SBO_YL].[dbo].[UBT_OITM]
WHERE CAST([物料编码] AS nvarchar(100)) LIKE N'%' + @过滤 + N'%'
ORDER BY CAST([物料编码] AS nvarchar(100));
OPENQUERY([SAP], ...) 或将目标集先落入临时表,再与 MES 数据关联。不要在页面主列表中循环逐行查询 SAP。dbo.update_MyTask该过程运行在 YL_MESDB,不接收参数。它通过 SQL Server 链接服务器 [SAP].[SBO_YL].[dbo] 读取 SAP 视图,再更新 MES 本地表;过程本身不调用 Service Layer,也不向 SAP 写入数据。
| 项目 | 实际配置 |
|---|---|
| 作业名称 | 更新,已启用 |
| 作业步骤 | 执行更新,数据库 YL_MESDB |
| 执行命令 | EXEC update_MyTask |
| 计划 | 定时1min,已启用;每日按 1 分钟间隔执行,起始时间 00:00:00。 |
| MES 本地表 | SAP 来源 | 更新字段与业务含义 |
|---|---|---|
质量检验_质检任务_SAP | ubt_OPKL_UrgentMaterials | 按物料编码更新 加急总数、加急状态。 |
MES_接口_生产计划 | UBT_OWOR_OIGN | 按订单编号更新 入库数量(来源已完工数量)。 |
MES_接口_生产计划 | UBT_ODRF_ODLNMES | 按生产单号更新 发货状态 与 要求发货日期。 |
MES_接口_生产计划 | ubt_OPKL_UrgentMaterials | 按物料编号更新 加急总数、加急状态。 |
MES_接口_生产计划 | UBT_OPKL_CompleteSet | 按生产订单号更新 齐套、发料状态、齐套时间、拣配状态。 |
MES_接口_生产计划_生产任务 | UBT_OPKL_CompleteSet | 当 SAP 执行状态为“可执行”且订单行号为 1 时,将 任务状态 更新为 1。 |
MES_接口_生产计划 | UBT_OWOR、UBT_MES_ISSUEPRINT | 将已取消/已结算订单标记为“已取消”,并同步 派工时间(打印时间)。 |
-- SQL Agent 当前每分钟执行一次的命令
USE [YL_MESDB];
GO
EXEC [dbo].[update_MyTask];
GO
过程将同步分为三个独立事务块,每个块使用 TRY...CATCH:发生错误即回滚当前事务并重新抛出错误。所有同步结果以 MES 本地表更新为准,页面查询应读取相应 MES 字段,不应把此过程误认为直接更新 SAP 单据的接口。
本节按当前 src/views 中的有效调用整理,未计入注释代码和“副本”页面。所有前端调用均是向 MES 网关发送 HTTP POST;以下 func 才是网关转发给 B1/TM 的实际方法。
"func": "POST" 和 "func": "PATCH" 的网关请求均为禁止调用,不得在 Postman、浏览器控制台或其他客户端执行。即使 QueryService_PostQuery 的业务用途为查询,它的网关 func 仍为 POST,同样禁止调用。仅 "func": "GET" 可用于只读查询。| Postman 变量 | 当前项目配置 | 用途 |
|---|---|---|
{{mes_b1_gateway}} | https://192.168.2.92:9996/b1s | SAP B1 网关 |
{{mes_tm_gateway}} | https://192.168.2.92:9996/openapi | TM 条码网关 |
POST {{mes_b1_gateway}}
Content-Type: application/json
{
"func": "GET",
"cmd": "ProductionOrders",
"content": "{\"$filter\":\"AbsoluteEntry eq 7316\"}"
}
这是页面 getB1('/ProductionOrders', { '$filter': 'AbsoluteEntry eq 7316' }) 发出的实际网关格式。将 cmd 填为下表对象路径,content 必须是 JSON 字符串而不是 JSON 对象。
| 页面 | 功能入口 | 系统 / func | cmd | 页面实际传入参数 |
|---|---|---|---|---|
SystemMaintenance/WorkstationManagement | 新增工位 | B1 / POST | Resources | VisCode 工位号、Name 工位名、ForeignName、Type=rtMachine、Group=1、UnitOfMeasure、IssueMethod=rimManual、Active=tYES、Inactive=tNO、Remarks、Allocation=raOnStartDate。 |
SystemMaintenance/WorkstationManagement | 编辑工位 | B1 / PATCH | Resources('工位号') | Name。 |
ProcessManagement/ProcedureManagement | 新增工艺 | B1 / POST | RouteStages | Code(MES 工艺编号)、Description(工艺名称)、CreationDate、DateOfUpdate。 |
ProcessManagement/ProcedureManagement | 编辑工艺 | B1 / GET 后 PATCH | RouteStages;RouteStages(InternalNumber) | 先以 $filter: Code eq '工艺编号' 查询;从返回行取得 InternalNumber 后更新 Description、DateOfUpdate。 |
PlanManagement/PlannOrderClose | 关闭生产订单 | B1 / PATCH | ProductionOrders(订单编号) | AbsoluteEntry、ProductionOrderStatus=boposClosed。 |
PlanManagement/WorkstationPlan、SelfMakePlan、SelfMakePlando、SelfMakePlandone | 排产完成 | B1 / PATCH | ProductionOrders(订单号) | AbsoluteEntry、U_MODueDate(最晚完成)、U_MOStartDate(最早开始)。 |
PlanManagement/InstallMakePlan、InstallMakePlanDo、InstallMakePlanDone、SystemInstallTask、ValueInstallTask | 派工 | B1 / POST | PurchaseRequests | ReqType=12、Requester、PriceMode=G、RequesterBranch=-2、RequesterDepartment=-2、DocDate、DocDueDate、TaxDate、RequriedDate、Comments、DocumentLines[ItemCode, Quantity, WarehouseCode, U_WWOworID]。 |
| 上述 5 个装配排产页 | 排产完成 | B1 / PATCH | ProductionOrders(订单号) | AbsoluteEntry、U_MODueDate、U_MOStartDate、U_YJQTdate(均使用页面计算出的开始/完成日期)。 |
ProductionManagement/OutsourceMange、SaleOutsourceMange | 派工并同步 SAP | B1 / POST | PurchaseRequests | 表头同派工;行项目实际含 ItemCode、Quantity=指派数量、WarehouseCode、U_WWOworID(订单号)、U_WWOrst(工序)、U_WWOrstHS(最后工序)、U_WWOrstID(最后 TaskAID)。 |
ProductionManagement/AssemblyCenter、MachiningCenter、QualityManagement/QualityCenter | 领料弹窗 | B1 / GET | ProductionOrders | $filter=AbsoluteEntry eq 当前订单号;页面使用返回的 ProductionOrderLines 作为领料明细。 |
QualityManagement/CheckTask/materialReturn | 退库质检后入库 | B1 / GET | ProductionOrders | $filter=AbsoluteEntry eq 计划号;按零件编码从 ProductionOrderLines 取得 LineNumber,作为 TM base_line_num。 |
ProductionManagement/WorkHoursCheck | 工时校验上传 SAP | B1 / GET、PATCH、POST | ProductionOrders;InventoryGenExits | 按 AbsoluteEntry 查询订单;更新 ProductionOrderLines、ProductionOrdersStages;再提交 DocDate、DocDueDate、Comments、DocumentLines(资源报工行)。 |
QualityManagement/CheckTask/processReceive | 外协收检 | B1 / POST | QueryService_PostQuery;PurchaseDeliveryNotes | 先传 QueryPath=$crossjoin(PurchaseOrders,PurchaseOrders/DocumentLines) 和 QueryOption(订单号、工序和行状态筛选);匹配后传 CardCode、CardName、DocDate、DocumentLines[BaseEntry, BaseLine, BaseType=22, Quantity, U_WWPassedQty] 创建采购收货单。 |
ProductionManagement/AssemblyCenter、MachiningCenter、QualityManagement/QualityCenter、CheckTask/salesReturn | 领料/销售退货出库任务 | TM / POST | stocktask/task/issueordertask | doc_date、doc_type=202-60、external_num、task_items[base_type=202, base_entry, base_line_num, external_num, item_code, item_name, line_memo, whs_code, manage_type=B, price=0, quantity]。 |
ProductionManagement/MachiningCenter | 不合格品入库任务 | TM / POST | stocktask/task/receiptordertask | doc_date、doc_type=202-59、external_num=计划号、task_items[base_entry, base_type=202, external_num, item_code, item_name, whs_code, manage_type=B, price=0, quantity=不合格数]。 |
QualityManagement/CheckTask/materialReturn | 退库质检合格后入库任务 | TM / POST | stocktask/task/receiptordertask | doc_date、doc_type=202-60、external_num、target_type=202-59,行项目含 external_line_id、batch_number、task_materials_items[item_code, batch_number, quantity, open_quantity] 及领料任务通用字段。 |
以下为 MES 页面中的实际操作入口。截图来自系统操作手册中的真实页面;请先在 MES 页面完成业务操作。涉及 POST 或 PATCH 的接口均由系统受控流程触发,禁止在 Postman 中直接调用。
页面入口:系统管理 > 工位管理。
接口触发:B1 POST Resources(新增)或 PATCH Resources('工位号')(编辑)。禁止直接调用。

页面入口:工艺管理 > 工序管理。
RouteStages.Code 对应。接口触发:查询为 B1 GET RouteStages;新增/编辑为 POST/PATCH RouteStages。禁止直接调用写请求。

页面入口:计划排产 > 工位任务汇总。
接口触发:排产和订单关闭均使用 B1 PATCH ProductionOrders(订单号)。禁止直接调用。

页面入口:生产管理 > 外协管理,或采购外协管理。
接口触发:B1 POST PurchaseRequests,行项目含物料、数量、仓库、订单号和工序。禁止直接调用。

页面入口:生产管理 > 加工中心或装配中心。
接口触发:明细读取为 B1 GET ProductionOrders;TM 出库任务为 POST stocktask/task/issueordertask。禁止直接调用写请求。

页面入口:生产管理 > 工时校验。
接口触发:B1 GET ProductionOrders,以及 PATCH ProductionOrders、POST InventoryGenExits。禁止直接调用写请求。

页面入口:质量管理 > 序检收检。
接口触发:B1 POST QueryService_PostQuery 查询采购订单行,随后 POST PurchaseDeliveryNotes 收货。两项均禁止直接调用。

页面入口:质量管理 > 原材料退库检验。
接口触发:B1 GET ProductionOrders 取得行号;TM POST stocktask/task/receiptordertask 创建入库任务。禁止直接调用写请求。

以下请求体用于识别实际页面参数。仅标记为 func=GET 的请求可在 Postman 的 Body / raw / JSON 中执行;所有 func=POST、func=PATCH 请求均禁止调用。
// 1. B1:查询生产订单,供领料、工时校验、退库页面使用
POST {{mes_b1_gateway}}
{
"func": "GET",
"cmd": "ProductionOrders",
"content": "{\"$filter\":\"AbsoluteEntry eq 7316\"}"
}
// 禁止调用(func=POST):B1 新增工位资源
POST {{mes_b1_gateway}}
{
"func": "POST",
"cmd": "Resources",
"content": "{\"VisCode\":\"WC-001\",\"Name\":\"测试工位\",\"ForeignName\":\"\",\"Type\":\"rtMachine\",\"Group\":1,\"UnitOfMeasure\":\"\",\"IssueMethod\":\"rimManual\",\"Active\":\"tYES\",\"Inactive\":\"tNO\",\"Remarks\":\"\",\"Allocation\":\"raOnStartDate\"}"
}
// 禁止调用(func=PATCH):B1 更新工位名称
POST {{mes_b1_gateway}}
{
"func": "PATCH",
"cmd": "Resources('WC-001')",
"content": "{\"Name\":\"测试工位(已更新)\"}"
}
// 4. B1:按工艺代码查询,再用返回的 InternalNumber 更新
POST {{mes_b1_gateway}}
{
"func": "GET",
"cmd": "RouteStages",
"content": "{\"$filter\":\"Code eq '10'\"}"
}
// 禁止调用(func=PATCH):B1 更新工艺阶段
POST {{mes_b1_gateway}}
{
"func": "PATCH",
"cmd": "RouteStages(10)",
"content": "{\"Description\":\"装配\",\"DateOfUpdate\":\"2026-08-03\"}"
}
// 禁止调用(func=PATCH):B1 排产日期回写生产订单
POST {{mes_b1_gateway}}
{
"func": "PATCH",
"cmd": "ProductionOrders(7316)",
"content": "{\"AbsoluteEntry\":7316,\"U_MODueDate\":\"2026-08-10\",\"U_MOStartDate\":\"2026-08-05\",\"U_YJQTdate\":\"2026-08-05\"}"
}
// 禁止调用(func=PATCH):B1 关闭生产订单
POST {{mes_b1_gateway}}
{
"func": "PATCH",
"cmd": "ProductionOrders(7316)",
"content": "{\"AbsoluteEntry\":7316,\"ProductionOrderStatus\":\"boposClosed\"}"
}
// 禁止调用(func=POST):B1 装配派工创建采购申请
POST {{mes_b1_gateway}}
{
"func": "POST",
"cmd": "PurchaseRequests",
"content": "{\"ReqType\":12,\"Requester\":\"SAPJK001\",\"PriceMode\":\"G\",\"RequesterBranch\":-2,\"RequesterDepartment\":-2,\"DocDate\":\"2026-08-03\",\"DocDueDate\":\"2026-08-03\",\"TaxDate\":\"2026-08-03\",\"RequriedDate\":\"2026-08-03\",\"Comments\":\"MES派工\",\"DocumentLines\":[{\"ItemCode\":\"108-001\",\"Quantity\":1,\"WarehouseCode\":\"W03\",\"U_WWOworID\":7316}]}"
}
// 禁止调用(func=POST):B1 外协派工创建采购申请(增加工序关联字段)
POST {{mes_b1_gateway}}
{
"func": "POST",
"cmd": "PurchaseRequests",
"content": "{\"ReqType\":12,\"Requester\":\"SAPJK001\",\"PriceMode\":\"G\",\"RequesterBranch\":-2,\"RequesterDepartment\":-2,\"DocDate\":\"2026-08-03\",\"DocDueDate\":\"2026-08-03\",\"TaxDate\":\"2026-08-03\",\"RequriedDate\":\"2026-08-10\",\"Comments\":\"MES外协派工\",\"DocumentLines\":[{\"ItemCode\":\"108-001\",\"Quantity\":3,\"WarehouseCode\":\"W03\",\"U_WWOworID\":7316,\"U_WWOrst\":\"外协工序\",\"U_WWOrstHS\":\"最后工序\",\"U_WWOrstID\":999}]}"
}
// 禁止调用(func=POST):B1 工时校验的生产反馈,DocumentLines 必须来自已查询到的 SAP 订单行
POST {{mes_b1_gateway}}
{
"func": "POST",
"cmd": "InventoryGenExits",
"content": "{\"DocDate\":\"2026-08-03\",\"DocDueDate\":\"2026-08-03\",\"Comments\":\"MES报工 AID:12345\",\"DocumentLines\":[{\"Quantity\":1.5,\"BaseType\":202,\"BaseEntry\":7316,\"BaseLine\":2,\"LineType\":\"dlt_Resource\",\"WarehouseCode\":\"\",\"U_ResName\":\"数控车床A\"}]}"
}
// 禁止调用(func=POST):B1 外协收检前查询采购订单及行项目
POST {{mes_b1_gateway}}
{
"func": "POST",
"cmd": "QueryService_PostQuery",
"content": "{\"QueryPath\":\"$crossjoin(PurchaseOrders,PurchaseOrders/DocumentLines)\",\"QueryOption\":\"$expand=PurchaseOrders($select=DocEntry,DocNum,CardCode,CardName),PurchaseOrders/DocumentLines($select=ItemCode,LineNum,Price,U_WWOworID,U_WWOrstHS,LineStatus)&$filter=PurchaseOrders/DocEntry eq PurchaseOrders/DocumentLines/DocEntry and PurchaseOrders/DocumentLines/U_WWOworID eq 7316\"}"
}
// 禁止调用(func=POST):B1 外协收检创建采购收货单
POST {{mes_b1_gateway}}
{
"func": "POST",
"cmd": "PurchaseDeliveryNotes",
"content": "{\"CardCode\":\"V001\",\"CardName\":\"供应商名称\",\"DocDate\":\"2026-08-03\",\"DocumentLines\":[{\"BaseEntry\":100,\"BaseLine\":0,\"BaseType\":22,\"Quantity\":5,\"U_WWPassedQty\":0}]}"
}
// 禁止调用(func=POST):TM 创建领料出库任务
POST {{mes_tm_gateway}}
{
"func": "POST",
"cmd": "stocktask/task/issueordertask",
"content": "{\"doc_date\":\"2026-08-03\",\"doc_type\":\"202-60\",\"external_num\":7316,\"task_items\":[{\"base_type\":\"202\",\"base_entry\":7316,\"base_line_num\":2,\"external_num\":7316,\"item_code\":\"ITEM-001\",\"item_name\":\"物料名称\",\"line_memo\":\"MES领料\",\"whs_code\":\"\",\"manage_type\":\"B\",\"price\":0,\"quantity\":2}]}"
}
// 禁止调用(func=POST):TM 创建不合格品/退库入库任务
POST {{mes_tm_gateway}}
{
"func": "POST",
"cmd": "stocktask/task/receiptordertask",
"content": "{\"doc_date\":\"2026-08-03\",\"doc_type\":\"202-59\",\"external_num\":7316,\"task_items\":[{\"base_type\":\"202\",\"base_entry\":7316,\"base_line_num\":2,\"external_num\":7316,\"item_code\":\"ITEM-001\",\"item_name\":\"物料名称\",\"whs_code\":\"\",\"manage_type\":\"B\",\"price\":0,\"quantity\":1}]}"
}
TM 返回为 { code, data, message };B1 返回为网关透传的 Service Layer 响应。上面的请求体只用于已具备业务权限的测试/联调环境,订单号、行号、供应商、资源和物料均必须先从业务数据或前置查询结果获得。