欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

SAP:RFC_READ_TABLE 的常见问题

最编程 2024-04-23 15:26:27
...

前言:

在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
OBJTYPE FUGR
OBJNAME SDTX
ACTVT 16

作业 16    执行

S_RFC OBJTYPE FUGR
OBJNAME SDTI
ACTVT 16

作业 16    执行

S_RFC OBJTYPE FUNC
OBJNAME RFC_READ_TABLE
ACTVT 16

作业 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全面了解有关通用表访问的权限的细节。

二、版本限制

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咨询顾问交流深入的技术与方案。