☰
SAP CRM事务启动器与SSF配置实战:从SM59到CRMS_IC_CROSS_SYS排错指南
2026/10/16 1:19:19 网站建设 项目流程

简介:这份PPT资料聚焦SAP CRM SSF财务共享配置与外部系统连接,面向从事SAP CRM实施、财务共享集成及Web UI开发的顾问与技术人员,帮助解决事务启动器创建、ITS服务配置及跨系统调用ERP T-code等实际问题。资源包共1个文件,为pptx演示文稿,大小约692KB,内容以图文步骤形式呈现,便于对照操作。资料围绕事务启动器(Transaction Launcher)展开,涵盖其通过ITS实现GUI到HTML转换的原理,并梳理创建前提,包括SM59定义RFC连接、BD54定义逻辑系统、BD97分配RFC连接至逻辑系统、CRMS_IC_CROSS_SYS配置ITS服务URL等关键配置点。同时涉及进入ERP系统创建BOR对象(SWO1)、SSF创建事务启动器与逻辑链接、定义通用出站插件映射,以及通过代码调用ERP T-code页面等完整流程。目前已有296人学习,适合需要掌握SAP CRM与外部系统集成配置的读者参考,可快速理解事务启动器从前提配置到实际调用的整体链路,为财务共享场景下的系统连接提供可落地的配置思路。

1. 从一次财务共享排障说起:SAP CRM SSF 与事务启动器到底解决什么问题

某公司财务共享中心上线后,业务同事在 CRM Web UI 里点一个按钮,期望直接跳到 ERP 里已经跑熟的某个财务过账事务码,结果页面弹出一行“无法启动事务”的报错。后台查了半天,发现不是权限问题,也不是 ERP 那边的事务码被锁,而是 CRM 侧的事务启动器(Transaction Launcher)压根没把逻辑系统、ITS 服务 URL 和 BOR 对象串起来。这个场景在 SAP CRM 与 ERP 并存的财务共享架构里非常典型:CRM 负责前端交互和共享服务受理,ERP 负责实际财务过账,两边靠 SSF(Shared Service Framework)和事务启动器做桥接。事务启动器的作用,是把 SAP GUI 里的事务代码通过 ITS 转成 HTML,嵌进 Web UI 里直接调用;而 SSF 负责逻辑链接和通用出站插件映射,让跨系统的调用有据可依。这套配置适合正在做财务共享、CRM 与 ERP 集成、或者需要把 GUI 事务搬到 Web 端的一线顾问和开发。下面按实际配置顺序,把前提、创建、映射和排错一次讲透。

2. 事务启动器与 SSF 的底层逻辑:ITS、RFC 和逻辑系统怎么串

2.1 事务启动器不是“跳转链接”,而是 ITS 驱动的 GUI 转 HTML

很多人第一次接触事务启动器,会把它理解成一个超链接:点一下,浏览器就跳到 ERP 的某个页面。实际不是。事务启动器的本质,是 CRM Web UI 通过 ITS(Internet Transaction Server)向 ERP 发起一次 RFC 调用,ITS 把 ERP 的 GUI 屏幕转成 HTML 片段,再回传给 Web UI 渲染。也就是说,你看到的“ERP 事务码页面”,其实是 ITS 实时转换出来的 HTML,而不是 ERP 原生界面。

这个链路里,ITS 承担了 HTTP 协议与 SAP 协议之间的转换。它需要知道两件事:第一,ERP 系统的 RFC 连接是否可达;第二,这个 RFC 连接对应哪个逻辑系统,以及该逻辑系统的 ITS 服务 URL 是什么。少了任何一环,事务启动器都会在运行时直接报错,而且报错信息往往很含糊,只告诉你“无法启动”,不会告诉你具体断在哪。

常见做法是,先在 SM59 里建一条指向 ERP 的 RFC 连接,类型选 3(ABAP 连接),填好目标主机、系统编号和客户端。然后到 BD54 里定义一个逻辑系统名,这个名字要和 ERP 端一致。接着用 BD97 把 RFC 连接分配给这个逻辑系统。最后在 CRMS_IC_CROSS_SYS 里,为这个逻辑系统配置 ITS 服务 URL。这四步是事务启动器的地基,缺一步后面全白搭。

