关于 CRM 系统中权限控制设计的一些思路

举报
Jerry Wang 发表于 2021/09/28 11:57:22 2021/09/28
【摘要】 当试图打开一个Opportunity时,系统会进行如下一系列的权限检查:1. 检查Authorization object CRM_ORD_OP:此处会检查当前user的partner function和partner function category的设置情况:如果检查失败,会抛出error message:2. 进行第二轮针对CRM_ORD_LP的检查:3. 如果再失败,进行第三轮对C...

当试图打开一个Opportunity时,

系统会进行如下一系列的权限检查:

1. 检查Authorization object CRM_ORD_OP:

此处会检查当前user的partner function和partner function category的设置情况:

如果检查失败,会抛出error message:

2. 进行第二轮针对CRM_ORD_LP的检查:

3. 如果再失败,进行第三轮对CRM_OPP的权限检查:

45代表Allow:

4. 如果再失败,进行第四轮对CRM_ORD_RS的权限检查:

如果都失败,将看到如下错误信息:

可以用一张图概括:

1. 使用业务角色ANALYTICSPRO登录WebClient UI:

2. 点击新建按钮:

为新建的报表分配一个HANA Live Query:

指定Query的参数:

上图WebClient UI选择的参数都定义在HANA studio里:

给报表添加属性:

添加measure:

之后报表即可在WebClient UI里成功渲染:

并且也能在CRM Fiori的Customer Report应用里看到该report。

如果想获得更多关于上图提到的Fiori应用,请查看我的公众号文章 SAP Fiori应用的三种部署方式

SAP的Fiori应用是通过OData和后台交互的。在使用Fiori应用时您可能会遇到这样的错误消息:

这个错误消息没有包含有助于partner或者客户定位问题根源的线索。

下面是如何在后台找出问题根源的步骤。

1. 在Fiori前台系统上使用事务码/IWFND/ERROR_LOG找到当前OData出错对应的错误日志:

关于Fiori前后台系统的区分,参考我的微信公众号文章SAP Fiori应用的三种部署方式

2. 点击工具栏上的按钮"Active Source"。然后我们会被自动带到抛出错误消息的代码位置,即下图的第86行。这个代码是Fiori前台系统进行出错处理的框架代码,我们就在第86行设置一个断点。

返回Fiori UI重现错误,断点触发,默认的调用栈是上图设置的断点,即方法HANDLE_RFC_FAILURE内部。此时我们跳到调用栈的外面一层,即方法CALL_BACKEND, 如下图所示。这个方法的exceptions参数lv_rfc_message的内容即具体的错误消息。

如果您够细心,您或许会发现有的SAP Fiori应用的footerbar区域内的按钮有高亮显示,有的则没有。

如何自己分析这两种按钮的实现原理?

还是借助Chrome Development Tool。更多Chrome development tool的使用技巧,参考我的博客

Chrome Development Tool tips used in my daily work

使用network tab可以观察到实现高亮实现的CSS class:

记下这个css class的名称sapMBtnEmphasized:

由此可见,这个class是在如下代码处设置的:

只要Fiori应用程序的controller是继承自BaseDetailController,则edit button一定会highlight:

一个很小的tip:比如我想把UI5表格控件里的每列设置成宽度根据显示的内容自适应,需要知道应该调用控件的哪个方法来实现。

一种办法当然是查SAP帮助文档,得知需要调用控件的公有方法setAutoSizable。

另一种办法是在debugger里研究,因为根据经验,这种公有方法的名称按照惯例一般都是以set开头,如下图:

根据经验从调试器里的set自动完成列表里的所有条目定位到应该调用setAutoResizable这个方法。下一个问题就是这个方法到底应该传什么参数进去。

直接在调试器里执行方法getMetadata, 展开返回的结果:

在_mProperties的autoResizable里得知这个set方法应该传一个boolean类型的参数进去:

反思

这种思路是在runtime时获取控件的元数据,这和Java的反射,ABAP的RTTI实际上异曲同工。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。