本文共 2271 字,大约阅读时间需要 7 分钟。
这个是为了权限检查那篇的扩展。
从数据方面来考虑,我们要把不同系统的数据拿过来,然后给用户看。
这里就涉及到权限了,根据职权不同,能看到的数据不同。
跟ERP不同,ERP那边是你能进行哪些操作,但是BW这边是
你能看到什么数据,和进行哪些操作。
咱就只知道BW的皮毛,就只能总结总结BW的。
权限对象
啥是权限对象?
就像是一块块门禁令牌,你有了不同的令牌,通过不同的入口,别人检查了后才给你进。如果检查了没有令牌,那对不起,别进。
你进了之后能干什么也会写明,这个叫做权限字段。权限对象上的每个权限字段会告诉你相应的你能干什么,在对象上的什么地方干。
我们在
SU21里面能看到所有
标准权限对象。标准的告诉你,你
能进行哪些操作。比如建模,监控,抽数,加载等等。
分析授权
除此之外,还有分析授权。新建和维护分析授权的代码:RSECADMIN。
分析授权干嘛的呢?就是告诉你
能看哪些数据。那这个是怎么实现的呢?

这个就是通过权限相关对象实现的。
比如公司代码,工厂,成本中心,利润中心。通过设置这些权限相关对象来建立不同公司,不同工厂,不同成本中心及不同利润中心的数据权限。

分析授权是不对权限对象进行操作的。但是你可以在权限对象里面弄分析授权。它其实是基于一组权限相关的特性或者导航属性。在分析授权中限定权限相关特性的值,来提供相应数据的权限。当然不一定是特定值,你还可以用一个出口变量来限定。如果觉得晕,继续往下看。
这些权限相关变量用于query,并且在用户访问query的时候会对用户的权限进行检查。一般情况下,query总是会从数据库跑一个满足条件的数据集。如果这个数据集里面有权限相关对象,那你得保证跑报表的用户有对应的权限相关对象的权限,然后他才能跑出属于自己的数据。否则就会出现无权限的错误。一般为了防止影响query性能,一个query里最好不要超过10个权限对象。如果权限对象值限定为*,那就没影响,就等于不限制。
要注意分析授权不是过滤器的概念。
总结一下,分析授权基于一组权限相关特性或导航属性,接着来限制特性的值。
限制的值可以是单值,区间或层级授权。
然后来分配这个授权给用户。
那么怎么分配呢?
创建role和profile
通过建立role和profile。PFCG来建role:

更改权限数据。

我们可以参照已有的模板:

从下面可以看到权限数据是基于SU21的权限对象以及对象下的权限字段的。
根据我们之前说的,权限对象相当于令牌,权限字段告诉你能干什么。下面这个图是个分析授权的权限字段填值。这里你可能会晕,不是说分析授权和权限对象无关么?为什么在权限对象下给值呢?
因为权限对象给它开了个口子,包括了分析授权的对象。只不过值是一个分析授权。

我们看个标准授权:

标准权限对象就是,你给了哪个令牌,令牌下面的权限字段,你分别能让他们干什么。比如上面这个activity字段就让有这个角色的人能够增删改查。这些操作都可以。下面的可以操作的范围没有限制。

对于报表用户,必须添加权限对象:
S_RS_COMP
S_RS_COMP1
用来限制可访问的报表。在Name of a reporting Component那里限定报表名。或者以什么开头Q*。

S_RFC 从Bex关联到后台的权限,否则无法访问后台数据。

到这里,在不讨论分析授权具体的操作下。我们就可以直接激活并且传输role了。此前会生成profile。一个role会对应一个profile,在具体的权限文档里面你能看到profile都是权限对象后面的编号去掉后两位。

关于传输role.请看这篇:
最后,我们把这个role分配给用户就好了。
以上是通过创建role把分析授权集成在role的profile里。你知道从RSECADMIN可以直接建立分析授权,所以如果你想直接把分析授权分配给用户也是可以的:或者RSU01

但是分析授权好像一般都是基于角色的。这也就是为啥我们是先建了角色,然后在标准对象下分配分析授权。直接建分析授权,并且直接分配给用户的话,就是在Manual or Generated下面。
分析授权的实现
好了,到这里回来填坑。
用户现在有的这个角色,只是参考SAP提供的角色创建的。在分析授权里面,我们看到的是这个:
0BI_ALL. 这个是给所有的权限。如果你给了这个授权,然后又新建了自己的授权,请记住,这个all会覆盖所有其他的授权。

你到rsecadmin下面查看,会发现这个0BI_ALL里面包括了系统里所有的权限相关对象,然后给了所有对象值:*

那我们怎么办呢?
我们可以复制这个分析授权出来,然后基于它来修改:
可以限定层级从客户出口变量来动态取值。
这里也就是说为什么分析授权不能单纯的看成是过滤器,从客户出口这个功能实际上是相当于一个接口。(以后来写,如果有空的话)

也可以限定为固定值或区间。

然后把这个新的分析授权填写到授权字段下,取代0BI_ALL来完成我们的权限限定。
如果你要自己完全新建一个也是可以的,只是会有三个默认对象:
0TCAACTVT – 就是授权的行为,你可以是修改或者是查看。
0TCAVALID – 授权的时间区间。
0TCAIPROV – 授权的信息提供者。
到此,接下来的步骤就是创建一个具有分析授权里限定的权限对象的query,然后让该用户去执行query,来认证我们的分析授权是否合理。
你可以自己帮他测:RSUDO
或者在RSECAMDIN下:

去执行query.
转载地址:http://ecanz.baihongyu.com/