提示:BD54 里的逻辑系统名一旦被业务数据引用,后期修改成本极高,建议在开发机就按命名规范定死,比如CRMSSF_ERP_CLNT100这种带系统标识的写法。

2.2 SSF 的逻辑链接与通用出站插件映射:跨系统调用的“路由表”

SSF 在财务共享场景里,主要解决的是“CRM 的哪个业务对象,对应 ERP 的哪个逻辑动作”。它不直接管界面,管的是调用关系。逻辑链接(Logical Link)定义的是两个系统之间的通信通道,通用出站插件映射(Generic Outbound Plug Mapping)则决定当 CRM 某个事件触发时,该走哪个出站插件、调哪个 ERP 事务码。

举个例子:财务共享中心收到一张报销单,CRM 里创建了一个服务请求,当状态变成“待过账”时,需要自动调用 ERP 的 FB01 或类似过账事务。这个“状态变→调 ERP”的规则,就配在通用出站插件映射里。映射里会指定 BOR 对象类型、事件、出站插件名称,以及目标事务码。BOR 对象(Business Object Repository)是 SAP 里对业务对象的抽象描述,事务启动器创建时需要用 SWO1 在 ERP 侧确认这个对象存在且方法可用。

这里有个容易翻车的地方:BOR 对象的方法参数必须和事务启动器里定义的输入参数严格对齐。比如 FB01 需要公司代码、凭证日期、过账码等,如果 CRM 侧传过去的参数少一个,ERP 侧就会直接抛异常,但异常信息可能被 ITS 吞掉,前端只显示一个空白页。血泪经验是,先在 ERP 侧用 SWO1 单独测试 BOR 方法,确认参数和返回值都正常,再去 CRM 配事务启动器。

2.3 为什么必须先建 RFC 再建逻辑系统,顺序反了会怎样

配置顺序不是随便定的。SM59 的 RFC 连接是物理层,BD54 的逻辑系统是逻辑层,BD97 是把物理层和逻辑层绑定,CRMS_IC_CROSS_SYS 是告诉 CRM 怎么通过逻辑层找到 ITS 服务。如果你先建逻辑系统再建 RFC,BD97 里就找不到可分配的连接,只能挂空。挂空之后,事务启动器在运行时不会立刻报错,而是在用户点击时才去解析,这时候报错已经很难定位了。

我一般会按这个顺序走:SM59 → BD54 → BD97 → CRMS_IC_CROSS_SYS。每做完一步,用 SM59 的“连接测试”和“授权测试”各跑一遍,确保 RFC 可达。BD97 分配完之后,用事务码 BD97 本身查一下分配结果,确认逻辑系统后面跟的 RFC 连接名是对的。CRMS_IC_CROSS_SYS 配完,用浏览器直接访问 ITS 服务 URL,看能不能返回一个登录页或错误页,至少证明 URL 是通的。

注意:CRMS_IC_CROSS_SYS 里的 ITS 服务 URL 必须带协议和端口,比如http://erp-host:8000/sap/its/,末尾斜杠不能少。少了斜杠,ITS 可能返回 404,但 CRM 前端只会显示“无法启动事务”。

3. 从 SM59 到 CRMS_IC_CROSS_SYS:外部系统连接的四步配置

3.1 SM59 建 RFC 连接:参数怎么填、测试怎么做

SM59 是 SAP 里定义 RFC 连接的标准事务码。在 CRM 系统里执行 SM59,点“创建”,连接类型选“3”(ABAP 连接),填一个技术名称,比如ERP_CLNT100_SSF。然后切到“技术设置”页签,填目标主机、系统编号、客户端。目标主机写 ERP 的应用服务器主机名或 IP,系统编号写 ERP 的实例编号,客户端写 ERP 的客户端号。

# SM59 技术设置关键字段示例 目标主机:erp-app-01 系统编号:00 客户端:100 登录语言:ZH

填完之后,切到“登录与安全”页签,填 ERP 的通信用户和密码。这个用户不需要 SAP_ALL 权限,但至少要有 RFC 调用权限和 BOR 对象执行权限。常见做法是建一个专用的通信用户,类型选“系统”,权限只给必要的 RFC 和 BOR 对象。

