要访问从 SAP R/3 中的核心数据服务 (CDS) 公开数据的 OData Web 服务,用户需要分配一个包含授权对象的授权角色S_SERVICE。
授权对象S_SERVICE需要两个参数:
- 在我的情况下,服务类型(
SRV_TYPE) 设置为HT= "TADIR Object" - 服务哈希( )
SRV_NAME。
使用我发现的调试器,功能模块AUTHORITY_CHECK_TADIR_SERVICE将来自S_SERVICE授权对象的哈希与存储在 table 记录中的哈希进行比较usobhash:

我还发现,该功能模块AUTH_TRACE_CALC_HASH使用来自 columns 的数据PGMID,OBJECT并OBJ_NAME在 tableusobhash作为输入来生成哈希,然后将其存储在 column 中NAME。
到目前为止,每当我想授予用户/角色访问 OData 服务的权限时,我都需要知道这个哈希值。要获取哈希,我要么检查 usobhash 表,要么手动执行AUTH_TRACE_CALC_HASH,然后在我将授权对象分配给 transaction 中的授权角色时输入哈希pfcg。我想必须有一种更简单、更“官方”的方式来做到这一点。我的方法感觉像是一种肮脏的解决方法,但我找不到任何有关如何正确执行此操作的文档。
tl;dr如何在不调试或搜索相关条目的情况下设置S_SERVICE授权对象?AUTH_TRACE_CALC_HASHusobhash

