SAP
Business One Service Layer 介绍
一、基本概念
SAP
Business One Service Layer 是 SAP Business One 的新一代扩展 API,旨在提供统一、高效的方式访问和操作 SAP Business One 的数据与服务。它基于 HTTP 和 OData 协议(支持 OData 版本 3 和 4),构建在 Apache
HTTP 服务器上,具备高可扩展性和高可用性,可适配 SAP Business One 9.1、9.2、9.3、10.0 等版本(包括基于 SAP HANA 和 Microsoft SQL Server 的部署)。
从架构上看,Service Layer 采用三层架构:
二、适用场景
Service Layer 适用于以下场景,目标受众包括系统管理员、软件开发人员及企业 IT 规划者:
三、核心功能清单
Service
Layer 提供了丰富的功能,覆盖数据访问、业务操作、扩展定制等多个维度,主要包括:
1.
基础交互与认证
2.
数据操作(CRUD)
3.
高级查询能力
4.
扩展与定制
5.
可靠性与监控
6.
其他功能
四、案例介绍
案例(一):创建销售订单并关联客户
场景:通过 Service Layer 创建一个包含两行商品的销售订单,并关联已存在的客户。
http
POST
https://<server>:<port>/b1s/v1/Login
{
"CompanyDB": "US506", "UserName":
"manager", "Password": "1234" }
响应返回 B1SESSION 和 ROUTEID 用于后续请求。
http
POST
/Orders
{
"CardCode": "c1", // 客户编码
"DocDate": "2024-07-24",
"DocDueDate":
"2024-07-31",
"DocumentLines": [
{ "ItemCode": "i1",
"Quantity": 10, "UnitPrice": 100, "TaxCode":
"T1" },
{ "ItemCode": "i2",
"Quantity": 5, "UnitPrice": 200, "TaxCode":
"T1" }
]
}
成功后返回订单编号(DocEntry)和完整订单信息。
案例 (二):批量操作(创建客户 + 订单)
场景:通过批处理在一个请求中创建客户和关联的销售订单,确保操作原子性。
http
POST
/$batch
Content-Type:
multipart/mixed; boundary=batch_123
--batch_123
Content-Type:
multipart/mixed; boundary=changeset_456
--changeset_456
Content-Type:
application/http
POST
/BusinessPartners
{
"CardCode": "c2", "CardName": "新客户",
"CardType": "cCustomer" }
--changeset_456
Content-Type:
application/http
POST
/Orders
{
"CardCode": "c2", "DocDate":
"2024-07-24", "DocumentLines": [{ "ItemCode":
"i1", "Quantity": 2 }] }
--changeset_456--
--batch_123--
案例(三):JavaScript 扩展实现复杂事务
场景:通过 JavaScript 脚本实现 “创建订单后自动生成交货单” 的联动逻辑。
javascript
var ServiceLayerContext
= require('ServiceLayerContext.js');
function
POST() {
var slContext = new ServiceLayerContext();
slContext.startTransaction(); // 开启事务
// 1. 创建订单
var order = { "CardCode": "c1",
"DocumentLines": [{ "ItemCode": "i1", "Quantity":
1 }] };
var orderRes = slContext.Orders.add(order);
if (!orderRes.isOK()) {
slContext.rollbackTransaction(); // 订单创建失败,回滚
throw new Error("订单创建失败");
}
// 2. 基于订单创建交货单
var delivery = { "CardCode": "c1",
"BaseEntry": orderRes.body.DocEntry, "BaseType": 17 };
var deliveryRes = slContext.DeliveryNotes.add(delivery);
if (!deliveryRes.isOK()) {
slContext.rollbackTransaction(); // 交货单创建失败,回滚
throw new Error("交货单创建失败");
}
slContext.commitTransaction(); // 全部成功,提交事务
}
五、总结
SAP
Business One Service Layer 作为新一代扩展 API,通过标准化的 OData 协议简化了与 SAP Business One 的集成,其核心优势包括:
无论是企业级应用开发、系统集成还是个性化业务扩展,Service Layer 都为 SAP Business One 用户提供了灵活、高效的解决方案,助力企业快速响应业务需求变化。
上海思邦信息技术有限公司(简称EXPAND,或思邦)于2003年创立于上海,专注于提供SAP Business One ERP产品和技术服务,包括:
- SAP Business One ERP产品的标准功能;
- SAP B1的Addons增强功能和定制开发;
- SAP B1与CRM、钉钉、飞书、泛微OA、MES、SRM、WMS等的集成方案。
- 针对以上产品和方案的商务咨询,实施交付,定制开发,运维支持和认证培训等。
思邦致力于成长型企业数字化转型升级的服务!