BigCommerce · SAP

把 BigCommerce 与 SAP 正确地连起来。

客户专属价格、真实库存、真正的销售单号与发票历史,在 BigCommerce 与 SAP ECC、S/4HANA 或 Business One 之间流转。难点从来不是 API,而是定价;这也正是这类项目普遍拖长的原因。

第一个问题

你实际用的是哪一套 SAP?

在这个问题回答之前,这个项目无法被估算,因为这三者是不同的产品,集成入口也不同。谁不问就报出「一套 BigCommerce 对接 SAP 的集成」的价格,报的就是一个猜测。

01

SAP ECC

它仍是我们对接最多的一套,也是供应商宣传里最常被略过的一套。集成走的是启用了 RFC 的函数模块与 BAPI、用于异步单据流的 IDoc,以及在有人搭起 SAP Gateway 时的 OData。主流维护于 2027 年结束,可付费延长维护至 2030 年;这影响的是你怎么建,而不是要不要建。

02

S/4HANA

情况干净得多。通过 SAP Gateway 提供的 OData 服务是一等公民,API 面有文档、有版本,SAP Integration Suite 是官方认可的对外通路。你是本地部署、私有云还是公有云,决定了你被允许扩展到什么程度,其中公有云限制最严。

03

Business One

完全是另一套代码,而不是「小一号的 S/4」。Service Layer 提供 OData 接口,老的 DI API 在现场也仍能见到。它的定价比 ECC 简单,这让基于 Business One 的 B2B 商城明显更快做对。

两边怎么对话

从 SAP 取数的四条路。

BigCommerce 是容易的那一端。它提供有文档的 REST 与 GraphQL API、Webhook、价格表与客户组,B2B Edition 还增加了企业账户与层级。它表现得像一个现代 SaaS 产品,因为它就是。

决策都在 SAP 这一侧,而实际上只有四条路:

  • BAPI 与 RFC。经典路线;在 ECC 上,它往往是唯一能触达你所需业务逻辑的方式。同步、快速,但需要一条通往你系统环境的 RFC 连接,这意味着要和管 Basis 和防火墙的人谈。
  • IDoc。异步单据。用于订单与发票这类可以容忍几分钟延迟的流程非常合适;用于「这个客户此刻买这件商品是什么价」则完全不对。很多表现不佳的商城之所以不佳,就是因为有人拿 IDoc 去做定价。
  • 通过 SAP Gateway 的 OData。现代入口。在 S/4HANA 上是标配,在 ECC 上只要有人配置也能用。如果可以选,这就是你该待的地方:它是 HTTP、可缓存,而且每个开发者都已经懂它。
  • 中间件。SAP Integration Suite,或 Boomi、Celigo、Jitterbit、MuleSoft 这类第三方 iPaaS。它增加成本和一跳,换来的是重试、数据转换、监控,以及一个安放「两边系统都不该拥有的逻辑」的地方。

对多数 B2B 项目而言,诚实的默认选择是:凡是买家要等的,走 OData 或 BAPI;可以异步的单据流,走 IDoc;前面再放一层中间件,别让慢的 SAP 变成慢的商城。把这件事早点定下来,架构就已经定了大半。

契约

商城要向 SAP 索取的六件事。

把架构图撤掉,每一个 B2B 商城向它的 ERP 问的都是同样六个问题。把这六件事做对,就是这个项目本身;其余都是装饰。

  1. 这是谁。登录账号背后的 SAP 客户编号,并在售达方、送达方与付款方不一致时分别识别;而在 B2B 里,它们经常不一致。
  2. 他付多少。这个客户、这个物料、这个数量、今天的净价。这是最难的一件,下面单独用一节讲。
  3. 他能拿到多少。不只是现有库存,而是可承诺量,并且要按实际供货给该客户的工厂来算。
  4. 下单。并且返回一个真实的 SAP 销售单据号,而不是一个 BigCommerce 订单 id 加上「稍后会同步」的承诺。
  5. 货到哪了。交货与发运状态;承运商有回传时,还要带上运单跟踪。
  6. 他欠多少。发票历史、未清项、信用额度状况。正是这一项把商城变成自助账户门户,也正是买家真正登录进来要看的东西。

