如何设计和使用自定义的权限对象(自定义权限检查函数)
来源:互联网 发布:带动画的unity3d模型 编辑:程序博客网 时间:2024/06/06 07:27
在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.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1116654
- 如何设计和使用自定义的权限对象(自定义权限检查函数)
- 如何设计和使用自定义的权限对象(自定义权限检查函数)
- 如何设计和使用自定义的权限对象(自定义权限检查函数)
- 如何设计和使用自定义的权限对象(自定义权限检查函数)
- ABAP实例:如何设计和使用自定义的权限对象
- android 权限(一)自定义,检查,使用权限
- Android自定义权限和使用权限
- 实例:ABAP权限对象设计与权限检查的实现
- [ABAP] 自定义权限对象
- 【SAP】自定义权限对象
- 07.Django中的自定义认证方式和权限的设计与使用
- Android使用自定义权限
- android 理解和使用自定义权限
- android 理解和使用自定义权限
- android--理解和使用自定义权限
- android 权限列表 和 理解与使用自定义权限
- android 权限列表 和 理解与使用自定义权限
- Android Broadcast 和 BroadcastReceiver的自定义权限使用
- 如何编写上传(PC->AS)和下载(AS->PC)程序示例
- 许多的图书下载连接列表
- SD--如何编程提取SD的定价信息
- 网络通信协议图谱
- 关于sap的字段和对象修改记录的查找
- 如何设计和使用自定义的权限对象(自定义权限检查函数)
- 如何在sap的screen中使用ListBox
- 关于SAP的SD的定价公式的资料(强力推荐,有时间我会进行翻译)
- 士兵突击经典语录,经典台词
- ABAP的代码规范标准
- 关于SAP4.7的几个架构图
- 有关SAP系统函数的说明
- VC++动态链接库(DLL)编程深入浅出(四)
- 使用'VRM_SET_VALUES'函数在selection屏幕上建一个Combobox控件示例