在sap扩展中用户往往都需要使用自己的权限对象,为了达到次目的,请按下列步骤建立和维护权限对象
1、Create an Anthorization Field(SU20)创建权限对象字段(存储在AUTHX表中)
2、Create an Authorization Object(SU21) 创建权限对象
创建权限对象类别(存储在TOBCT表中)
点击对象类别创建权限对象(存储在TOBJ表中),生成SAP_ALL
3、Assign an Authorization Object to an Object Class(SU02或PFCG)
4、权限赋值关系图
user master record
/ ..............................\
auth. profile Composite auth. profile
/.................\ / \
/ \ / \
Authorization Auth. Profile
/ /.................\
5、Call "Authorith-Check" in Program to Check Authorization.
这是我编写针对具体权限对象替代Authorith-Check的函数
form zcustcheckauth using value(z_vkbur) like vbak-vkbur
z_return type i.
data: wa_ust12 like ust12.
data: bgetsubfile(1) type c.
data: begin of db_file occurs 10,
profile like ust04-profile,
typ like usr10-typ,
end of db_file.
data: begin of mid_db_file occurs 10,
profile like ust04-profile,
typ like usr10-typ,
end of mid_db_file.
data: begin of db_file_end occurs 10,
profile like ust04-profile,
end of db_file_end.
data: begin of db_auth occurs 10,
objct like ust10s-objct,
auth like ust10s-auth,
end of db_auth.
z_return = 4.
select ust04~profile usr10~typ
into corresponding fields of table db_file
from ust04
inner join usr10 on usr10~profn = ust04~profile
and usr10~aktps = 'A'
where ust04~bname = sy-uname.
refresh mid_db_file.
clear mid_db_file.
loop at db_file.
if db_file-typ <> 'C'.
db_file_end-profile = db_file-profile.
append db_file_end to db_file_end.
else.
bgetsubfile = 'X'.
append db_file to mid_db_file.
endif.
endloop.
refresh db_file.
clear db_file.
while bgetsubfile = 'X'.
bgetsubfile = space.
select ust10c~subprof as profile usr10~typ
into corresponding fields of table db_file
from ust10c
inner join usr10 on usr10~profn = ust10c~subprof
and usr10~aktps = 'A'
for all entries in mid_db_file
where ust10c~profn = mid_db_file-profile.
refresh mid_db_file.
clear mid_db_file.
loop at db_file.
if db_file-typ <> 'C'.
db_file_end-profile = db_file-profile.
append db_file_end to db_file_end.
else.
bgetsubfile = 'X'.
append db_file to mid_db_file.
endif.
endloop.
refresh db_file.
clear db_file.
endwhile.
select objct auth into corresponding fields of table db_auth
from ust10s
for all entries in db_file_end
where ust10s~aktps = 'A' and ust10s~profn = db_file_end-profile.
select von bis into corresponding fields of wa_ust12
from ust12
for all entries in db_auth
where ust12~aktps = 'A' and ust12~field = 'VKBUR'
and ust12~objct = db_auth-objct
and ust12~auth = db_auth-auth.
if ( wa_ust12-bis ne space ).
if ( z_vkbur ge wa_ust12-von ).
if ( z_vkbur le wa_ust12-bis ).
z_return = 0.
exit.
endif.
endif.
elseif ( z_vkbur = wa_ust12-von ).
z_return = 0.
exit.
elseif ( '*' = wa_ust12-von ).
z_return = 0.
exit.
endif.
endselect.
endform.
调用的方法
*&---------------------------------------------------------------------*
*& Form USEREXIT_CHECK_VBAK
*&---------------------------------------------------------------------*
* *
* This Userexit can be used to add additional logic for *
* checking the header for completeness and consistency. *
* *
* US_DIALOG - Indicator, that can be used to suppress *
* dialogs in certain routines, e.g. in a *
* copy routine. *
* *
* This form is called from form VBAK_PRUEFEN. *
* *
*---------------------------------------------------------------------*
form userexit_check_vbak using us_dialog.
*{ INSERT DEVK901354 1
data: z_s_vkbur like knvv-vkbur.
data: z_auth_check type i value 4.
if sy-tcode = 'VA01' or
sy-tcode = 'VA02'.
authority-check object 'V_VBKA_VKO'
id 'VKORG' dummy
id 'VTWEG' dummy
id 'SPART' dummy
id 'VKBUR' field vbak-vkbur
id 'VKGRP' dummy
id 'KTAAR' dummy
id 'ACTVT' dummy.
if sy-subrc ne 0.
message e900(zdev).
endif."不能创建非主管商家订单
if sy-tcode eq 'VA01'.
select single vkbur into z_s_vkbur
from knvv
where knvv~kunnr = vbak-kunnr
and knvv~vkorg = vbak-vkorg
and knvv~vtweg = vbak-vtweg
and knvv~spart = vbak-spart
and knvv~vkbur = vbak-vkbur.
if sy-subrc ne 0.
message e001(zdev).
endif.
endif.
else.
perform zcustcheckauth using vbak-vkbur z_auth_check.
if z_auth_check ne 0. "如果没有权限,取当前商家主管销售组
select single vkbur into z_s_vkbur
from knvv
where knvv~kunnr = vbak-kunnr.
if sy-subrc ne 0.
message e001(zdev).
endif. "检查当前商家主管销售组是否在用户权限内
z_auth_check = 4.
perform zcustcheckauth using z_s_vkbur z_auth_check.
if z_auth_check ne 0.
message e900(zdev).
endif.
endif.
endif.
*} INSERT
endform.
分享到:
相关推荐
SAP 权限检查(通过自定义函数进行控制检查) 在 SAP 系统中,权限检查是一项重要的安全机制,用于控制用户对系统资源的访问权限。通过自定义函数进行控制检查,可以更好地实现权限管理。下面将详细介绍权限检查的...
本章我们将深入探讨"第7章 自定义函数"的相关知识点,结合提供的标签"源码"和"工具",我们将讨论如何创建、使用和优化自定义函数,以及它们在实际开发中的应用。 首先,自定义函数是一种编程构造,通过它我们可以...
本文将深入探讨“声明、使用与自定义权限”的概念,以及如何通过源代码来理解和实现这些功能。 首先,我们来了解一下Android权限系统的基本概念。Android权限是系统用来控制应用程序访问特定资源或执行敏感操作的一...
在IT领域,动态自定义权限设置是一个重要的概念,特别是在软件开发和系统管理中。它涉及到如何根据用户的需求或角色在运行时灵活地调整和分配权限。动态权限设置允许应用程序更安全、更灵活地控制不同用户对系统资源...
综上所述,这个压缩包中的源码将向你展示如何使用易语言实现动态自定义权限设置。通过学习和理解这段代码,你不仅可以掌握易语言的基本语法,还能了解到权限管理系统的设计和实现方法。这对于提升你的编程技能,特别...
本文将深入探讨如何使用自定义按钮来实现Facebook授权登录和登出功能。 首先,我们要了解Facebook的OAuth 2.0授权流程,这是Facebook提供给开发者进行身份验证的基础。用户点击自定义按钮后,应用会通过Facebook ...
通过构造函数传递这个对象,然后在需要增强的方法上覆盖原对象的行为,对权限检查等操作进行封装。对于不需要增强的方法,可以直接调用被增强对象的原始实现。 通过以上设计和实现,Java权限系统能够为复杂的应用...
在数据库管理系统中,存储过程、触发器和用户自定义函数是三个重要的概念,它们在实现复杂的业务逻辑和数据管理方面发挥着关键作用。本课件主要关注存储过程和触发器,同时也提到了用户自定义函数。 首先,存储过程...
本篇主要讲解如何在Android Studio中使用ListView,并结合自定义的BaseAdapter来实现数据的绑定和显示。 首先,我们需要在布局文件中添加ListView组件。在res/layout目录下的xml布局文件中,可以这样定义一个...
接下来,我们详细阐述如何使用Django的认证系统实现自定义权限管理。 一、了解Django认证系统的组成 1. User模型 User模型是用户认证的基础,它包含了许多字段如username、password、email等,这些字段在用户注册...
此外,可能还会涉及到权限检查、生命周期管理等细节。 总之,“Android自定义弹出框实现(修改版)完整实例源码”提供了一种自定义Android弹出框的实现方式,通过学习和理解这个实例,开发者能够更好地掌握自定义...
在Android开发中,自定义相机拍照和录像是一项常见的需求,特别是在构建个性化应用或者需要特定功能时。本项目针对这一主题提供了完整的解决方案,并已转化为Android Studio项目,方便开发者直接导入和使用。 首先...
- 示例代码:展示了如何创建和使用自定义身份验证绑定的代码示例。 - `function.json`文件:包含自定义输入绑定的配置信息。 - 测试用例:可能有单元测试或集成测试,用于验证自定义身份验证逻辑的正确性。 通过...
3. 启动Activity:当权限检查通过后,使用`startActivity()`方法启动带有拨号Intent的Activity。如果是`ACTION_CALL`,系统会直接拨打号码;如果是`ACTION_DIAL`,用户还需手动确认拨打。 结合以上两点,我们可以...
总的来说,为Django用户模型添加自定义权限是一个涉及模型、信号处理器和权限检查的过程。通过这种方式,你可以根据业务需求定制用户的访问权限,增强系统的安全性。希望这篇内容能帮助你理解如何在Django中实现这一...
7. **权限管理**:别忘了在Android 6.0及以上版本检查运行时权限,特别是使用相机和存储权限。 在`CustomCamera`这个项目中,源码应该包含上述各个部分的实现,并通过Builder模式提供灵活的配置选项。Builder模式...
通过定义自定义权限,开发者可以限制其他应用对敏感数据或功能的访问。例如,如果你有一个应用程序处理用户的联系人信息,你可以定义一个如"com.example.APP.READ_CONTACTS"的权限,然后在需要访问这些信息的地方...
上述代码示例展示了如何使用 WINCC 的 `PWGENConnect` 和 `PWGENChangePassword` 函数来连接到 ODBC 数据源并修改密码。其中,`PWGENChangePassword` 函数接收四个参数:用户名、旧密码、新密码以及错误信息变量。 ...
在实际部署和使用这个WebPart时,管理员需要在SharePoint站点上添加WebPart,配置所需的权限检查规则,这可能涉及编辑WebPart的属性或使用 SharePoint Designer 进行更高级的定制。同时,为了确保用户有合适的权限,...