第六项被低估得最厉害。多数 B2B 买家进你的站不是来逛的,而是来把买过的东西再订一遍,以及看看自己欠多少。

最难的部分

定价,才是这类项目拖长的原因。

如果本页只值得读一节,就是这一节。

SAP 并不存着一个「某客户 + 某物料」的价格供你直接查。它是在你发问的那一刻算出来的,用的是条件技术:由条件类型组成的定价过程,经由存取顺序去匹配条件记录,再按有效期筛选。一个客户的净价可能取决于他的价格表、合同、物料组、订购数量、阶梯价、促销、附加费、运费与税,并按照贵公司多年来配置出的特定顺序求解。

你没法在商城里把这一套重新实现一遍,也不该去试。我们被叫去救火的每一次,故事都一样:有人把条件记录导进 BigCommerce 的价格表,对大多数客户是对的,而那些例外变成了一股安静的错单流,几周后被财务发现。

正确的做法是去问 SAP。让 SAP 来给购物车定价,无论是通过定价 BAPI、模拟销售订单,还是为此专门建的 OData 服务,然后原样展示它返回的结果。接着,围绕延迟做工程,而不是围绕真相做工程:

  • 大胆缓存,并且按客户缓存。一个价格对那个客户在一段可接受的窗口内是有效的。把它缓存起来,并在真正会改变它的事件上失效。
  • 列表页给参考价,购物车给准确价。目录与搜索可以用缓存价或参考价;购物车、报价与结账必须是 SAP 的实时数字,因为最终开票的就是它。
  • 永远不要展示你兑现不了的价格。如果 SAP 不可达且你没有有效的缓存价,就告诉客户价格暂时不可用,并让他发起询价。ERP 不可用只是麻烦;价格错了是一张红字发票加一通电话。
  • 没有价格就不允许加入购物车。如果 SAP 对该客户与该物料没有价格,就禁用它,而不是放行一张注定会在下游失败的订单。
时机

S/4HANA 在路上时,还要不要基于 ECC 建?

来问我们这个问题的公司里,相当一部分仍在 ECC 上,并且路线图上某处放着一个 S/4HANA 项目。直觉是等。通常这是错的判断,因为商城此刻正在赚钱或亏钱,而 S/4 项目一定会往后推。

正确的判断是:用一种能扛过迁移的方式来建。

  • 在中间放一层集成层。商城只和你的这层说话,这层再去和 SAP 说话。当 SAP 在底下变化时,你重写的是一个适配器,而不是商城。
  • 先用你自己的语言定义那六项契约。而不是用 SAP 的语言。「取某客户某物料的净价」是一个稳定的概念,它背后的那个 BAPI 不是。
  • 别让 SAP 的字段名进入商城。在边界处做映射。这是你今天能做的、让将来切换到 S/4 时最平静的最便宜的一件事。
  • 在 ERP 上线之前就针对 S/4 测试这些契约,而不是上线之后。字段长度、单据类型和错误行为都会变,而商城通常是最后一个被人想起来要测的系统。

这样做,迁移到 S/4HANA 只触及一个适配器和一轮测试。反过来做,它就变成一个你没有编进预算的第二个商城项目。

失效模式

实际会出问题的地方。

根据我们事后被请进去收拾的那些项目,按出现频率大致排序:

  • 价格是被复制的,而不是被问出来的。上文已述。它是 B2B 商城在无声中亏钱的头号原因。
  • 商城的速度等于 SAP 的速度。没有缓存层,于是每个商品页都在等一套原本按批处理和内部用户来选型的 ERP。
  • 订单重复。提交时没有幂等键,于是一次重试或一次双击就生成两张销售单据,而没人发现,直到发货部门发现。
  • 没有人负责失败路径。SAP 进入维护窗口,商城就抛出堆栈信息,或者更糟,显示零价格。
  • 库存是对的,但没用。同步的是总库存,而不是该客户对应工厂的可承诺量,于是网站承诺了它发不出去的货。
  • 毫无可观测性。当客户说价格不对时,没人能回答「他看的那一刻 SAP 返回了什么」,排查只能从零开始。

