ABAP 代码中实现权限Check的两种方式

原创 2015年07月08日 10:00:10
1. 针对SU01中Parameter的check,获取用户Parameter的语句如下

n  获取用户Parameter
 
GET PARAMETER ID 'ZPBOM' FIELD ID.


2. 对于用户权限对象的Check,举例:

FORM f_check_m_best_bsa USING    i_bsart TYPE esart
                       
CHANGING o_power TYPE c.

 
TYPES: BEGIN OF t_t161,
    bstyp
TYPE bstyp,
    bsart
TYPE esart,
 
END OF t_t161.
 
DATA: lt_values TYPE STANDARD TABLE OF us335.
 
DATA: lw_value  LIKE LINE OF lt_values.
 
DATA: lt_t161   TYPE STANDARD TABLE OF t_t161.

 
AUTHORITY-CHECK OBJECT 'M_BEST_BSA' ID 'ACTVT' FIELD '09'
                                     
ID 'BSART' FIELD '*'.
 
IF sy-subrc = 0.
    o_power
= 'X'.
   
EXIT.
 
ENDIF.

CALL FUNCTION 'GET_AUTH_VALUES'
   
EXPORTING
      object1          
= 'M_BEST_BSA'
      user             
= sy-uname
      tcode            
= sy-tcode
   
TABLES
      values           
= lt_values
   
EXCEPTIONS
      user_doesnt_exist
= 1
     
OTHERS            = 2.

 
LOOP AT lt_values INTO lw_value.

   
IF lw_value-field = 'ACTVT' AND lw_value-lowval = '09'.
     
READ TABLE lt_values TRANSPORTING NO FIELDS
          
WITH KEY auth = lw_value-auth
                  
field = 'BSART'
                  lowval
= i_bsart.
     
IF sy-subrc = 0.
        o_power
= 'X'.
       
EXIT.
     
ENDIF.
   
ENDIF.

   
IF lw_value-highval IS NOT INITIAL.
     
SELECT bstyp bsart
       
INTO TABLE lt_t161
       
FROM t161
      
WHERE bstyp = 'F'
        
AND bsart >= lw_value-lowval
        
AND bsart <= lw_value-highval.

     
READ TABLE lt_t161 TRANSPORTING NO FIELDS
          
WITH KEY bsart = i_bsart.

     
IF sy-subrc = 0.
       
READ TABLE lt_values TRANSPORTING NO FIELDS
            
WITH KEY auth = lw_value-auth
                    
field = 'ACTVT'
                    lowval
= '09'.
       
IF sy-subrc = 0.
          o_power
= 'X'.
         
EXIT.
       
ENDIF.
     
ENDIF.
   
ENDIF.

   
CLEAR lw_value.
 
ENDLOOP.

 
FREE: lt_values,lt_t161.

ENDFORM.                    " f_check_m_best_bsa

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++代码复用的方法

情景:   对不同的对象,要执行相同的逻辑操作。在C++中有哪些方法实现? 解决方法:   1,模板,将不同的对象的类型作为模板参数。 //例: int iarray[] = {2,6,4,8,...
  • u010300403
  • u010300403
  • 2016年12月02日 23:06
  • 2154

多线程实现的两种方式及其区别

继承Threadpublic class Demo2_Thread { public static void main(String[] args) { MyThread mt ...
  • StriverLi
  • StriverLi
  • 2017年02月26日 21:07
  • 1270

实例:ABAP权限对象设计与权限检查的实现(详细)

创建权限对象,使分配这个权限的用户只能操作部门编号(edept)为 ‘10’ 的数据。 1. SU20,创建权限字段    2. SU21,创建权限对象    1.首先创建对象...
  • fengyeyu090813
  • fengyeyu090813
  • 2016年08月15日 15:31
  • 605

线程有两种实现方法的具体区别

Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?  第一种方式:使用Runnable接口创建线程 第...
  • chajinglong
  • chajinglong
  • 2015年08月24日 13:44
  • 7271

有两种实现多线程的方式以及两种方式之间的区别

Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?          为了回答这个问题,我们可以通过编写...
  • u013449800
  • u013449800
  • 2014年08月22日 18:40
  • 3929

想做SAP abap开发,但是却没有权限修改/新增 abap程序

1.首先 用ddic/19920706用户进入,建立一个DEV(用户自定义)用户帐号,然后把设置密码,profile选项中输入“SAP_ALL”(这个是SAP ALL 认证的意思),保存就可了。然后L...
  • liu552726
  • liu552726
  • 2013年03月07日 17:28
  • 1005

两种动态代理的实现方式

最近浏览招聘信息,看到部分企业提到个人博客。我没有写博客的习惯,实话来说,我根本就没想到写博客。可能是我涉行不深,没有养成这种观念。看到很多大神都有自己的博客,里面各色各样的技术文章。让我非常向往。为...
  • u010887522
  • u010887522
  • 2015年03月17日 17:05
  • 238

Java的两种动态代理方式

动态代理指被代理者委托代理者完成相应的功能,是拦截器的一种实现方式,其用于拦截类或接口,内部可通过判断实现对某个方法的拦截。   jdk方式,委托类必须实现接口,代理类只能对接口进行代理。使用jav...
  • zilong0536
  • zilong0536
  • 2016年11月12日 17:28
  • 1085

Java中两种多线程实现方式的区别

在程序开发中用到多线程,正统的方法是使用Runnable接口,相比继承Thread类,Runnable接口有以下两点好处: 1、避免单继承机制的局限,一个类可以实现多个接口 2、适用于资源的共享 下面...
  • june_ruikang
  • june_ruikang
  • 2016年02月26日 21:00
  • 598

ABAP 实现对话框(一)

一、报表程序 VS 对话框程序1.报表程序 结构简单 由事件块组成程序构架 执行方式多样 2.对话框程序 结构复杂 包括ABAP程序代码、用户对话、图形用户接口和事务代码 图形用户接口包括菜单栏、标准...
  • Kang_xiong
  • Kang_xiong
  • 2016年10月20日 18:35
  • 903
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ABAP 代码中实现权限Check的两种方式
举报原因:
原因补充:

(最多只允许输入30个字)