简介:围绕SAP CRM SSF财务共享与外部系统连接,这套PPTX培训课件面向实施SAP CRM的顾问、财务共享项目组成员以及负责集成的IT运维人员,重点讲解创建事务启动器(Transaction Launcher)的前置配置与集成路径。内容从ITS(Internet Transaction Server)的HTTP与SAP协议转换原理切入,依次说明SM59定义RFC连接、BD54定义逻辑系统、BD97将RFC连接分配至逻辑系统,以及CRMS_IC_CROSS_SYS中配置ITS服务URL的方法;同时结合SWO1创建BOR对象、SSF创建事务启动器及逻辑链接、定义通用出站插件映射等步骤,清晰展示如何通过代码调用ERP事务代码并在Web UI上呈现,适合作为配置前梳理或项目培训参考。资源包共包含1个pptx演示文稿,大小692KB,内容精炼紧凑,便于快速浏览要点;目前已有301人浏览学习,尤其适合需要从零理解SSF集成原理、准备在CRM与ERP系统间落地配置的读者,可帮助其把握配置顺序、规避典型遗漏,缩短联调时间。
1. SAP CRM SSF 事务启动器:一条绕了不少人的跨系统链路
做财务共享项目的开发,十有八九会遇到同一个需求:坐席在 CRM Web UI 上工作,却要时不时拉起 ERP 端的财务事务代码,看凭证、跑报表、做冲销。最原始的做法是让坐席再开一个 SAP GUI 窗口,切系统、敲事务码,麻烦不说,权限和操作记录还是两套。SAP CRM SSF 事务启动器(Transaction Launcher)就是为这个场景准备的:它让 Web UI 通过 ITS(Internet Transaction Server)把 HTTP 请求翻译成 SAP GUI 协议,在 ERP 端启动 T-code,再把屏幕吐回浏览器。听起来不复杂,实际配置时却卡住了不少人——四五个前置事务代码的顺序、RFC 连接和逻辑系统的关系、ITS URL 的写法,任何一个错,最后都是白屏或者一整天查不出原因的报错。这篇笔记把我自己装过的一套配置流程完整记下来,从四件套前置到 SSF 里的创建动作,再到排错和验证,适合正在搭 CRM 与 ERP 双系统连接的顾问和开发。
2. 装之前先想明白:这四件事不补齐,后面全是白费
2.1 事务启动器的原理决定了配置顺序
事务启动器这件事,很多人上来就开 SWO1 建对象,做一半发现 Web UI 根本调不通。我习惯先把它的链路画出来:用户在 Web UI 点击一个按钮或链接,请求带着目标 T-code 发给 CRM 端的 ITS URL;ITS 把 HTTP 转成 SAP GUI 协议,通过 SM59 定义的 RFC 连接到达 ERP;ERP 里对应的事务启动器 BOR 对象被触发,执行 T-code,屏幕输出再原路返回。整条链路里,RFC 连接负责「找得到系统」,逻辑系统负责「说得清身份」,ITS URL 负责「转得了协议」,三者缺一不可。
这也解释了为什么官方文档总把 SM59、BD54、BD97、CRMS_IC_CROSS_SYS 四个事务代码列成前置条件——它们不是可选优化项,而是链路里每一段的「基础设施」。我在项目里见过有人跳过 BD97,想着逻辑系统反正建了、RFC 也能 ping 通,结果事务启动器创建后一直报「无法确定逻辑系统」,查了两天,最后发现就是分配关系没建立。所以先接受一个前提:这四个前置,按顺序做,一次做完,不要跳。
2.2 SM59:RFC 连接是整条链路的第一条腿
进入 SM59,创建指向 ERP 系统的 RFC destination。这里的关键不是填一个名字就完了,而是连接类型、目标主机、实例号和语言都要和 ERP 侧一致。常见做法是选类型 3(即 ABAP 系统连接),目标主机填 ERP 应用服务器的地址,实例号填两位数字(比如 00),保存后点「连接测试」看能不能通。
| 参数 | 推荐值 | 说明 |
|---|---|---|
| RFC destination | ZERP_PROD 之类 | 见名知义,后面逻辑链接和代码里都会引用 |
| Connection Type | 3(ABAP Connection) | 类型 2 是外部程序,这里必须选 3 |
| Target Host | ERP 应用服务器 IP 或主机名 | 不要写负载均衡虚拟 IP 之外的地址 |
| Instance Number | 00 / 01 视安装而定 | 两位数字,不是三位 |
| Language | ZH / EN | 决定拉起 T-code 时界面语言 |
连接测试时如果报错,先把网络层排除:用 ping 测主机,用 telnet 测端口,SAP 的 RFC 通常走 33xx 端口(xx 是实例号)。遇到过一种玄学情况:测试连接偶尔成功偶尔超时,最后发现是防火墙对长连接的 idle 超时设置太短,RFC 空闲一段时间就被掐断。这类问题 SM59 界面上看不出来,要在网络设备侧排查。
2.3 BD54 与 BD97:先建逻辑系统,再把它绑到 RFC 连接上
BD54 里维护逻辑系统(Logical System)。逻辑系统是 SAP 系统在分布式架构里的「身份证」,CRM 和 ERP 各有一个,名字通常类似XXXCLNT001。这里最容易犯的错是图省事直接复制别的系统的逻辑系统名,复制完后续所有配置都在跟这个名字打交道,一旦错了,SM59 里连接再通也没用。
BD54 里建好两个逻辑系统(一个代表 CRM 自身,一个代表 ERP),接下来进 BD97,把「RFC 连接」和「逻辑系统」做分配。注意:BD97 分配时,左侧是逻辑系统,右侧是 RFC destination,两边是一对一的关系。分配完成后,可以重新进 BD54 看一眼,逻辑系统的维护界面里应该能看到对应的 RFC destination 已经被带出来了。这一步做完,跨系统调用时系统才知道「要找逻辑系统 X,就走 RFC destination Y」。
我在多个项目里都用这套两段式做法:先 BD54 建名,再 BD97 绑定。顺序反过来也可以,但 BD97 下拉列表里会找不到刚建好的逻辑系统,要重新刷新界面,容易让人误以为没建成功。
2.4 CRMS_IC_CROSS_SYS:ITS URL 映射,最容易被轻视的一个配置
这个事务代码是专门给 Interaction Center 这类 Web UI 用的跨系统配置。它的作用是把前面定义好的逻辑系统映射到一个 ITS 服务 URL 上。也就是说,Web UI 发起请求时,框架通过这里配置的 URL 把请求送到 ITS 服务。
进入 CRMS_IC_CROSS_SYS,维护逻辑系统到 ITS URL 的对应关系。URL 的格式很讲究,常见写法是http://主机名:端口/irj/servlet/...这类带路径的形式。版本不同,路径前缀会有差异,我一般会把 ERP 那边实际部署的 ITS 服务路径复制过来再拼接,而不是凭记忆手打。这里一旦写错,后面的现象非常迷惑:SM59 连接测试是好的,逻辑系统映射也对,Web UI 点了按钮就是没反应,浏览器 F12 看网络请求会看到 404 或者 500。所以我现在的习惯是,配置完先拿浏览器直接访问这个 URL,能返回 ITS 的欢迎页或错误页才算通过。
还有一种场景:CRM 和 ERP 在同一个系统,逻辑系统只有一个。这种情况下 CRMS_IC_CROSS_SYS 里的映射同样要配,不要因为「同系统」就跳过,事务启动器的请求 url 拼接逻辑不会自动省略这一层。
2.5 把四件套当成一次变更来做
这四个配置分开看都不难,难的是它们之间的依赖关系。我在这类项目里会强制自己按 SM59 → BD54 → BD97 → CRMS_IC_CROSS_SYS 的顺序,每完成一步就截图记录,最后把四个事务代码的结果放在同一张检查表里核对。因为事务启动器的问题到最后往往不是单一环节坏了,而是几个环节各自向着不同的错误方向偏——RFC 能通但逻辑系统没分配、逻辑系统分配了但 ITS URL 路径少了一截。四件套做完后,顺手在 SM59 里对每个 destination 执行一次连接测试,再打开 CRMS_IC_CROSS_SYS 核对 URL 是否可直接访问,能省掉后面一整天的排错时间。
提示:如果有传输请求机制,这四个配置最好放同一个传输请求里发到 QA/生产,后续查变更记录时一眼就能看到这四样是同一批做的,不用来回猜版本差异。
3. SSF 里创建事务启动器:从 BOR 对象到 T-code 页面
3.1 SWO1 建 BOR 对象:让 ERP 事务代码在对象世界里有个身份
前置四件套完成后,进入 SWO1 创建 BOR 对象。很多第一次接触的人会问:我不就启动一个 T-code 吗,为什么要先建对象?原因在于 Web UI 侧不是直接喊「运行 ZF002」,而是通过调用一个业务对象的方法,把 T-code 作为参数传过去。BOR 对象就是这个调用的载体。
在 ERP 系统里运行 SWO1,创建对象类型,名字用 Z 开头,比如ZTRXLAUNCHER。对象创建后,给它加一个方法,方法名可以叫EXECUTE或START,方法的参数里头至少有一个是事务代码字段,类型是字符串。保存并激活。激活这一步很容易漏——对象建好但没激活,后续在 SSF 里做映射时下拉列表根本选不到它。我自己就犯过这个错,在 SSF 里翻了好几分钟找不到刚建的对象,最后回到 SWO1 一看,对象状态还是「已保存未激活」。
激活之后,可以在 SWO1 里双击对象类型检查方法是否带上了有效版本。如果版本号是空的,说明没有真正激活成功,要重新点一次激活按钮,留意左下角状态栏提示。
3.2 SSF 创建事务启动器与逻辑链接:把对象和系统串起来
对象建好后,进入 SSF(SAP 财务共享配置框架)创建事务启动器。这里的界面在不同版本里略有差异,但核心动作一致:新建一个事务启动器条目,名称随意但建议和 BOR 对象名对应,然后在条目里指定要调用哪个 BOR 对象、哪个方法。
接下来创建逻辑链接(Logical Link)。这一步是把「事务启动器」和「前面配好的逻辑系统/ITS URL」绑定。逻辑链接里一般要选择目标系统(选 BD54 里建好的 ERP 逻辑系统),并且引用 CRMS_IC_CROSS_SYS 里配好的 ITS 服务 URL。如果前面四件套里有任何一样没做,逻辑链接这里就会直接暴露问题——最常见的是下拉列表里没有可选系统,或者选择了系统但 URL 字段为空。
创建逻辑链接时,我建议把「默认逻辑系统」这个概念搞清楚:如果你配了多条链接(比如开发、测试、生产三个 ERP 系统),要在事务启动器里指出默认走哪一条。否则 Web UI 发起请求时框架不知道选哪条链接,会报「无法确定目标系统」之类的错误。
3.3 通用出站插件映射:把接口调用落到 ERP T-code
事务启动器创建完,还差最后一步:在 Web UI 界面层放一个入口,让坐席能点。这里靠的是「通用出站插件映射」(Generic Outbound Plug Mapping)。
通俗解释:出站插件是 Web UI 视图里的一个按钮或链接容器,你把事务代码塞进这个容器,坐席点击时插件就会走前面配好的逻辑链接,把请求发到 ERP。映射动作一般是在 SSF 里维护插件名称与 BOR 对象方法的对应,代码层看起来大致是下面这样(示意):
CALL FUNCTION 'ZCRM_ERP_TCODE_LAUNCH' DESTINATION 'ZERP_PROD' EXPORTING iv_tcode = 'FB03' IMPORTING ev_message = lv_msg.不要把这串代码直接抄进项目——函数名是我用来示意调用链路的,实际实现里你用的可能是 BOR 方法调用CALL METHOD,也可能走CRM_IC_*系列函数。关键是理解两点:DESTINATION 要和 SM59 里的 RFC 名一致,iv_tcode 就是要启动的 ERP 事务代码。出站插件映射的意义,正是把 Web UI 上那个按钮的点击事件,转换成这么一次带 DESTINATION 的远程调用。
做完映射后,还需要把插件挂到实际的工作中心/导航栏上,这一步通常需要在 Web UI 的配置模式里操作(比如 IC 工作中心)。挂在哪个视图、按钮显示什么文本,由业务决定,但技术侧要确认插件绑定的映射条目是激活状态。见过有人映射配了但插件挂载时选错了映射版本,结果点击按钮走的是开发系统的逻辑链接,在测试环境里怎么点都连到开发库去,代码和数据全是错的。
3.4 页面拉起前的三个参数检查
在把页面交给测试之前,我通常会按下面三个维度再过一遍:
第一,T-code 的完整性。事务启动器里配置的 T-code 字符串不能带首尾空格,不能有回车换行,否则 ITS 转发时会解析异常。建议在配置时统一写成大写,ERP 端事务代码大小写不敏感,但 ITS 路径拼接可能会把小写当作不同值。
第二,逻辑系统的分配状态。回到 BD54 检查 ERP 逻辑系统是否已经分配给 SM59 的 RFC destination。这个检查和第三章前面说的 BD97 是一回事,但创建完事务启动器后再查一次很有必要——有些系统的后台 job 会刷新配置缓冲,旧数据没清干净时,分配的连接可能没生效。
第三,ITS 服务的实际可用性。在浏览器地址栏直接输入 CRMS_IC_CROSS_SYS 里配的 URL,如果 ITS 服务不可用,页面会返回连接被拒。ITS 服务本身可能需要单独启动,不是 SAP 应用服务器起来了它就一定在。这个检查放在最后,因为前面任何一个环节失败都会导致这一步看起来「不可用」,但有时候 ITS 确实是无辜的,只是请求根本没到它这里。
4. 常见问题排查:事务启动器装完跑不起来的现场
4.1 SM59 测试连接成功,Web UI 却白屏
现象:RFC destination 测试连接能通,事务启动器所有配置看着都对,但 Web UI 点击插件后页面卡住或白屏,浏览器控制台看不到明确的报错。
原因:这条链路上的「能通」和「能用」是两回事。最常见的原因是 CRMS_IC_CROSS_SYS 里的 URL 路径拼错,比如少了中间一段/irj/servlet,或者主机名写了内网 IP,但 Web UI 服务器和浏览器之间访问不到这个 IP。另一种可能是 ITS 服务没有绑定到正确的虚拟主机上,URL 能通到服务器但匹配不到服务。
解决:先用浏览器直接访问 CRMS_IC_CROSS_SYS 里配的完整 URL,确认能返回 ITS 的响应页面;再检查 URL 的写法与 ERP 侧 ITS 服务实际部署路径是否一致。路径不同版本有差异,最稳妥的办法是登录 ITS 服务所在主机,查看服务的实际 URL 前缀,而不是凭记忆填。如果 URL 没问题,再看 Web UI 服务器到 ITS 主机的网络策略,确认端口没被防火墙挡。
4.2 RFC 连接报「目标系统不可达」,但之前明明测通过
现象:事务启动器创建时一切正常,跑了几天后突然报目标系统不可达,SM59 测试连接也失败。
原因:这类间歇性问题多半不在 SAP 配置本身,而在网络或主机资源层面。遇到过的情况有:ERP 应用服务器磁盘满导致网关进程无法响应、防火墙规则在某个时段做了策略变更、ITSM 服务端口被占用重启后没恢复。
解决:先在 SM59 里看连接失败的具体系统错误码,再登录 ERP 服务器看网关日志。如果是资源类问题,清理空间后通常能恢复。如果日志里看到「connect timed out」之类,优先排查网络而非 SAP 配置。这属于典型的「配置没变,环境变了」的现场,处理时别一头扎进 SM59 反复重配,先把网络路径和进程状态确认清楚。
4.3 Web UI 报「无法确定逻辑系统」
现象:插件点击后,日志里出现了「Logical system not determined」或类似的中英文报错,但 SM59、BD54 里的配置看起来都在。
原因:事务启动器或逻辑链接找不到可用的逻辑系统。常见两类:一是 BD97 分配没做或分配错了(RFC destination 没绑到 ERP 逻辑系统上);二是逻辑链接创建时没指定默认逻辑系统,Web UI 框架不知道选哪个目标。
解决:回到 BD97 检查分配关系。特别注意分配方向:是「逻辑系统 → RFC destination」,别配反了。如果配置正确,再检查 SSF 里逻辑链接的默认标记哪个条目,把默认标记打到 ERP 对应那条。配置修改后,部分场景需要重新生成 Web UI 的缓存或重启相关队列,我一般会让用户重新登录一次再看效果。
4.4 ITS 返回 404,但 URL 单独访问是通的
现象:直接访问 ITS URL 能返回页面,但从 Web UI 插件点击触发时报 404。
原因:URL 本身通了,但请求带的路径与 ITS 期望的路径不匹配。事务启动器在 SSF 配置里会维护一层映射关系,有时候 404 是因为 T-code 对应的事务对象没有在 ITS 侧配置对应的服务路径,而非 ITS 服务器本身的问题。
解决:打开 ITS 的日志,看实际收到的请求路径是哪个,对比 CRMS_IC_CROSS_SYS 里的配置路径。如果两者不匹配,调整 SSF 中 URL 的拼接方式。不同版本的事务启动器对 URL 是否带尾斜杠、是否带参数格式都有要求,日志里看到什么就调到什么,不要猜。
4.5 ERP 端报权限检查失败(AUTHORITY CHECK)
现象:请求到达 ERP 了,RFC 调用的函数也能执行,但最终报权限不足,坐席无法运行 T-code。
原因:事务启动器走的是 RFC 调用,执行权限属于调用用户。这个用户可能是 Web UI 登录用户的映射账户,也可能是配置里统一指定的技术账户。ERP 端对此类账户的 T-code 授权和直接登录 GUI 的授权检查逻辑不完全一样,很容易漏配。
解决:确认 RFC 调用在 ERP 端用的是哪个用户,用 SU53 查看该用户最近一次权限检查失败的明细,按报错补齐授权。这类权限问题通常不在开发手里,要和 Basis 或安全团队协同,一次把对象类和 T-code 的授权列全,避免来回补。
5. 装完怎么验证:从 Web UI 真正拉起一个 ERP 事务代码
所有的配置完成后,验证不能只停留在「配置能保存、连接能测试」这个层面。我的验证流程分三步,每一步都在确认链路中的一环真正工作。
第一步,在 Web UI 里用测试账号登录,找到挂载了出站插件的视图,点击按钮。如果一切正常,浏览器会加载出 ERP 事务代码对应的 HTML 页面——注意,此时页面应该显示在 Web UI 的框架内,而不是新开一个窗口跳转到别处。
第二步,打开浏览器开发者工具的网络面板,清空日志后再点一次按钮,观察请求的 URL:它应该指向 CRMS_IC_CROSS_SYS 里配置的 ITS 服务地址,并且带上事务代码参数。这一步验证的是「请求真的走了 ITS,而不是被本地页面拦截了」。
第三步,回到 ERP 端,用 SM50 或 STAD 查看有没有对应的 RFC 请求记录。请求执行后会留有痕迹,通过它可以确认调用用户、事务代码、响应时间。这一步验证的是「请求真的到了 ERP 并在执行」。
下面是一份我在项目里实际使用的验证清单:
| 检查项 | 操作 | 预期结果 |
|---|---|---|
| RFC 连接可用 | SM59 对每个 destination 执行连接测试 | 返回成功提示 |
| ITS URL 可访问 | 浏览器直接访问映射的 URL | 返回 ITS 响应页面 |
| Web UI 插件触发 | 点击插件按钮,观察页面 | 加载 ERP T-code 页面 |
| T-code 执行权限 | 在 ERP 端查调用用户权限 | 无授权报错 |
| 日志留痕 | STAD 按用户和时间查 RFC 记录 | 有对应调用记录 |
这五条全过,事务启动器才算真正配完。我在这类配置上吃过最大的亏,就是验证时只做了前两条,以为链路通了就等于业务可用,结果把带着权限问题的配置丢给了测试组,坐席一点就报错,最后又花了一个下午补授权。从那以后,我每配完一条事务启动器链路,都会强制自己拿着这份清单走一遍,哪怕只是改一个 URL 路径,也会把 Web UI 实际触发那一步点掉。环境配置这种事儿,验证到什么程度,交付后的麻烦就少到什么程度,希望帮到你。
本文还有配套的精品资源,点击获取