首页 / 资讯中心 / 文章详情

SAP CRM SSF事务启动器配置:RFC、BOR与Web UI集成

SAP CRM SSF事务启动器配置:RFC、BOR与Web UI集成 ★ FEATURED ARTICLE
简介一套面向SAP CRM顾问与开发人员的SSF财务共享配置图解资料定位在财务共享配置与外部系统连接重点解决事务启动器的创建前提和集成链路问题。资源由单个PPTX演示文稿组成大小约692KB每页以文字与图示结合呈现适合在项目实施中对照操作。内容系统展开事务启动器原理先将SAP GUI上的事务代码通过ITS转换为HTML集成至Web UI再逐步完成前置配置包括SM59定义RFC连接、BD54定义逻辑系统、BD97将RFC连接分配到逻辑系统、CRMS_IC_CROSS_SYS配置逻辑系统的ITS服务URL之后进入ERP创建BOR对象SWO1并在SSF中创建事务启动器与逻辑链接定义通用出站插件映射最终通过代码调用ERP事务代码。已有301人学习对正在实施SAP CRM SSF或希望打通ERP与Web UI的顾问而言这份资料相当于一份完整配置顺序与关键事务代码入口清单能帮助快速定位外部连接配置中的常见盲点。1. 事务启动器财务共享场景里把 ERP T-code 搬进 Web UI 的桥财务共享中心上线后最让我头疼的不是核算规则切换而是操作员手上那把 T-code 清单应付、应收、清账、付款、总账调整每一项都要在 SAP GUI 另开窗口Web UI 里根本看不到。SAP CRM SSF 财务共享配置里的“事务启动器Transaction Launcher”就是为这个场景准备的它把 SAP GUI 上的事务代码包装成 Web UI 里可点击的启动器中间靠 ITSInternet Transaction Server完成 HTTP 协议与 SAP 协议的转换再配上一组跨系统参数外部系统或共享工单系统也能通过同一套映射机制连进来。这篇笔记适合 CRM 与 ERP 集成项目的配置顾问以及要把财务共享流程整体搬到 Web UI 的团队。2. 前置配置四件套SM59、BD54、BD97、CRMS_IC_CROSS_SYS事务启动器本质上是跨系统请求转发不是 CRM 端自己把 T-code 画出来。所以四个前置一个都不能省SM59 定义 RFC 连接BD54 定义逻辑系统BD97 把 RFC 连接分配到逻辑系统CRMS_IC_CROSS_SYS 配置逻辑系统对应的 ITS 服务 URL。顺序乱了后面点启动器大概率报“目标系统未知”或直接空白页。2.1 SM59RFC 目标是所有跨系统调用的物理通道SM59 配的是物理通道决定 CRM 系统往哪里发请求、用哪个账号登录。我一般会建议单独建一个 RFC 服务用户比如 ZCRM_RFC不要用 DDIC也不要直接给业务用户。原因很简单事务启动器触发时是后台 RFC 调用账号权限太大会变成安全隐患太小又会在 ERP 侧报权限不足单独建用户方便后续按用户查日志。操作上进入 SM59 后选“ABAP 连接”输入目标名 ERP_100。连接类型保持 3技术设置里目标主机填 ERP 应用服务器的主机名或 IP实例号填 00SAP 客户端填 300。语言填 ZH。登录与安全页签里填上服务用户和密码。填完先别急着走配置在 SM59 工具栏点“连接测试”返回“连接成功”才算这个目标可用。如果报“TCP/IP 超时”或“名称解析失败”那就是主机名或 IP 写错跟后边配置无关先处理网络。我习惯再用一段 SE38 报告确认一次因为 SM59 界面测试偶尔会缓存一个假成功。代码很简单用 RFCPING 标准函数REPORT zrfc_ping. PARAMETERS: p_dest TYPE rfcdest OBLIGATORY DEFAULT ERP_100. DATA: lv_msg TYPE string. CALL FUNCTION RFCPING DESTINATION p_dest EXCEPTIONS OTHERS 1. IF sy-subrc 0. WRITE: / RFC destination, p_dest, is reachable.. ELSE. WRITE: / RFC destination, p_dest, failed. Check SM59.. ENDIF.这段报告的逻辑是把 SM59 里的目标名作为参数传给 RFCPING函数内部会尝试建立一次 RFC 会话并返回结果。sy-subrc 为 0 才代表目标可用否则去查 SM59 里的主机名、实例号、服务用户和密码。注意 p_dest 必须和 SM59 目标名完全一致大小写和首尾空格都不能多否则函数会直接报“目标系统不存在”。2.2 BD54 与 BD97给 ERP 系统办一张逻辑身份证SM59 解决的是“连接能通”BD54 和 BD97 解决的是“这条连接在业务上属于哪个系统”。逻辑系统是 SAP 跨系统通信里识别来源和目标的标识ALE、RFC、IDoc 都靠它事务启动器的出站调用同样依赖这段关系。BD54 里新建逻辑系统比如 ERPSYS01。命名不要乱来几十个系统的集团里10 个字符内能看出环境归属最实用比如 ERPSYS01、CRMCLNT300。新建后退出保存系统会提示需要传输请求选一个开发请求就行。接着进 BD97把逻辑系统和 RFC 目标绑定。界面上会列出逻辑系统和目标名两个输入区把刚建的 ERPSYS01 对应到 ERP_100保存。这里有个容易翻车的点BD97 保存时报“逻辑系统不存在”多半是因为 BD54 没激活或者保存到了别的请求里去 BD54 重新保存激活再回来。配置完不要急着往下走先把逻辑系统的值和 RFC 目标的关系写进项目配置文档。后面 CRMS_IC_CROSS_SYS 和出站映射都要用到这两个名字一旦文档里记错一个字母排查起来非常费劲。2.3 CRMS_IC_CROSS_SYS把逻辑系统映射到 ITS 服务地址事务代码 CRMS_IC_CROSS_SYS翻译过来就是跨系统配置按逻辑系统维护一个 ITS 服务 URL。内网环境通常直接用 HTTP不做 SSL。进入 CRMS_IC_CROSS_SYS 后新建一条逻辑系统 ERPSYS01ITS 服务 URL 填 http://ERP主机:端口/sap/bc/bsp/sap/its_web?sap-client300。端口不是随便写的ITS 走的是 ICM HTTP 端口不一定等于传统 8000 端口建议先用 SMICM 查进入 SMICM切到“服务”标签找到 HTTP 服务的端口号再拼接 URL。最直接的验证方式是把完整 URL 粘到浏览器能出登录页说明路径没问题。URL 末尾带 sap-client 和 sap-language 是常见做法。sap-client 指定目标客户端sap-languageZH 避免打开英文界面。如果浏览器 404优先检查路径大小写和端口不要立刻怀疑后边的 BOR 配置。我把这个环节的常用取值整理成一个参数表配置项事务/入口常用值说明RFC目标SM59ERP_100物理通道名称RFC用户SM59 登录与安全ZCRM_RFC独立服务账号逻辑系统BD54ERPSYS01跨系统识别 IDRFC分配BD97ERPSYS01 → ERP_100逻辑系统和连接绑定ITS URLCRMS_IC_CROSS_SYShttp://host:port/sap/bc/bsp/sap/its_web?sap-client300目标端 ITS 地址提示逻辑系统名、RFC 目标名、ITS URL 里的客户端号这三处任何一处不一致启动器就会在最后一公里失败。前四项不对启动器连 ERP 都过不去ITS URL 不对页面渲染不出来。四件套全部做完才有资格进入下一步建 BOR 对象。3. SWO1 创建 BOR 对象把 T-code 封装成能被调用的接口前置配完跨系统通道已经通了但还缺一个“接口”。事务启动器在 SSF 里引用的是 BOR 对象不是直接引用 T-code。所以先得用 SWO1 业务对象仓库把这个对象建出来。3.1 先搞懂为什么必须有 BOR 对象这一层T-code 是 ERP 的事务入口但 Web UI、外部系统、SSF 插件不认 T-code 这种没有对象结构的东西。BOR 对象给 T-code 包了一个稳定的门面对象类型有名称、有方法、有参数。SSF 出站插件映射时拿对象类型和方法做键值映射到 ERP 的 T-code。这样好处是 T-code 调整时只要映射表改掉Web UI 那边不用动。另外一个现实原因出站插件映射需要一个稳定键。如果把散落的 T-code 直接拿来当键改起来影响面大。而 BOR 对象一旦建立方法名几乎不变换 T-code 只动映射表一行上游调用方无感知。对象类型命名建议用 Z 开头例如 ZCRM_TL_CIC、ZCRM_TL_FB50。Z 开头是客户开发对象的惯例能和标准对象区分开来后续传输、权限检查也更清晰。3.2 SWO1 创建对象类型并维护 Execute 方法在 SWO1 初始屏幕输入对象类型名比如 ZCRM_TL_CIC回车后系统提示对象不存在问是否创建选“是”。接着维护对象类型短文本比如“CRM事务启动器”程序类型保持“对象类型”包可以放 Z 开头开发包。保存后系统会自动生成对象类型框架。然后在对象类型树里找到“方法”节点新建方法。方法名我一般用 EXECUTE短文本写 Execute Transaction。保存激活。这里有个关键认知EXECUTE 方法不需要写业务逻辑。真正的业务逻辑在 ERP 侧 T-code 里BOR 对象只是让 SSF 插件能按“对象类型方法”去找事务。很多第一次配的人会试图在方法里写代码其实不必除非你要在调用前做数据校验或日志记录。方法建好后回到 SWO1 初始屏幕输入对象类型点“测试”。在弹出的对象实例屏幕里双击 EXECUTE可以直接运行这个方法。如果方法没有必填参数执行会正常返回若报参数缺失就说明这个接口需要入参需要回到维护界面补参数定义。创建完成后要记得通过传输请求发布到测试和生产系统。如果只在开发机建了对象Web UI 所在系统找不到这个对象类型后面配置界面的下拉列表就不会出现。发布后等传输程序自动激活必要时在接收系统用 SE03 检查请求状态。3.3 方法和参数的取舍哪些情况需要带参数方法带不带参数取决于你在 Web UI 点击启动器之后要不要把当前界面的一些值带进 ERP 事务。典型场景是财务共享工单。操作员在 Web UI 打开一张应付工单点“清账”启动器希望跳到 F-02 时公司代码、凭证号已经带过去。这种就得在 EXECUTE 方法里建参数比如 COMPANY_CODE、VENDOR、INVOICE。出站插件映射时把这些参数对应到 T-code 的屏幕字段。如果只是把 T-code 打开让操作员自己输入那 EXECUTE 空参数就够了映射也最简单。我把这两种取舍总结成一张表场景方法参数出站映射适用情况只是打开 T-code无只映射事务代码操作员自己录入固定公司代码COMPANY_CODE映射到公司代码字段共享中心固定公司代码带凭证号跳转DOC_NO映射到凭证选择屏幕从工单跳财务凭证详情参数不是越多越好。参数越多插件映射的调试越复杂遇到字段匹配不上还会导致事务启动时直接报错。我一般先把无参数版本跑通再逐个加参数。回头复盘时发现一个项目里 90% 的启动器其实无参数就够用了带参数的基本集中在“从工单跳凭证详情”这一两个核心流程上。4. SSF 三步配置事务启动器、逻辑链接、出站插件映射前置配置和 BOR 对象都属于“地基”。SSF 里的配置才是把启动器真正搭出来的地方。按正文的做法SSF 侧要完成三件事创建事务启动器、创建逻辑链接、定义通用出站插件映射。三步有先后顺序反了或者少一步表现出的故障各不相同。4.1 SSF 创建事务启动器填写对象类型并绑定进入 SSF 配置台找到事务启动器维护界面。新建一条记录名称按业务语义写比如 ZSSF_TL_FB50、ZSSF_TL_CLEARING描述写清楚给财务共享哪个环节用最关键的是把刚在 SWO1 建好的 BOR 对象类型填进去。保存。事务启动器和 BOR 对象类型是一对一还是一对多从设计角度看一个 BOR 对象类型可以被多个事务启动器引用。比如 ZCRM_TL_CIC 这个对象类型下可以建几个启动器分别映射到 FB50、F-02、F-04。但更常见的是每个功能建一个独立的对象类型方便映射表单独管理。我建议按功能建比如 ZCRM_TL_FB50因为出站映射表的键是“对象类型方法”如果多个启动器共用一个对象类型映射的时候还要靠其他字段区分容易乱。如果是新项目还可以在这个界面顺手把事务启动器分成组应付类一组、应收类一组、总账类一组。财务共享的操作员界面本来就容易堆按钮分组清晰能省掉不少培训成本。4.2 创建逻辑链接让启动器出现在导航里事务启动器建好了但它不会自己出现在 Web UI 里。SSF 里的“逻辑链接”负责把启动器挂到工作台导航结构上。操作一般是新建逻辑链接启动器名称选上一步建好的那个设定显示顺序选好归属角色或导航组。常见做法是在测试环境单独建一个“配置测试”导航组把新启动器挂进去。这样上线前操作员就能在一个固定入口找到所有测试按钮出了问题也容易回滚不会污染正式导航菜单。逻辑链接不配的典型现象是Web UI 上找不到启动器按钮。它和出站插件映射是两回事先有导航入口才有后续调用。检查顺序上不要一上来就怀疑出站映射先看逻辑链接是否挂上、角色是否分配到了操作员账号。4.3 通用出站插件映射方法到 T-code 的最后一公里最后一公里决定“点下去之后到底调哪个 T-code”。在 SSF 配置节点里找到“通用出站插件映射”新建映射填四样东西对象类型、方法名、目标系统、目标事务代码。我一般这样填对象类型 ZCRM_TL_FB50方法 EXECUTE目标系统 ERP_100RFC 目标或 ERPSYS01逻辑系统目标 T-code FB50。如果目标系统填逻辑系统一定要和 BD97 的绑定一致不要一半写逻辑系统一半写 RFC 目标否则启动时会报找不到目标。映射表字段示例值说明对象类型ZCRM_TL_FB50SWO1 里的对象类型名方法名EXECUTEBOR 方法名区分大小写目标系统ERP_100RFC 目标或逻辑系统二选一保持一致目标 T-codeFB50ERP 侧实际要调用的事务代码附加参数可选需要传值时维护映射保存后整个链路才算是闭环Web UI 点击 → SSF 读取启动器 → 逻辑链接定位 → 出站插件映射解析 → SM59 通道到 ERP → ITS 渲染 → 浏览器显示。走到这里建议做一次“最小验证”只映射一个最简单的 T-code比如 FB50确认打开后再批量映射其他事务代码。这样能尽早暴露是“配置链路问题”还是“业务权限问题”也不会因为一次映射十几个导致排查范围太大。5. 避坑清单五个 SSF 事务启动器翻车现场5.1 前置阶段连接对不上问题多半出在名字和绑定现象SM59 测试 RFC 成功但事务启动器点开后提示“无法确定目标系统”。 原因BD97 没有将逻辑系统分配到 RFC 目标或 CRMS_IC_CROSS_SYS 里逻辑系统名拼写和 BD54 不一致。SM59 通只能说明网络通道通SSF 出站解析时按逻辑系统找地址找不到就报目标系统无法确定。 解决回 BD54 确认逻辑系统名BD97 重新绑定CRMS_IC_CROSS_SYS 里补 ITS URL。注意逻辑系统名全部大写小的笔误在日志里很难看出来。现象配置界面下拉列表里选不到建好的 BOR 对象。 原因BOR 对象没有发布到配置系统或者对象缓冲没刷新。SWO1 在开发机创建后如果传输没发或者接收系统没有自动激活SSF 配置台的下拉列表就读取不到这个对象类型。 解决检查传输请求是否已释放并导入目标系统在接收系统用 SWO1 查看对象是否存在。对象类型名大小写也要一致我见过把 zcrm_tl_fb50 小写建对象导致后面映射匹配不上的情况。5.2 运行期页面、账号、缓存三个最隐蔽的坑现象启动器页面出来是空白或者一直转圈不显示事务界面。 原因ITS URL 拼错或 ITS 服务不可访问。最常见的是端口写成了传统 8000而 ICM HTTP 端口并不一定是 8000还有路径大小写问题。另一个容易被忽略的是 BSP 服务未激活ICF 节点 /sap/bc/bsp/sap/its_web 返回 403。 解决在浏览器直接访问 CRMS_IC_CROSS_SYS 里配置的 URL用 SMICM 查端口。确认 ICF 节点已激活且激活到了正确客户端。URL 能独立打开再去 Web UI 里点启动器。现象操作员每次点启动器都被要求重新登录 ERP体验非常差。 原因SM59 登录与安全页签只填了用户名没填密码或者服务账号密码过期。事务启动器是后台 RFC 调用如果账号信息不全ITS 会把请求踢到登录页。 解决SM59 里补全 RFC 用户的账号密码重新做一次连接测试。有条件的项目可以配置信任系统或 SSO但最少也要保证 SM59 测试连接不再弹登录框。这个现象在财务共享上线初期最容易被吐槽。现象改了出站插件映射重启了 Web UI启动器还是调旧的 T-code。 原因SSF 或 WebClient 的配置缓存没有刷新或者 ERP 侧传输请求未真正激活。配置改了但缓存还在系统读到的还是旧映射。 解决在配置台找缓存刷新按钮若无则退出登录重进 WebClient在开发机上用 SE03 检查传输请求状态确认已激活。从那以后我每次改映射都会把“刷新缓存”写进变更步骤防止测试同事用旧配置做无用功。6. 验证与排错从 RFCPING 到全链路检查单6.1 用 SE38 写一个 RFC 连通性检查报告配置完 SSF 之后项目里最常发生的翻车并不是不会配而是不知道从哪一步开始查。我习惯在交付前跑一段很小的 ABAP 检查把 SM59 的连通性一次性验掉REPORT zssf_rfc_final_check. PARAMETERS: p_dest TYPE rfcdest OBLIGATORY DEFAULT ERP_100. CALL FUNCTION RFCPING DESTINATION p_dest EXCEPTIONS OTHERS 1. IF sy-subrc 0. WRITE: / RFC channel OK:, p_dest. ELSE. WRITE: / RFC channel FAIL:, p_dest. ENDIF.运行方式SE38 输入报告名F8 执行输入目标名。这是配置侧的第一道验证。6.2 全链路验证顺序和进阶参数透传验证时我按这样的顺序走每步通过再做下一步先看 RFC 连通性再看逻辑系统绑定然后浏览器直连 ITS URL再在 SWO1 里测试对象方法最后去 Web UI 点启动器端到端。哪一步断了就停在哪一步不影响后续判断。检查项操作预期RFC 连通SM59 连接测试 / RFCPING显示成功逻辑系统BD54 查看、BD97 绑定目标对应关系存在ITS URL浏览器直接打开出登录页BOR 方法SWO1 测试 Execute正常返回端到端Web UI 点击启动器显示 ERP 事务页面进阶技巧里参数透传很实用。比如财务共享工单点“清账”启动器时把公司代码 1000 带过去。做法是在出站插件映射的附加参数里维护 COMPANY_CODE1000或者在 BOR 方法参数上预填。不同项目模板写法有差异但原理一致插件映射里的参数值会被拼到 ITS 请求里目标 T-code 接收后作为初始值。参数比较容易踩的坑是字段名不匹配。ERP 屏幕字段叫 BUKRS映射里写 COMPANY_CODEITS 不会自动翻译。我一般先在 ERP 侧用 T-code 变式或录屏方式确认字段名再回映射表填能省一次联调往返。端到端在 Web UI 里报错时优先看两个地方ICF 服务错误日志和 ERP 侧 ST22 短转储。ITS 渲染失败经常在 ICF 日志里留下 HTTP 状态码400 及以上优先查 URL 路径和参数格式500 再回 ABAP 侧查错误。从那以后我每次交付 SSF 配置都强制自己先走一遍这个全链路顺序再让测试同事去点按钮。很多看起来玄学的报错其实就是顺序和字段名不一致导致的固定检查流程能省掉大半返工。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站