SAP:RFC_READ_TABLE 的常见问题
前言:
在SAP系统外部通过RFC函数/SAPDS/RFC_READ_TABLE2、RFC_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 更改 |
||
S_TABU_NAM | |||
TABLE | 表名 | ||
ACTVT | 作业 02 更改 |
报表 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咨询顾问交流深入的技术与方案。
推荐阅读
-
031.查看 SAP 上的所有用户账户,并查询 SAP 用户账户的后台数据库表
-
常见问题 (II)]打印 "无法启动交换机根节点 "错误(该错误会导致系统进入紧急模式)的解决方案。
-
ABAP 系列] SAP ABAP 取两个内表的交集 比较两个内表的差异
-
SAP 成都研究院 C4C 璀璨左使:SAP 云客户使用 SAP UI5 的独特功能
-
SAP 成都研究院 C4C 璀璨左使:SAP 云客户使用 SAP UI5 的独特功能
-
使用 SAP C4C 规则编辑器动态控制用户界面上是否显示按钮 - 使用 SAP 客户云用户界面规则编辑器的示例
-
有关金融和贸易的常见问题及解决方法
-
Oracle导出导入dmp等文件类型多表数据的常用方法、遇到的常见问题及解决办法(exp无效sql????)
-
SAP 规划政策组 40 和 50 的比较分析
-
SAP MM 模块基本数据的配额安排(最大订货量控制)说明。