测试分两步:先点“连接测试”,看能不能 ping 通 ERP 的网关;再点“授权测试”,看通信用户能不能登录。两步都绿了,再往下走。如果连接测试就报错,先查网络和 ERP 网关是否可达;如果授权测试报错,查用户密码和用户类型。

3.2 BD54 与 BD97:逻辑系统定义和 RFC 分配

BD54 里创建逻辑系统,命名建议带系统标识和客户端,比如ERP_CLNT100。逻辑系统名在 SAP 里是全局唯一的,一旦被业务数据引用就不能改。创建时填一个描述,比如“ERP 财务共享生产系统”。

BD97 里把刚才建的 RFC 连接分配给这个逻辑系统。执行 BD97,输入逻辑系统名,在“RFC 连接”字段填 SM59 里建的技术名称。保存后,用 BD97 的查询功能确认分配关系。这里有个细节:BD97 分配的是“出站”RFC 连接,也就是 CRM 调 ERP 的方向。如果后续需要 ERP 回调 CRM,还得在 ERP 侧做反向配置,但财务共享场景里通常只需要 CRM 调 ERP。

# BD97 分配示例 逻辑系统:ERP_CLNT100 RFC 连接:ERP_CLNT100_SSF 方向:出站

分配完成后,建议用事务码 SM58 看一下 RFC 队列有没有积压。如果之前有失败的调用,SM58 里会留记录,能帮你判断是网络问题还是权限问题。

3.3 CRMS_IC_CROSS_SYS 配 ITS 服务 URL:格式与常见错误

CRMS_IC_CROSS_SYS 是 CRM 里专门配跨系统 ITS 服务的事务码。进去之后,输入逻辑系统名,在“ITS 服务 URL”字段填 ERP 的 ITS 地址。格式通常是http://<erp-host>:<port>/sap/its/。端口号取决于 ERP 的 ICM 配置,常见的是 8000 或 8001。

# CRMS_IC_CROSS_SYS 配置示例 逻辑系统:ERP_CLNT100 ITS 服务 URL:http://erp-app-01:8000/sap/its/

配完之后,别急着去 Web UI 点按钮。先在浏览器里直接访问这个 URL,看返回什么。如果返回一个 ITS 登录页或“服务不可用”的页面,说明 URL 至少是通的;如果返回 404 或连接超时,说明 URL 或端口不对。这一步能省掉后面很多来回排查的时间。

常见错误是 URL 里用了 HTTPS 但 ERP 的 ICM 没配 SSL,或者端口写成了 ERP 的 SAP GUI 端口(通常是 3200)而不是 ICM 端口。ITS 走的是 HTTP/HTTPS,不是 SAP GUI 协议,端口别搞混。

3.4 用 SM59 和 SM58 做连通性验证:别等用户报错才查

配置做完之后,我习惯用两个事务码做最终验证。第一个是 SM59,重新跑一遍连接测试和授权测试,确认 RFC 连接没被后续配置改坏。第二个是 SM58,看有没有因为配置错误产生的 RFC 调用记录。如果 SM58 里有大量失败记录,点进去看错误详情,通常能直接定位到是逻辑系统没分配、ITS URL 不对还是 BOR 对象不存在。

# SM58 查看 RFC 调用记录 事务码:SM58 筛选条件:连接名 = ERP_CLNT100_SSF 状态:错误

如果 SM58 里没有记录,说明事务启动器还没真正发起过调用,这时候去 Web UI 点一次按钮,再回来看 SM58。这个顺序能帮你把“配置错误”和“运行时错误”分开。

4. 创建事务启动器与 SSF 逻辑链接:SWO1、BOR 对象和出站插件

4.1 在 ERP 侧用 SWO1 确认 BOR 对象和方法

事务启动器要调 ERP 的事务码,前提是 ERP 侧有一个可用的 BOR 对象和方法。BOR 对象是 SAP 业务对象的抽象,比如BUS2032是销售订单,BUS2081是发票。财务过账场景里,常用的可能是BUS2081或自定义的 BOR 对象。

在 ERP 系统里执行 SWO1,输入对象类型,点“显示”。然后看“方法”页签,确认你要调的方法存在,比如POST或CREATE。再点“测试”,输入必要参数,看能不能跑通。这一步很关键:如果 BOR 方法本身在 ERP 侧就跑不通,CRM 侧配得再对也没用。

