[转]在BPC NW中何时使用Shared Query Engine BADI

 前文曾经写过关于BPC Write back BADI的应用,对于BPC系统的读写接口来说,都提供了可供用户自定义开发的BADI接口,SQE的BADI会在系统查询后调用,此时用户可以根据需求进一步筛选数据。比较典型的应用是矩阵式的安全模型。BPC的Member Access Profile只提供了对独立的维度成员权限控制,当用户需要在不同的两个维度上作交叉的成员权限控制时,Member Access Profile就不能够满足需求了。举例如下:地区维度有成员美国(US)和欧洲(EMEA),账户维度有成员个人费用(Personal Costs)和广告费用(Advertising Costs)。某用户只被允许去查看美国的个人费用和欧洲的广告费用。

     BPC的Member Access Profile只能针对某一个维度的某些成员赋予权限控制,如果用户可以访问地区维度的美国和欧洲,以及账户维度的个人费用和广告费用,那么他就可以看到美国的广告费用以及欧洲的个人费用。而这是我们需求中所不允许的。

     下面将从BW端新建SQE的BADI讲起,直到在BPC中新建report来检查是否实现了此功能。

一、登录BW端,进入SE18界面:

二、显示这个BADI的定义,展开定义树:

三、创建此BADI定义的一个实现体:

四、输入enhancement implementation的名字和描述:

五、此时,需要指定如需这个BADI要传输则开发包是什么,或者不参与传输时作为local object存储:

六、指定BADI implementation的名字、描述及实现类,同样也要指定开发包:

七、现在就新建出了一个BADI implementation,但是还没有激活的内容:

八、打开BADI implementation的菜单树:

九、双击下面的"Filter Val":

十、选中编辑按钮,然后点击"Combination":

十一、选中显示的两个参数:

十二、双击"Application_ID"这一行,然后输入filter的值:

十三、然后为"APPSET_ID"输入filter值,保存并激活已经更改的这些对象;

十四、在BADI implementation中双击"Implementing Class":

十五、双击implementing class的名字:

十六、选择编辑这个类,然后双击"POST_PROCESS"方法名,加入实现方法代码:

      具体代码在附件中,激活刚刚新建的类。接下来就可以在BPC的报表中看到如上需求的结果了。

/Files/libihui422/SQE_BADI_SAMPLE.txt

一、为用户创建两个Member Access Profile,一个叫US_MAP,可以访问地区维度的US和账户维度的个人费用(CE0004000)。另一个叫EMEA_MAP,可以访问地区维度的EMEA和账户维度的广告费用(CE0004200):

二、先展示一下当我们前面新建的SQE BADI没有生效时,两条规则对于同一个用户是叠加的,用户可以读取到US和EMEA里面两个账户的所有值:

三、当新建的SQE BADI生效后,报表内容就改变了:

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11571477/viewspace-711824/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11571477/viewspace-711824/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值