Appearance
SAP RFC 开发技术手册(2025版)
一、RFC 核心概念
1. 基本定义
RFC(Remote Function Call)是SAP系统间标准通信协议,支持跨系统功能调用与数据交换。主要类型包括:
- 同步RFC:实时等待响应
- 异步RFC:非阻塞式调用
- 事务性RFC:支持LUW(逻辑工作单元)
2. 技术特性
特性 | 说明 | 应用场景 |
---|---|---|
系统集成 | 支持ABAP/JAVA/.NET等平台交互 | 混合架构系统集成 |
协议标准化 | 基于CPIC协议栈实现 | 跨网络通信 |
数据安全 | 支持SSL/TLS加密传输 | 敏感数据传输 |
二、RFC 创建全流程
1. 前置准备
- 授权用户:SU01创建类型为"System"的RFC用户
- 函数组创建(SE80):abap
SE80 → 创建函数组 → 输入ZFG_RFC_DEMO
生成结构:
text
├── ZFG_RFC_DEMO(主程序)
├── LZFG_RFC_DEMOTOP(全局数据)
└── LZFG_RFC_DEMOUXX(用户代码)
2. 函数模块创建(SE37)
abap
SE37 → 输入函数名(例:Z_RFC_GET_DATA)→ 创建 → 选择函数组
关键配置项:
- 属性页:
- 处理类型:
Remote-Enabled Module
- 更新类型:选择异步/同步模式
- 处理类型:
- 参数定义:
abap
IMPORTING
IV_PLANT TYPE WERKS_D
EXPORTING
EV_RESULT TYPE CHAR20
TABLES
IT_DATA STRUCTURE ZST_DATA
EXCEPTIONS
COMMUNICATION_FAILURE
三、RFC 调用方法
1. ABAP 调用
abap
DATA: lv_plant TYPE werks_d VALUE '1000'.
CALL FUNCTION 'Z_RFC_GET_DATA'
DESTINATION 'RFC_DEST' " SM59配置的目标系统
EXPORTING
iv_plant = lv_plant
IMPORTING
ev_result = DATA(lv_result)
TABLES
it_data = gt_output
EXCEPTIONS
communication_failure = 1
OTHERS = 2.
IF sy-subrc = 0.
WRITE: / '执行成功:', lv_result.
ENDIF.
2. Java 调用(JCo实现)
abap
JCoDestination dest = JCoDestinationManager.getDestination("RFC_DEST");
JCoFunction function = dest.getRepository().getFunction("Z_RFC_GET_DATA");
function.getImportParameterList().setValue("IV_PLANT", "1000");
function.execute(dest);
String result = function.getExportParameterList().getString("EV_RESULT"); []
四、高级应用
1. 异步RFC调用
abap
CALL FUNCTION 'Z_ASYNC_PROCESS'
STARTING NEW TASK 'TASK1'
PERFORMING callback ON END OF TASK
EXPORTING
iv_data = lv_input.
2. Web服务发布
- 事务码
SOAMANAGER
配置服务 - 将RFC函数映射为
SOAP/WEB API
3. 连接管理(SM59)
SM59配置界面
- 配置RFC目标系统
- 设置安全参数(加密/认证)
五、权限与安全
1. 权限控制
abap
AUTHORITY-CHECK OBJECT 'S_RFC'
ID 'RFC_TYPE' FIELD 'FUGR'
ID 'RFC_NAME' FIELD 'ZFG_RFC_DEMO'.
2. 输入验证
abap
IF iv_plant CN '0123456789'.
RAISE COMMUNICATION_FAILURE.
ENDIF.
六、监控与调试
工具名称 | 功能描述 | 事务码 |
---|---|---|
连接监控 | 配置/监控RFC连接状态与参数 | SM59 |
调用跟踪 | 分析RFC调用性能与SQL执行路径 | ST05 |
错误日志 | 查看异步RFC通信错误队列 | SM58 |
工具功能详解
SM59(RFC连接管理)
- 核心功能:
- 创建/维护跨系统RFC目标(支持ABAP、HTTP等协议类型)
- 验证连接可用性并查看连接参数(主机名、服务端口等)
- 典型应用:
- 排查跨Client函数调用时的连接超时问题
- 配置逻辑目标实现负载均衡
- 核心功能:
ST05(性能追踪器)
- 核心功能:
- 记录RFC调用过程中的SQL语句执行详情
- 生成调用链分析报告(含函数模块耗时统计)
- 典型应用:
- 识别高频RFC调用导致的性能瓶颈
- 优化大数据量传输时的网络延迟问题
- 核心功能:
SM58(异步RFC监控)
- 核心功能:
- 显示事务性RFC(tRFC/qRFC)的错误日志与重试记录
- 手动执行错误队列中的任务重处理
- 典型应用:
- 排查因网络中断导致的异步RFC执行失败
- 监控长时间挂起的后台处理任务
- 核心功能:
技术特性对比
维度 | SM59 | ST05 | SM58 |
---|---|---|---|
数据范围 | 连接配置元数据 | 实时调用性能数据 | 异步任务执行日志 |
分析深度 | 连接级监控 | 语句级跟踪 | 任务级错误追踪 |
运维场景 | 连接故障排查 | 性能调优 | 异步通信异常处理 |
最佳实践提示:生产系统RFC调用需配置负载均衡组(SM59 → 负载均衡页签