国产化浪潮下,国内软件实施商的SAP对接困境
用AI共创了一个开源工具,希望能帮到同样在这件事上耗过时间的人
一个很多团队都经历过的处境
接到一个项目,客户用的是SAP,团队里没有一个人做过SAP开发。
去网上搜"Java对接SAP",找到的要么是一篇2016年的博客,要么是一段没有上下文的代码片段。联系了SAP顾问,对方说需要一个业务顾问加一个开发顾问,定制开发周期两周,报价十万。
只能接受。
等到下一个项目,同样是SAP,同样的问题,同样的流程再走一遍。没有积累,没有复用,每次都从零开始。
这种处境不少见,很多国内实施团队都有过类似的经历。
问题出在哪里
近年来国产化替代持续推进,越来越多的国内企业级软件需要与SAP系统对接——ERP替换、MES上线、财务共享中心落地、供应链平台建设……SAP作为存量核心系统,往往是绕不开的集成节点。
但大多数国内实施商面临一个现实困境:
懂业务的不懂SAP技术,懂SAP的资源稀缺且成本高。
更让人头疼的是,SAP其实早就提供了大量标准集成接口——
• OData REST API(V2和V4) • RFC / JCo 远程调用 • IDoc 报文 • BAPI 标准业务函数 • BTP Integration Suite 云集成平台
覆盖采购、销售、库存、财务、主数据、生产等几乎所有核心业务场景,官方文档也是公开的。
问题不是SAP没有接口,而是没有SAP经验的开发者不太容易找到该用哪个、怎么配、常见的坑在哪里。
这种信息不对称,是每次集成项目反复消耗时间和成本的主要原因之一。
做了一个开源工具,分享出来
工具名称:sap-integration-wiki
GitHub 地址:https://github.com/shrek-abaper/sap-integration-wiki
说实话,这个工具本身就是 AI 时代共创方式的一次实践。
内容来源有两部分:一是 SAP 官方文档——API Business Hub、Help Portal、社区沉淀——由 AI 系统性地检索、提炼、结构化;二是十多年 SAP 集成项目中积累的实战经验,包括踩过的坑、跑通的方案、在项目现场总结出来的一些做法。两者通过 AI 共创的方式融合在一起,形成了这个初版。
它不是某一个人独立写出来的作品,而是人的经验判断 + AI 的信息处理能力结合的产物。这种方式本身,也是 AI 时代知识沉淀的一种可能性——不替代专家,而是让专家的经验能够更快、更结构化地传递出去。
它遵循标准 Skill 规范构建,让 AI 助手(Claude、OpenCode、Cherry Studio 等)加载后,能够基于专项的 SAP 知识库来回答集成问题,给出更有针对性的方案。
它能解决什么
对于没有 SAP 背景的开发者,获取可用信息本身就是一道门槛。
去 Google 或百度搜索,能找到的资料良莠不齐——版本混杂、年代各异,花大量时间筛选之后,还是不确定这条信息对自己的 SAP 版本是否适用,示例代码能不能直接跑。
直接问通用 AI,得到的回答通常是准确但宽泛的方向性描述:
"你可以使用 SAP 的 RFC API 来创建采购订单。"
这本身没有错,但对于不熟悉 SAP 生态的开发者来说,后续还需要自己判断:该用哪个具体接口?ECC 和 S/4HANA 的做法一样吗?认证怎么配?哪些字段是必填的?常见的报错怎么排查?——每一个问题都需要额外的搜索和甄别,而没有 SAP 经验,很难判断哪个答案是可信的。
加载这个 Skill 之后,AI 能够基于结构化的 SAP 专项知识给出更聚焦的回答:
"你的 S/4HANA On-Premise 环境,推荐使用 OData V2 接口
API_PURCHASEORDER_PROCESS_SRV,通过 Deep Insert POST 一次性创建 PO 抬头和行项目。注意需要先做 CSRF Token Fetch,以下是完整的 Payload 结构和 CSRF 处理代码……"
版本明确、接口具体、代码可用、常见坑提前说明——节省的不只是时间,是在陌生领域反复试错的那种消耗感。
一个真实的演示
以下是通过 Cherry Studio 验证的实际对话,原始记录未做修改:
开发者:我想通过 Java 读取 SAP 的客户应收账款明细,要怎么实现?
Skill 首先确认关键信息:请问您的 SAP 版本是 ECC 还是 S/4HANA?
开发者:SAP 版本是 ECC
Skill 随即给出完整方案,输出的内容覆盖了从环境搭建到业务实现的每一步,按顺序来就能跑通。
第一步:拿到 JCo 库
这是很多人卡住的第一关。JCo 是 SAP 官方的 Java 连接库,不在 Maven Central 上公开分发,需要用 SAP 账号登录 SAP Support Portal(support.sap.com)下载对应操作系统版本的压缩包,解压后得到 sapjco3.jar 和平台对应的 Native 库(Windows 下是 sapjco3.dll,Linux 下是 libsapjco3.so)。Skill 直接告诉你去哪里下、下什么、放在哪里:
# 将下载的 sapjco3.jar 手动安装到本地 Maven 仓库mvn install:install-file \ -Dfile=sapjco3.jar \ -DgroupId=com.sap.conn.jco \ -DartifactId=sapjco3 \ -Dversion=3.1.5 \ -Dpackaging=jarNative 库需要放到系统 PATH 里,或者启动 JVM 时指定路径:
java -Djava.library.path=/path/to/jco/lib -jar your-app.jar第二步:配置连接
生成一个 .jcoDestination 配置文件,放在类路径下,告诉 JCo 去哪个 SAP 系统、用哪个账号连接:
jco.client.host=sap-server.example.comjco.client.sysnr=00 # SAP 实例编号,两位数字jco.client.client=100 # SAP 集团代码,非端口号jco.client.user=RFCUSERjco.client.passwd=your-passwordjco.client.lang=ENjco.destination.pool_capacity=5jco.destination.peak_limit=20第三步:调用 BAPI,获取数据
技术选型锁定 BAPI_AR_ACC_GETOPENITEMS——SAP 官方的应收账款未清项查询接口,ECC 环境下比较稳定的方式,无需定制开发。Skill 输出的核心调用代码如下:
JCoFunctionbapi= destination.getRepository() .getFunction("BAPI_AR_ACC_GETOPENITEMS");bapi.getImportParameterList().setValue("COMPANYCODE", "1000");bapi.getImportParameterList().setValue("CUSTOMER", String.format("%010d", Integer.parseInt(customerNo))); // 客户号必须10位补零bapi.getImportParameterList().setValue("KEYDATE", "20240101"); // 格式 yyyyMMddbapi.execute(destination);// 遍历 OPEN_ITEMS 表,AUGBL 字段为空的才是未清项JCoTableitems= bapi.getTableParameterList().getTable("OPEN_ITEMS");第四步:SAP 侧配置清单
光有代码还不够,SAP 那边也要做配置。Skill 给出了完整的 SAP 操作步骤,不熟悉 SAP 的话,可以直接把这份清单交给客户的 SAP BASIS 管理员来做:
• 用事务码 SU01创建专用 RFC 用户,类型选"通信用户"• 分配权限对象 F_KNA1_BUK(客户主数据读取)和F_BKPF_BUK(财务凭证读取)• 用事务码 SM59创建 TCP/IP 连接并测试连通性
第五步:扩展为微服务(可选)
如果团队里有非 Java 技术栈的系统也需要读 SAP 数据,Skill 还给出了架构扩展思路:把 JCo 调用封装成一个 REST 微服务,其他系统通过 HTTP 调用,不需要每个系统都直接集成 JCo:
任意客户端 ↓ HTTP RESTJava JCo 微服务 ↓ JCo RFC(端口 33xx)SAP ECC 6.0从一句自然语言描述,到涵盖环境搭建、连接配置、代码实现、SAP 配置、架构扩展的完整落地方案,只经历了两轮对话。每一步都有具体指引,不需要自己去猜"下一步该做什么"。
覆盖了哪些场景
业务场景
| 财务共享(FSSC) | 金蝶↔SAP 集成模式,SAP Central Finance (CFIN) 复制方案 |
财务共享中心(FSSC)场景是这次单独整理的部分。国内不少实施商正在承接"金蝶/用友→SAP"或"本地财务→SAP Central Finance"的项目,这类场景可参考的公开资料比较少,Skill 里整理了完整的 API 目录和主数据映射建议,供参考。
技术方式
$expand/$filter/$batch、Deep Insert、错误解析 | |
| BTP Integration Suite | iFlow、Cloud Connector、API Management、Event Mesh、Communication Arrangement |
SAP 版本覆盖
附带可运行工具
Skill 内置三个脚本,可以直接运行生成开发所需的文件:
# 生成任意 OData 服务的 Postman Collection(含 CSRF 自动处理)node gen-odata-postman.js --service API_PURCHASEORDER_PROCESS_SRV \ --host s4hana.example.com --client 100 --output po.json# 生成 JCo 连接配置文件(含所有参数注释)python gen-jco-config.py --name SAP_PRD --host s4hana.example.com \ --sysnr 00 --client 100 --user RFC_USER --output SAP_PRD.jcoDestination# 生成 IDoc XML 骨架(含关键段和字段说明)python gen-idoc-template.py --msgtype ORDERS --idoctype ORDERS05 \ --sender-partner SAP_PROD --receiver-partner EXT_001 --output skeleton.xml希望能帮到的事
解决单个项目的交付问题,只是这个工具比较直接的用途。
更希望的是,对于一些国内软件服务商来说,SAP 对接能力可以慢慢从"每次都要临时找人"变成"自己团队能做"——不依赖外部 SAP 资源,接口能看懂、代码能写、问题能排查、下次项目能复用。
这种能力一旦在团队里沉淀下来,不只是省了外包费用,也能让自己的产品在涉及 SAP 的项目里更有底气,为客户提供更完整的交付。
这个 Skill 想做的,是把原本需要在项目里慢慢摸索积累的 SAP 集成知识,通过结构化的场景内容和 AI 智能体,变成团队可以直接调用的参考资源——少走一些弯路,多一些确定性。
能不能帮到你,用了才知道,欢迎试试。
如何使用
支持任何遵循 Skill 规范的 AI 平台:
Claude Code
ln -s /path/to/sap-integration-wiki ~/.agents/skills/sap-integration-wikiCherry Studio / OpenCode在智能体配置中指定 SKILL.md 路径,Skill 会自动加载。
LangChain / RAG 方案
from langchain.document_loaders import DirectoryLoader, UnstructuredMarkdownLoaderloader = DirectoryLoader('/path/to/sap-integration-wiki', glob='**/*.md', loader_cls=UnstructuredMarkdownLoader)documents = loader.load()# 接入你的向量库或检索链安装后,直接用中文描述你的集成需求即可,比如:
• "我需要从 Java 程序创建 SAP 采购订单,SAP 是 S/4HANA On-Premise" • "SAP OData 一直返回 403 CSRF token validation failed,怎么解决" • "金蝶和 SAP 之间要做财务共享,有哪些方案" • "ECC 环境怎么查库存,要实时的"
一起完善
这个 Skill 已经 MIT 开源,内容还不完整,欢迎一起来补充:
• 补充场景:HR、WM/EWM、PM、QM 等模块目前还没有覆盖 • 补充代码示例:.NET、Go、Node.js、Ruby 等语言的实现 • 修正错误:API 名称、字段说明、版本信息如有偏差欢迎提 Issue • 翻译:目前有中英文版本,欢迎其他语言
每一个从实际项目里沉淀的场景,对后来遇到同样问题的人都会有帮助。
最后说一句
做这个工具,是想解决一个实际存在的问题——SAP 对接对于没有 SAP 背景的团队来说,信息获取的门槛确实有点高,但这个门槛其实不是必要的。
希望这个工具能让这件事变得容易一点点。
如果它帮到了你,或者你在 SAP 对接上有什么实际踩过的坑,欢迎在评论里说说,或者直接去 GitHub 提 Issue——沉淀下来,也许能帮到下一个遇到同样问题的人。
🔗 GitHub:https://github.com/shrek-abaper/sap-integration-wiki
同系列项目,感兴趣也可以看看:
🔗 sap-abap-cli:https://github.com/shrek-abaper/sap-abap-cli通过 ADT REST API 在命令行或 AI 智能体中直接读写 SAP 系统的 ABAP 代码和元数据,支持 ECC、S/4HANA、BTP。
🔗 sap-trench-skill:https://github.com/shrek-abaper/sap-trench-skill10 年以上 SAP 咨询经验蒸馏而成的 AI Skill,覆盖 ABAP、MM、SD、FICO、PP、WM、PM、QM、集成等核心模块。
夜雨聆风