Skip to content

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)→ 创建 → 选择函数组

关键配置项:

  1. ‌属性页‌:
    • 处理类型:Remote-Enabled Module
    • 更新类型:选择异步/同步模式
  2. ‌参数定义‌:
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服务发布

  1. 事务码SOAMANAGER配置服务
  2. 将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

工具功能详解

  1. SM59(RFC连接管理)

    • 核心功能‌:
      • 创建/维护跨系统RFC目标(支持ABAP、HTTP等协议类型)
      • 验证连接可用性并查看连接参数(主机名、服务端口等)
    • 典型应用‌:
      • 排查跨Client函数调用时的连接超时问题
      • 配置逻辑目标实现负载均衡
  2. ST05(性能追踪器)

    • 核心功能‌:
      • 记录RFC调用过程中的SQL语句执行详情
      • 生成调用链分析报告(含函数模块耗时统计)
    • 典型应用‌:
      • 识别高频RFC调用导致的性能瓶颈
      • 优化大数据量传输时的网络延迟问题
  3. SM58(异步RFC监控)

    • 核心功能‌:
      • 显示事务性RFC(tRFC/qRFC)的错误日志与重试记录
      • 手动执行错误队列中的任务重处理
    • 典型应用‌:
      • 排查因网络中断导致的异步RFC执行失败
      • 监控长时间挂起的后台处理任务

技术特性对比

维度SM59ST05SM58
数据范围连接配置元数据实时调用性能数据异步任务执行日志
分析深度连接级监控语句级跟踪任务级错误追踪
运维场景连接故障排查性能调优异步通信异常处理

最佳实践提示‌‌:生产系统RFC调用需配置负载均衡组(SM59 → 负载均衡页签