接 SAP S/4HANA:把销售订单和客户拉进来
填入 S/4HANA 的 OData 基址,再二选一填一整套凭证——Basic 通信用户,或 OAuth2 客户端凭证三件套——然后测试、配 Mapping、激活,即可拉销售订单和客户。
SAP S/4HANA 连接器通过 OData 服务把您 S/4HANA 系统里的销售订单和客户拉进 Integration。登录方式二选一:Basic 通信用户,或 OAuth2 客户端凭证——填一整套即可,不要两套都填。这个连接不同步库存:S/4HANA 里的库存不会经它拉进来,也不会推回去。
前置条件#
- 一套您有权做集成的 SAP S/4HANA 系统——云版或本地部署版都可以。
- 能找到 SAP Basis 或 SAP 管理员团队配合:OData 基址要向他们拿,通信用户或 OAuth2 客户端配置也要由他们准备。
- 您 S/4HANA 系统里已激活销售订单 OData 服务(API_SALES_ORDER_SRV)。还没激活的话,请 SAP 管理员用 /IWFND/MAINT_SERVICE 激活。
- 先定好用哪种登录方式:Basic(用户名 + 密码)或 OAuth2(Client ID + Client Secret + Token URL)。只需要一整套。
拿凭证#
- Base URL(基址):向 SAP Basis 团队索取您 S/4HANA 系统的 OData 基址;如果您用 BTP destination,也可以从那里取。形态如 https://s4hana.example.com:44300。没有通用默认值——云版和本地版地址不同,不要照抄别的系统的地址。
- Basic 套(方案 A):请 SAP 管理员在 S/4HANA 里创建或确认一个通信用户(communication user),记下它的用户名和密码。通信用户是 S/4HANA 专门留给系统间登录的账号——不要用个人日常登录账号。
- OAuth2 套(方案 B)——云版:从 SAP BTP 里集成实例的 service key 中取 Client ID、Client Secret 和 Token URL。
- OAuth2 套(方案 B)——本地版:Client ID 和 Client Secret 从您的 OAuth 客户端配置里取,Token URL 也从同一份配置里取。Token URL 没有可猜的标准值——务必从您自己的系统或 service key 里复制。
- SAP client:如果您的系统使用 SAP client 编号(如 100),一并记下来。它会作为 sap-client 参数随每次请求发出。Basis 团队说不需要的话,可以不填。
填进 Integration#
- 打开 Integration → 连接器市场 → SAP S/4HANA → 新建连接。
- base_url(必填):您 S/4HANA 系统的 OData 基址,如 https://s4hana.example.com:44300。这是唯一任何情况下都必填的字段。
- sap_client(可选):SAP client 编号,如 100。系统不用的话留空。
- username(Basic 套):S/4HANA 通信用户的用户名。选了 Basic 套才填——且必须和 password 成套填。
- password(Basic 套):该通信用户的密码。加密存储,永不回显。
- client_id(OAuth2 套):OAuth2 Client ID——云版从 BTP service key 取,本地版从 OAuth 客户端配置取,通常以 sb- 开头。选了 OAuth2 套才填,且必须和 client_secret、token_url 成套填。
- client_secret(OAuth2 套):与该 Client ID 配套的 OAuth2 Client Secret。加密存储,永不回显。
- token_url(OAuth2 套):OAuth2 Token URL,形态如 https://…/oauth/token。从 BTP service key(云版)或 OAuth 客户端配置(本地版)里复制——不要凭记忆手打。
测试连接#
测试先检查 base_url 是否已填、凭证是否恰好成套一整套;不成套会立即失败,报错会列出两种可用组合(username + password,或 client_id + client_secret + token_url)。用 OAuth2 套时,测试先拿凭证去 token_url 换访问令牌;用 Basic 套时直接登录。然后它读取销售订单 OData 服务的描述——GET {base_url}/sap/opu/odata/sap/API_SALES_ORDER_SRV/$metadata,填了 sap_client 时会带上 sap-client 参数。在 12 秒时限内返回成功,说明地址、登录、服务三层都通。每种失败都有自己的错误码和下一步——见常见问题。
配 Mapping / 选模板#
选 SAP S/4HANA 销售订单标准模板。激活前,用一单真实销售订单做预览,核对订单号、客户、订单行都落到正确的标准字段上。从 S/4HANA 拉来的客户记录会保留您 SAP 系统里的客户标识,订单能对上所属客户。如果您依赖的字段落错了位置,调整 Mapping 后重新预览——不要带着没核对过的 Mapping 激活。
激活#
激活后,Integration 按您设的频率从 S/4HANA 拉新增和变更的销售订单与客户。这个连接不会往 S/4HANA 回写任何东西,库存两个方向都不同步——库存继续按您现在的方式管理。先在 运行监控 / 日志里盯头几单,逐单核对与 S/4HANA 里的销售订单一致,再放手跑。
常见问题#
测试报 404——SERVICE_NOT_ACTIVATED
这里的 404 不代表地址写错了。它表示销售订单 OData 服务(API_SALES_ORDER_SRV)在您的 S/4HANA 系统里还没有激活,那个服务地址上没人应答。
请 SAP 管理员在 S/4HANA 里用 /IWFND/MAINT_SERVICE 激活 API_SALES_ORDER_SRV 服务,然后重新测试。这个错误不要去改 base_url。
测试报 401——INVALID_CREDENTIALS
S/4HANA 拒绝了登录:通信用户的用户名或密码不对,或 OAuth2 的 Client ID / Client Secret 对不上,或 token_url 换令牌时没有接受这套凭证。
把所选那套凭证从来源处重新复制一遍(S/4HANA 里的通信用户,或 BTP service key / OAuth 客户端配置),注意首尾不要多复制空格,然后重新测试。
测试报 403——MISSING_SCOPE
登录是通的,但这个账号没被允许用销售订单服务:通信用户缺这个服务的权限,或 S/4HANA 里这次集成用的通信场景(communication scenario)还没配好。
请 SAP 管理员检查通信用户对销售订单服务的权限、以及通信场景的配置,然后重新测试。改密码解决不了 403。
测试说凭证不完整
凭证只填了半套——比如只有 username 没有 password,或只有 client_id 和 client_secret 没有 token_url。测试需要一整套,会在尝试登录之前就停下来。
定下一套,把这套的每个字段都填齐:Basic 是 username + password,OAuth2 是 client_id + client_secret + token_url。另一套的字段清空,不要留下半填的内容。
这个连接能和 S/4HANA 同步库存吗?
不能。这个连接只拉销售订单和客户:S/4HANA 的库存不会拉进来,库存变化也不会推回去。库存继续在您现在用的系统里管理,不要指望靠这个连接来对齐 OMS 里的库存数。
经这个连接流动的只有两类记录——销售订单和客户。产品记录也不走这个连接,产品目录和库存数字请按您今天的方式继续维护。