问题描述
要访问从 SAP R/3 中的核心数据服务 (CDS) 公开数据的 OData Web 服务,用户必须分配一个包含授权对象 S_SERVICE
的授权角色。
授权对象S_SERVICE
需要两个参数:
- 在我的例子中设置为
SRV_TYPE
= "TADIR Object" 的 服务类型 (HT
) -
服务哈希 (
SRV_NAME
)。
使用我发现的调试器,函数模块 AUTHORITY_CHECK_TADIR_SERVICE
将来自 S_SERVICE
授权对象的哈希值与存储在表 usobhash
记录中的哈希值进行比较:
我还发现,函数模块AUTH_TRACE_CALC_HASH
使用表PGMID
中OBJECT
、OBJ_NAME
和usobhash
列的数据作为输入来生成然后存储在列 NAME
中的哈希。
到目前为止,每当我想授予用户/角色访问 OData 服务的权限时,我都需要知道这个哈希。为了获取哈希,我要么检查usobhash 表,要么手动执行AUTH_TRACE_CALC_HASH
,然后在将授权对象分配给事务pfcg
中的授权角色时输入哈希。我想必须有一种更简单、更“官方”的方式来做到这一点。我的方法感觉像是一种肮脏的解决方法,但我找不到任何有关如何正确执行此操作的文档。
tl;dr 如何在不调试 S_SERVICE
或搜索 AUTH_TRACE_CALC_HASH
中的相关条目的情况下设置 usobhash
授权对象?