简介:本资源是一份面向SAP CRM系统实施顾问与财务共享中心技术集成人员的实操型配置指南,聚焦SSF(Shared Services Framework)财务共享模块与外部ERP系统的深度对接。内容系统讲解事务启动器(Transaction Launcher)的核心原理、创建全流程及关键前置配置,涵盖ITS服务机制、RFC连接定义(SM59)、逻辑系统配置(BD54/BD97)、ITS服务URL设置(CRMS_IC_CROSS_SYS)、BOR对象创建(SWO1)以及通用出站插件映射等关键环节,直击跨系统调用ERP事务代码(T-code)的典型集成痛点。资源为单文件PPTX格式,共1个演示文稿,大小692KB,结构清晰、图文并茂,每页标注PwC编号便于对照学习与复现。目前已有301人学习下载,适合中高级SAP CRM开发者快速掌握SSF环境下Web UI与SAP GUI事务集成的技术路径与配置要点。
1. SAP CRM SSF 财务共享配置:不是配个URL就能连上ERP,而是要打通逻辑系统、RFC通道和ITS服务三层黑匣子
某公司上线财务共享中心后,CRM侧销售订单的应收确认始终无法回传ERP生成FI凭证——表面看是“外部系统连接失败”,实际排查两周才发现:SSF(SAP Solution Framework)里事务启动器根本没走通逻辑链路。这不是简单的账号密码问题,而是三重网关必须严丝合缝对齐:RFC连接得在SM59里测通、逻辑系统得在BD54里注册、ITS服务URL得在CRMS_IC_CROSS_SYS里精确绑定。这套配置专为SAP CRM与后端ERP(如ECC或S/4HANA)构建轻量级集成通道,不依赖PI/PO中间件,但对系统间身份映射、协议转换、BOR对象权限要求极苛刻。适合已有CRM系统、需快速打通财务主数据与单据流的实施团队,尤其适用于SSO已就绪、但不想引入复杂集成平台的场景。如果你正被“点击事务启动器后白屏”“报错‘Logical system not found’”或“ITS service not active”卡住,这篇笔记就是你翻车现场的急救包。
2. 事务启动器底层原理:为什么必须用ITS做GUI→HTML转换,而不是直接调用RFC?
事务启动器(Transaction Launcher)本质是SAP CRM Web UI向后端ERP发起GUI事务调用的代理机制。它不执行业务逻辑,只负责把Web端用户点击动作,翻译成ERP可识别的GUI会话请求。这个过程绕不开ITS(Internet Transaction Server)——它是SAP官方提供的协议桥接服务,将HTTP请求封装为SAP GUI协议(如CPIC),再通过RFC通道投递给目标系统。没有ITS,Web UI发出去的请求就像寄给“北京市朝阳区”却没写门牌号的信,ERP收不到也无从响应。
2.1 ITS为何不可替代:GUI事务的特殊性决定了它不能走RFC函数式调用
GUI事务(如VA01创建销售订单、FB01过账凭证)依赖完整的SAP GUI运行时环境:屏幕流(dynpro)、字段校验链、状态管理、甚至ABAP内存中的全局变量。而标准RFC函数(如BAPI_SALESORDER_CREATEFROMDAT2)是无状态、纯数据接口,无法还原GUI交互过程。事务启动器正是利用ITS的GUI会话复现能力,在Web端模拟出一个“虚拟GUI前台”,让用户在浏览器里操作原生ERP界面。这解释了为什么配置中必须显式指定ITS服务URL(如http://its-server:50000/sap/bc/gui/sap/its/webgui),而非简单填个RFC destination。
2.2 逻辑系统(Logical System)是身份锚点:RFC连接≠可用连接
在SAP集成体系中,“RFC连接”只是网络可达性证明,而“逻辑系统”才是业务身份标识。BD54中定义的逻辑系统(如ERPCLNT800)必须与SM59中RFC destination的“Target Host”和“System Number”严格对应,且该逻辑系统名需在ERP端的BD54(或SCC4)中完成反向注册。常见错误是:SM59测试连接成功,但事务启动器仍报错Logical system not assigned to RFC destination——根源在于BD97未将RFC destination分配给逻辑系统,或分配的逻辑系统名拼写大小写不一致(SAP区分大小写)。
2.3 BOR对象是权限闸门:SWO1里没授权,再正确的URL也进不去
事务启动器最终调用的是ERP中的BOR(Business Object Repository)对象,例如BUS2032(Sales Order)或BUS2000112(Financial Document)。这些对象在CRM侧需通过SWO1显式创建并赋予Execute权限。若跳过此步,用户点击启动器后会直接返回Authorization check failed for object BUS2032。注意:此处权限非ERP端的SU3角色,而是CRM系统内对BOR对象的操作许可,需在CRM的SU01中为用户角色分配CRM_BC_BOR_EXECUTE等特定权限对象。
提示:ITS服务URL中的端口号(如50000)必须与ERP系统实际ITS服务监听端口一致。可通过ERP端事务码
SMICM→Goto→Services查看sap/bc/gui/sap/its/webgui服务状态及端口。若端口被防火墙拦截,事务启动器将超时而非报错。
3. 创建事务启动器全流程:从SM59到CRMS_IC_CROSS_SYS,六步缺一不可
配置事务启动器不是线性操作,而是环环相扣的验证链。每一步的输出都是下一步的输入,漏掉任意环节都会导致最终调用失败。以下步骤基于SAP CRM 7.0 EHP3 + ERP ECC 6.0双系统环境实测,参数命名遵循SAP标准前缀规范(如Z_开头自定义对象)。
3.1 步骤一:在CRM系统中创建RFC连接(SM59)
进入CRM系统事务码SM59,选择RFC Destination→Create:
- Destination Name:
Z_ERP_CLNT800(建议含系统标识) - Connection Type:
3(3 = ABAP Connection) - Target Host:
erp-app-server.domain.com(ERP应用服务器主机名,非LB地址) - System Number:
00(ERP实例号) - Client:
800(ERP客户端号) - User:
Z_CRM_INTEG(专用集成用户,密码需在Logon & Security页签设置) - Unicode:
Checked(若ERP为Unicode系统)
逻辑说明:
SM59中Test Connection按钮仅验证网络层连通性与登录凭证有效性。它不检查逻辑系统映射,也不触发ITS服务。若测试失败,请先确认ERP端SICF服务/sap/bc/gui/sap/its/webgui已激活(事务码SICF→ 激活节点),且防火墙放行目标端口。
3.2 步骤二:在CRM中定义逻辑系统(BD54)
事务码BD54→Create:
- Logical System Name:
Z_ERP_CLNT800(必须与SM59中Destination Name完全一致) - Description:
ERP Production Client 800 - RFC Destination:
Z_ERP_CLNT800(下拉选择刚创建的RFC连接)
参数说明:
BD54本质是建立“逻辑身份”与“物理连接”的绑定关系。此处Logical System Name将作为后续所有跨系统调用的身份标签,务必全大写且无空格。若ERP端也需反向调用CRM,则需在ERP的BD54中同步创建CRM逻辑系统(如Z_CRM_CLNT100)。
3.3 步骤三:分配RFC连接到逻辑系统(BD97)
事务码BD97→Create:
- Logical System:
Z_ERP_CLNT800(选择BD54中创建的逻辑系统) - RFC Destination:
Z_ERP_CLNT800(选择SM59中创建的RFC连接) - Application Server Group: 留空(单应用服务器环境)
关键逻辑:
BD97是打通逻辑与物理的关键桥梁。未执行此步,CRM系统无法将“调用ERP逻辑系统”这一指令解析为具体RFC连接。常见误操作是跳过BD97,以为BD54已隐含分配。
3.4 步骤四:配置ITS服务URL(CRMS_IC_CROSS_SYS)
事务码CRMS_IC_CROSS_SYS→Edit→ITS Services页签:
- Logical System:
Z_ERP_CLNT800 - ITS Service URL:
http://its-erp-server:50000/sap/bc/gui/sap/its/webgui?~transaction=VA01 - Description:
ERP VA01 Sales Order Creation
参数说明:URL末尾
~transaction=VA01是ITS服务的强制参数,指定要启动的ERP事务码。若需传递参数(如销售订单号),可追加&SOBKOM-VBELN=0000000001,但需确保ERP端事务支持URL参数传入(部分标准事务不支持)。
3.5 步骤五:创建BOR对象并授权(SWO1)
事务码SWO1→Create:
- Object Type:
BUS2032(Sales Order标准BOR) - Object Key:
*(通配符,允许所有销售订单实例) - Method:
Display(或Change,按业务需求选) - Authorization Check:
Checked
执行后进入
Authorization页签,为当前用户角色分配CRM_BC_BOR_EXECUTE权限对象,并勾选BUS2032。BOR对象创建后需在SWO2中激活。
3.6 步骤六:在CRM Web UI中创建事务启动器
进入CRM Web UI配置路径:Administer→Configuration→UI Framework→Transaction Launchers→New Entry:
- Transaction Launcher ID:
Z_VA01_ERP - Description:
Create Sales Order in ERP - Logical System:
Z_ERP_CLNT800(下拉选择BD54中定义的逻辑系统) - ITS Service URL:
http://its-erp-server:50000/sap/bc/gui/sap/its/webgui?~transaction=VA01(与CRMS_IC_CROSS_SYS中一致) - Target Window:
New Window(推荐,避免覆盖CRM界面)
验证要点:保存后,进入CRM Web UI任意页面(如销售订单列表),右键菜单应出现
Z_VA01_ERP选项。点击即触发ITS服务,跳转至ERP VA01界面。
4. 避坑:六个血泪经验总结,每一条都来自真实翻车现场
配置事务启动器最耗时的环节不是操作,而是排查那些“看起来都对,但就是不通”的玄学问题。以下是某开发者在三个不同客户项目中踩过的典型坑,按现象→原因→解决结构整理,拒绝模糊描述。
4.1 现象:点击事务启动器后弹出空白新窗口,地址栏显示http://its-server:50000/sap/bc/gui/sap/its/webgui?~transaction=VA01,但页面无内容
原因:ITS服务URL中its-server主机名在CRM服务器DNS中无法解析,或CRM服务器到ITS服务器的50000端口被防火墙拦截。SM59测试成功仅证明CRM→ERP应用服务器连通,不包含CRM→ITS服务器的网络路径。
解决:在CRM服务器命令行执行telnet its-erp-server 50000;若失败,联系网络组开通CRM服务器到ITS服务器50000端口的TCP策略。同时确认ITS服务器主机名在CRM服务器/etc/hosts中已静态映射(避免DNS延迟)。
4.2 现象:弹出错误对话框Error during ITS processing: Logical system Z_ERP_CLNT800 not found
原因:CRMS_IC_CROSS_SYS中配置的逻辑系统名与BD54中定义的逻辑系统名存在大小写差异(如Z_ERP_CLNT800vsz_erp_clnt800),或BD97中未将RFC destination分配给该逻辑系统。
解决:在CRMS_IC_CROSS_SYS中双击逻辑系统字段,确认其值与BD54中完全一致(包括大小写);进入BD97检查该逻辑系统下是否已存在RFC destination记录。若无,手动创建。
4.3 现象:跳转到ERP界面后提示You are not authorized to use transaction VA01
原因:事务启动器使用的RFC用户(Z_CRM_INTEG)在ERP端缺少VA01事务码的S_TCODE权限,或未分配对应业务角色(如SAP_SD_ORDER)。注意:此权限在ERP端配置,与CRM的BOR权限无关。
解决:登录ERP系统,用SU01查看Z_CRM_INTEG用户角色,通过PFCG检查角色中是否包含S_TCODE权限对象且ACTVT=01(Display)或02(Change);若缺失,为该角色添加S_TCODE并赋予权限值VA01。
4.4 现象:事务启动器可打开VA01,但输入销售组织后报错No valid sales area for customer
原因:事务启动器调用的是GUI会话,ERP端默认使用RFC用户的登录客户端(Client 800)的默认值。若该客户端未维护销售区域主数据(如OVX2配置),则校验失败。
解决:在ERP端事务码OVX2中,为RFC用户所在客户端(800)配置有效的销售组织、分销渠道、产品组组合;或修改事务启动器URL,强制指定客户端:...~transaction=VA01&~client=800。
4.5 现象:CRM Web UI中事务启动器菜单项灰色不可点击
原因:未在CRM的CRMC_UI_PROFILE中为当前用户角色分配该事务启动器ID(Z_VA01_ERP)。事务启动器需显式授权才能出现在UI菜单。
解决:进入CRMC_UI_PROFILE→ 选择用户角色 →Transaction Launchers页签 → 勾选Z_VA01_ERP→Save。若使用标准角色(如SAP_CRM_ADMIN),需复制为Z角色后再修改。
5. SSF财务共享专项配置:如何让CRM销售订单自动触发ERP财务过账
事务启动器解决了“人点一下就能进ERP”的问题,但财务共享的核心诉求是“系统自动推单”。这就需要SSF(SAP Solution Framework)中的出站插件(Outbound Plugin)机制,将CRM销售订单保存事件(如ORDER_SAVE)实时映射为ERP的FI凭证创建调用。这不是简单配置,而是代码级集成。
5.1 出站插件映射原理:用BADI替代硬编码,实现松耦合
SSF不直接调用RFC函数,而是通过BADI(Business Add-In)CRM_ORDER_OUTBOUND捕获订单保存事件,再在其实现类中编写ABAP代码调用ERP RFC。这种方式的优势在于:
- 业务逻辑与技术调用分离,修改过账规则无需重编译核心程序;
- 可在BADI方法中做预处理(如校验客户信用、过滤测试订单);
- 错误可被捕获并写入CRM日志(
CRMD_ORDER_INDEX表),便于追踪。
5.2 创建出站插件映射的四步法
步骤一:定义RFC函数模块(在ERP端开发)
事务码SE37→Create Function Module:
- Function Module Name:
Z_FI_POST_FROM_CRM - Remote-Enabled Module:
Checked - Import Parameters:
IV_BUKRSTYPEBUKRS(公司代码)IV_KUNNRTYPEKUNNR(客户编号)IV_WRBTRTYPEWRBTR(金额)
- Export Parameters:
EV_BELNRTYPEBELNR(凭证号)
- Source Code: 调用
BAPI_ACC_DOCUMENT_POST并提交。
步骤二:在CRM中创建RFC destination指向该函数
SM59中新建destinationZ_ERP_FI_POST,类型3,指向ERP系统,用户需有S_RFC权限。
步骤三:实现BADICRM_ORDER_OUTBOUND
事务码SE18→CRM_ORDER_OUTBOUND→Create Implementation:
METHOD if_ex_crm_order_outbound~order_save. DATA: ls_header TYPE crmd_orderadm_h, lv_belnr TYPE belnr. " 获取订单抬头数据 CALL FUNCTION 'CRM_ORDER_READ' EXPORTING iv_guid = iv_order_guid IMPORTING es_header = ls_header. " 调用ERP RFC过账 CALL FUNCTION 'Z_FI_POST_FROM_CRM' DESTINATION 'Z_ERP_FI_POST' EXPORTING iv_bukrs = ls_header-bukrs iv_kunnr = ls_header-kunnr iv_wrbtr = ls_header-wrbtr IMPORTING ev_belnr = lv_belnr. " 记录日志 INSERT INTO crmd_order_index VALUES ( iv_order_guid, 'FI_POST', sy-datum, sy-uzeit, lv_belnr, 'S' ). ENDMETHOD.步骤四:激活BADI并绑定到订单类型
SE19中激活实现类;进入CRMC_ORDER_TYPE,为销售订单类型(如TA)分配该BADI实现。
关键参数说明:
DESTINATION 'Z_ERP_FI_POST'必须与SM59中destination name完全一致;iv_order_guid是CRM订单唯一标识,需在BADI方法中通过输入参数获取;日志表crmd_order_index用于审计,字段STATUS为S表示成功,E表示失败。
5.3 验证财务过账是否生效的三重检查法
- CRM端检查:保存销售订单后,查询
crmd_order_index表,确认STATUS = 'S'且OBJKEY字段存有ERP返回的凭证号; - ERP端检查:用
FB03输入凭证号,确认FI凭证已生成,且行项目中KDFLG = 'X'(标记为CRM来源); - 日志追溯:若失败,在CRM事务码
SLG1中筛选OBJECT = 'CRM_ORDER'、SUBOBJECT = 'OUTBOUND',查看详细错误堆栈。
从那以后我每次配置SSF财务共享通道,都强制走一遍这三重检查:先SM59测RFC,再CRMS_IC_CROSS_SYS核URL,最后SLG1查日志。哪怕客户说“上次配过没问题”,我也坚持重跑一次——因为逻辑系统名多一个空格、ITS端口少一个零,都足以让整条财务流水断在半路。希望帮到你。
本文还有配套的精品资源,点击获取