这些都不算高深。每一条的预防成本都远低于在生产环境里发现的成本;这也正是「先做集成设计、再做商城设计」而不是反过来的理由。

常见问题

关于 BigCommerce 与 SAP 的几个问题。

BigCommerce 能和 SAP 集成吗?

能,而且这是一条走得很熟的路。BigCommerce 提供有文档的 REST 与 GraphQL API、Webhook、价格表与客户组,B2B Edition 还增加了企业账户与层级。触达 SAP 的方式是 BAPI 与 RFC、IDoc,或经由 SAP Gateway 的 OData 服务,通常中间还有一层中间件。并不存在某个官方的 BigCommerce SAP 连接器能覆盖一个真实的 B2B 业务,因为客户专属定价是按公司逐一配置出来的。你真正要建的,是你那套 SAP 配置与商城之间的映射。

怎么把 SAP 接到 BigCommerce?

按这个顺序定四件事。你在哪一套 SAP 上,因为 ECC、S/4HANA 与 Business One 的集成入口不同。每条数据流各用哪个入口,通常是:买家要等的走 OData 或 BAPI,异步单据流走 IDoc。中间要不要放中间件,我们一般建议放,为的是重试、转换与监控。以及你打算怎么缓存,因为每次页面浏览都去调 SAP 的商城,一定比对手慢。定完这些,剩下的就是那六项契约:客户、价格、库存、订单、发运、发票。

能不能直接把 SAP 的价格导入 BigCommerce 价格表?

如果定价模型很简单,有时可以。但对多数使用 SAP 的 B2B 企业来说不行,而且这是这一类项目里代价最高的错误。SAP 是在请求发生的那一刻用条件技术算出净价的,会按配置好的顺序把价格表、合同、阶梯价、促销、附加费与有效期都算进去。导出条件记录能把常见情形算对,却会把例外算错,而例外恰恰是那些会发现问题的客户。让 SAP 来给购物车定价,然后缓存结果。

我们在 SAP ECC 上,并计划上 S/4HANA。要不要等?

通常不要等。ECC 的主流维护到 2027 年,可延长维护至 2030 年,而多数 S/4 项目都会推迟;与此同时,商城此刻正在赚钱或亏钱。做法是:中间放一层集成层,用你自己的语言而不是 SAP 的语言定义那六项契约,并且别让 SAP 的字段名进入商城。这样做,迁移到 S/4HANA 只触及一个适配器和一轮测试,而不会变成第二个商城项目。

该实时同步还是定时同步?

两者都要,按数据流分别决定;而怎么划分,比叫什么名字重要得多。凡是买家要等、并且必须正确的,也就是购物车价格、信用额度状况与订单提交,都应当实时向 SAP 取,并配合缓存保证速度。凡是能容忍几分钟的,也就是目录属性、发票历史与发运状态,可以定时或由事件驱动。按数据流逐条决定,而不是给整套集成选一个模式,正是「感觉是活的商城」与「感觉像一份隔夜导出」之间的区别。

我们需要 iPaaS,还是可以直接对接?

直接对接完全可行,我们也这样做过,尤其是只有一套 ERP、一个商城,并且有一个团队能长期维护这份代码的时候。中间件值回成本的场景是:你需要重试与死信处理但不想自己写;有多个系统需要同一份 SAP 数据;转换逻辑不属于两边任何一个系统;或者你的团队希望开箱即用的监控。这是一个有真实运维成本的真实决定,而不是默认选项;谁在还没弄清你的系统环境之前就推荐某一个,那是在卖东西,不是在给建议。

BigCommerce 与 SAP

正在把 BigCommerce 接入 SAP?

告诉我们你在哪一套 SAP 上,以及你们的定价是怎么配置的。在任何人写方案书之前,我们会先给出一个关于这次集成大致形态、以及风险落在哪里的直接判断。如果你同时也在评估别的 ERP,更完整的全景在我们的 BigCommerce 与 ERP 集成页面。

877.609.9029
开始对话