# SWO1 测试 BOR 方法示例 对象类型:BUS2081 方法:POST 参数:公司代码=1000,凭证日期=2025-01-15,金额=1000

测试通过后,记下方法的输入参数和输出参数。这些参数后面要在事务启动器里一一映射。参数名和类型必须完全一致,大小写敏感。

4.2 SSF 创建逻辑链接:把 CRM 和 ERP 的调用关系定下来

SSF 的逻辑链接在 CRM 侧创建,事务码通常是CRMS_IC_SSF或通过 SPRO 路径进入。逻辑链接的核心字段是“源系统”和“目标系统”。源系统填 CRM 的逻辑系统,目标系统填 ERP 的逻辑系统。然后指定通信类型,一般选 RFC。

创建完逻辑链接后,还要配“通用出站插件映射”。这个映射决定当 CRM 的某个 BOR 对象事件触发时,走哪个出站插件。出站插件是一个 ABAP 类或函数模块,负责把 CRM 的数据转成 ERP BOR 方法能接受的参数格式。

# SSF 逻辑链接关键字段 源系统:CRM_CLNT100 目标系统:ERP_CLNT100 通信类型:RFC 出站插件:CL_CRM_SSF_OUTBOUND

出站插件里通常会写一些参数转换逻辑,比如把 CRM 的日期格式转成 ERP 的日期格式,或者把 CRM 的金额单位转成 ERP 的货币单位。这部分代码需要开发介入,配置顾问至少要能看懂参数映射关系。

4.3 创建事务启动器:从 BOR 对象到 ERP T-code 的完整映射

事务启动器的创建入口在 CRM Web UI 的配置里,事务码通常是CRMS_IC_LAUNCHER或通过 SPRO 进入。创建时填几个关键字段:启动器名称、逻辑系统、BOR 对象类型、方法名、目标事务码。

# 事务启动器关键字段示例 启动器名称:ZSSF_FB01_LAUNCHER 逻辑系统:ERP_CLNT100 BOR 对象:BUS2081 方法:POST 目标事务码:FB01

填完之后,系统会要求你定义输入参数映射。这里要把 CRM Web UI 里的字段和 BOR 方法的输入参数对应起来。比如 Web UI 里的“报销金额”字段映射到 BOR 方法的AMOUNT参数,“公司代码”映射到COMP_CODE。映射关系配错,运行时就会报参数缺失或类型不匹配。

提示:事务启动器创建后,建议先在测试客户端用CRMS_IC_LAUNCHER的“测试”功能跑一遍,确认参数传递和页面渲染都正常,再去生产客户端配。

4.4 通过代码调用 ERP T-code:出站插件的参数传递与异常处理

有些场景下,事务启动器不是由用户点击触发,而是由后台程序自动调用。这时候需要在 ABAP 代码里直接调出站插件。常见做法是用CL_CRM_SSF_OUTBOUND类的EXECUTE方法,传入 BOR 对象、方法和参数表。

DATA: lo_outbound TYPE REF TO cl_crm_ssf_outbound. DATA: lt_params TYPE crmt_ssf_param_tab. " 填充参数 APPEND VALUE #( name = 'COMP_CODE' value = '1000' ) TO lt_params. APPEND VALUE #( name = 'AMOUNT' value = '1000' ) TO lt_params. " 调用出站插件 TRY. lo_outbound = cl_crm_ssf_outbound=>create( iv_logsys = 'ERP_CLNT100' ). lo_outbound->execute( iv_bor_obj = 'BUS2081' iv_method = 'POST' it_params = lt_params ). CATCH cx_crm_ssf_error INTO DATA(lx_error). " 异常处理:记录日志,回写 CRM 状态 MESSAGE lx_error->get_text( ) TYPE 'E'. ENDTRY.

这段代码的逻辑是:先创建出站插件实例,指定目标逻辑系统;然后调用EXECUTE方法,传入 BOR 对象、方法和参数表;最后用TRY...CATCH捕获异常。参数表里的name必须和 BOR 方法的参数名完全一致,value是字符串格式,ERP 侧会自动做类型转换。

异常处理里,常见做法是把错误信息写回 CRM 的服务请求状态,让业务同事能看到具体原因。如果只是弹一个“调用失败”,业务同事没法判断是数据问题还是系统问题,最后还是得找顾问查。

