Azure Data Factory连接多SAP表失败及自定义RFC参数配置求助
解决方案:ADF连接多SAP表及自定义RFC报错处理
问题根源
报错提示Element QUERY_TABLE of container metadata ZZ_READ_VM unknown,说明你指定的自定义RFC函数模块ZZ_READ_VM不包含ADF读取SAP表时默认依赖的QUERY_TABLE参数,导致调用失败。
具体解决步骤
1. 校验自定义RFC函数模块的参数结构
ADF的SAP表连接器要求自定义RFC函数模块必须包含以下标准参数:
- 输入参数:
QUERY_TABLE(指定目标表名)、DELIMITER(字段分隔符)、ROWSKIPS(跳过行数)、ROWCOUNT(读取行数) - TABLES参数:
DATA(输出表数据)、FIELDS(指定读取字段)、OPTIONS(筛选条件)
如果ZZ_READ_VM缺少上述参数,需要在SAP系统中通过SE37事务码修改该函数模块,补充对应参数;或者更换为符合该结构的自定义RFC模块。
2. 正确配置ADF数据集的自定义RFC参数
在SAP表数据集的连接配置中:
- 找到
customRfcReadTableFunctionModule配置项,填入参数结构符合要求的自定义RFC函数模块名称 - 若不需要自定义逻辑,可直接使用SAP标准RFC模块
RFC_READ_TABLE,无需指定自定义模块
3. 实现多表批量读取的配置
要适配多表场景,无需依赖自定义RFC,通过数据集参数化+ForEach迭代即可实现:
- 在SAP表数据集中添加参数(例如
TableName),将表名设置为@dataset().TableName - 创建ForEach活动,传入多表名称列表(可通过参数或数据源获取)
- 在ForEach内部配置复制活动,将当前迭代的表名传入数据集的
TableName参数,完成单表复制的批量执行
4. 额外排查点
- 权限校验:确保ADF使用的SAP账号拥有调用目标RFC模块、访问所有待读取SAP表的权限
- RFC功能测试:在SAP系统中用SE37测试ZZ_READ_VM(或标准RFC_READ_TABLE),传入合法参数确认能正常返回数据,排除函数本身的逻辑问题
内容的提问来源于stack exchange,提问作者Ajax
相关产品推荐
相关产品推荐

