SAP:RFC_READ_TABLE的常见问题

前言:

在SAP系统外部通过RFC函数/SAPDS/RFC_READ_TABLE2RFC_READ_TABLE等直接访问SAP内部透明表,常会碰到一些问题。

参阅SAP Note:382318 - 常见问题 | 功能模块 RFC_READ_TABLE

此Note特别强调:避免在解决方案中使用外部通用表访问。此功能并非公开使用。

为此,首先,我列举有关的SAP Note及修订摘要:

一、重要修订

1、Note 2246160 - 增强 RFC_READ_TABLE (7.40+)

  • 只能读取具有简单数据类型的表。
  • 最大行宽为 512 个字符。
  • 绩效低于您的期望。
  • 除权限概念外,无法冻结系统的表以防外部访问。

 Note2246160需要手工操作 

(1)数据类型 SDTI_RESULT

调用事务 SE11 并创建数据类型 SDTI_RESULT,作为包 SDTI 中短文本为“基于字符串的文本”的结构作为无法增强的数据对象。
添加具有预定义数据类型 STRING 和短文本“文本行”的组件 LINE。激活 SDTI_RESULT。
(2)
行类型SDTI_RESULT_TAB

调用事务 SE11 并在行类型为 SDTI_RESULT 的包 SDTI 中创建数据类型 SDTI_RESULT_TAB 作为具有短文本“文本表”的表类型并激活对象。
(3)
执行事务SLDW_TRANSFER

调用事务 SLDW_TRANSFER 将访问控制列表 RFC_READ_TABLE_CALL 和 RFC_READ_TABLE_TABL 从附加文件 SLDD_READ_TABLE.TXT 加载到系统中。为此,请选择“上载”,选择“规则定义”,然后取消激活测试模式。

2、Note 2423576 - SAIS | 关于系统更改的通用审计报告

此Note其实不是功能所需要,但由于增强后,启用了审计报告,引用了2423576相关的函数。

Note2423576需要手动操作

使用事务 SNOTE 在系统中实施 SAP Note 2423576后,开始实施更正。
取消选择除 NOTE_2423576 之外的所有对象,然后继续实施。
使用选项“更新 & Activate”连续两次启动报表 NOTE_2423576。
再次调用事务 SNOTE 以再次实施 SAP 注释 2423576。
通过启动和测试事务 SAIS_MONI 检查安装是否成功。如果事务正确启动但未返回任何结果,则再次使用选项“更新 & 激活”启动程序 NOTE_2423576。重复事务测试。

二、常见问题及解决方案

1、权限

S_RFC该检查取决于目标系统的系统设置(参数 auth/rfc_authority_check)

权限对象字段备注
S_DEVELOP
OBJTYPEFUGR
OBJNAMESDTX
ACTVT16

作业 16    执行

S_RFCOBJTYPEFUGR
OBJNAMESDTI
ACTVT16

作业 16    执行

S_RFCOBJTYPEFUNC
OBJNAMERFC_READ_TABLE
ACTVT16

作业 16    执行

S_TABU_DIS
DICBERCLS 表权限组
ACTVT 

作业

02    更改
03    显示
08    显示更改文档
BD    维护对象在非属主系统

S_TABU_NAM
TABLE表名
ACTVT 

作业

02    更改
03    显示
08    显示更改文档

报表 RSUSR002 和 RSUSR070进行验证。更复杂的,必须使用报表 RSUSR008_009_NEW 或 SUIM 中的相关事务。

根据Note 1434284  - 常见问题 | 通用表访问的权限概念,有以下应用场景控制权限

1.中央检查模块 VIEW_AUTHORITY_CHECK 的逻辑

2.场景 I:仅通过表权限组进行表访问控制

3.场景 II:通过表名称或表权限组进行表访问控制

4.获取表和表权限组的信息

5.维护通用表访问工具的权限缺省值

6. 用户信息系统

可通过此Note全面了解有关通用表访问的权限的细节。

权限细节,可参阅网文(部分重复):

接入SAP数据源_应用与数据集成平台 ROMA Connect_用户指南_数据源管理

二、版本限制

1.由于最大行宽固定,只能访问较小的表(每行 < 512)

2.访问包括有STRING类型的表

3.只读取某些列

如果包非定长字段,且又在函数 /SAPDS/RFC_READ_TABLE2 参数表 FIELDS 指定了字段,则可能导致异常:Exception_Key: ASSIGN_BASE_WRONG_ALIGNMENT

参阅 Note 2954449 - 调用 RFC 函数以获取表数据时出错

凡上问题,必须升级,相应Note:

1916294

 2246160

由于可能涉及多个关联Note需要实施,因此,要求您必须十分熟悉事务SNote的操作。

后记:

愿与更多专业SAP咨询顾问交流深入的技术与方案。

2024-04-29:

根据近期调试/SAPDS/RFC_READ_TABLE2发现的问题,近期若闲暇则更新本文档。敬请期待!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值