5. 避坑与排查:事务启动器配置里最容易翻车的五个点

5.1 现象:Web UI 点按钮后页面空白,无报错

原因:ITS 服务 URL 配错,或者 ITS 服务本身没启动。CRM 前端拿到一个空响应,渲染出来就是空白页。

解决:先在浏览器直接访问 CRMS_IC_CROSS_SYS 里配的 ITS URL,确认返回的不是 404 或超时。如果 URL 不通,检查 ERP 的 ICM 是否启动,端口是否被防火墙拦截。如果 URL 通但页面空白,检查 ITS 服务是否在 ERP 的 SICF 里激活。

5.2 现象:报“无法启动事务”,SM58 里有 RFC 调用失败记录

原因:BD97 里逻辑系统没有分配 RFC 连接,或者分配的连接名和 SM59 里的不一致。

解决:执行 BD97,输入逻辑系统名,确认 RFC 连接字段有值且和 SM59 里的技术名称完全一致。然后跑 SM59 的连接测试和授权测试,确保 RFC 连接本身是通的。

5.3 现象:ERP 侧 BOR 方法测试通过,但 CRM 调用时报参数错误

原因:事务启动器里的参数映射和 BOR 方法的参数名或类型不匹配。常见的是日期格式、金额单位、公司代码长度不一致。

解决:在 ERP 侧用 SWO1 重新查看 BOR 方法的参数列表,逐个核对参数名、类型和长度。然后在事务启动器的参数映射里逐项修正。如果参数是日期,确认 CRM 传的是YYYYMMDD格式;如果是金额,确认小数位数和货币字段都传了。

5.4 现象:事务启动器在开发机正常,传到生产后报“逻辑系统不存在”

原因:生产环境的 BD54 里没有创建对应的逻辑系统,或者逻辑系统名和开发机不一致。传输请求里通常不包含 BD54 的条目,需要手动在生产环境创建。

解决:在生产环境用 BD54 创建同名逻辑系统,然后用 BD97 分配生产环境的 RFC 连接。CRMS_IC_CROSS_SYS 里的 ITS URL 也要改成生产 ERP 的地址。这些配置项建议整理成清单,每次上线前逐项核对。

5.5 现象:调用成功但 ERP 侧没有生成凭证

原因:BOR 方法执行了但没提交,或者 ERP 侧的事务码在 ITS 模式下不执行 COMMIT WORK。

解决:检查出站插件里是否在调用成功后显式执行了COMMIT WORK。有些 BOR 方法默认不提交,需要调用方自己控制事务边界。另外确认 ERP 侧的用户权限是否允许过账,有时候 RFC 用户有执行权限但没有过账权限,方法会返回成功但实际没写数据库。

6. 进阶:用 SM58 和 ST22 做调用链回溯,以及一个参数映射的偷懒技巧

事务启动器配好之后,真正的挑战往往在运行时排错。SM58 能看 RFC 调用记录,但只能看到“调用失败”这个层面。要往下挖,得结合 ST22(ABAP 运行时错误)和 ERP 侧的 SM58。我一般会按这个顺序查:先在 CRM 侧 SM58 找到失败的调用记录,记下调用时间;然后到 ERP 侧 SM58 查同一时间段的入站记录;如果 ERP 侧有记录但报错,去 ST22 看具体堆栈;如果 ERP 侧连记录都没有,说明 RFC 连接在更底层就断了,回 SM59 查。

参数映射有个偷懒技巧:如果 BOR 方法的参数很多,手动一个个映射容易漏。可以在 ERP 侧用 SWO1 把方法的参数列表导出成 Excel,然后在 CRM 侧对照着填。导出方法是在 SWO1 里点“方法”→“参数”→“导出”,选 Excel 格式。这样至少能保证参数名和类型不会抄错。

还有一个习惯:每次改完事务启动器配置,先在测试客户端用CRMS_IC_LAUNCHER的测试功能跑一遍,再用 SM58 确认没有新的失败记录,最后才让业务同事去 Web UI 点。从那以后我每次上线前都强制走一遍 SM59 连接测试、BD97 分配检查和 CRMS_IC_CROSS_SYS URL 验证,这三步能挡掉八成以上的配置问题。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询