SAP有许多预定义的权限,但是ABAPer新开发的报表是没有权限管理的,所以要自定义。
如果是自定义的权限,大多数都要自定义一个域来分配,所以我们先在SE11创建如下信息。
t-code SE11
域定义如下:
值范围给个X,后续只有被分配了X的角色对应的用户才拥有这个权限
数据元素则包含刚刚建立的域
字段标签页面就根据描述的长度定义一下
然后进 t-code SU20 创建权限字段
创建完成后如下显示
然进SU21创建权限对象类,把刚刚创建的权限对象ZCYCLE0622加进去,SU21每变动一次都要重新生成一下 SAP_ALL,否则管理员账号将不具备新增的权限
如下权限对象已经包括了权限字段,即我们刚刚新建的数据元素
然后进SU22给自己新开发的外挂报表加上刚刚新建的权限对象
如下我们就把新建的权限对象ZCYCLE0622加进我们新写的t-code里去了
然后打开我们新写的程序,光标移动到想要加入权限判断的位置,点击 模式 按钮
然后加入 权限检查 ,这样系统就会自动生成一段权限检查代码
如下
然后我们就可以做自定义的修改了,因为这个权限对象里的数据元素我只定义了一个值范围,即 X ,所以我们检查这个数据元素有没有 X 即可
于是代码改成如下
这样外挂程序里的权限检查就完成了,接下来就是要分配权限给对应的角色了.
首先进T-CODE PFCG ,创建一个新的角色,角色分为单一角色和复合角色,单一角色的一个独立的权限对象,复合角色是多个单一角色的组合,继承了多个单一角色的权限。一般来说我们创建单一角色即可.
我们添加对应的数据。
创建好角色,并把 T-CODE 加进去之后,点击进对应的应用程序,提示我们在SU24里没有维护其他的权限,这里明明我在SU22维护了,却没出来,很奇怪。
用SU24维护T-CODE 的权限对象,提示需要创建请求,因为是做演示,所以这里我们就不创建了
点进权限页面,系统也没有自动分配权限进来,所以我只能点击 手动 添加
这里我们不给它的 域 打上 X,表示这个角色有了这个权限对象,但是权限没开起来
然后我们把这个角色进SU01分配给对应的用户,当然还有对应的用户比较等这里就不一一截图了,这样,只要我们在PFCG里把这个域的X打上去,那么这个用户就有权限执行t-code ZCYCLE01了