`
touchinsert
  • 浏览: 1329566 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ABAP-获取用户的组织结构权限

阅读更多

在日常维护中常常需要用户的组织结构层面的权限列表,在SAP里我们就需要到角色里去查看,比较不方便,因此做下面的一个用户组织结构权限的列表程序,代码如下(供大家参考使用)

*&---------------------------------------------------------------------*
*& Report ZORG_LEVELS_AU *
*& *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
REPORT ZORG_LEVELS_AU MESSAGE-ID dev.
TYPE-POOLS: slis.
TABLES: usr02.
DATA: BEGIN OF gt_1252 OCCURS 100,
agr_name LIKE agr_1251-agr_name.
INCLUDE STRUCTURE pt1252.
DATA: END OF gt_1252 .
DATA db_1252 LIKE gt_1252 OCCURS 100 WITH HEADER LINE.

DATA: BEGIN OF gt_au_fld OCCURS 100.
INCLUDE STRUCTURE pt1251.
DATA: END OF gt_au_fld.

*Organization Level Authorization Field Text
DATA: BEGIN OF orgebenen OCCURS 30.
INCLUDE STRUCTURE usorg_db.
DATA: END OF orgebenen,
*Organization Level Authorization Field Text
BEGIN OF orgtext OCCURS 30.
INCLUDE STRUCTURE usorg_db.
DATA: END OF orgtext.

DATA: g_var LIKE orgebenen-varbl,
g_ret LIKE sy-subrc,
g_old_field LIKE pt1251-field.
DATA: BEGIN OF gt_result OCCURS 100,
agr_name LIKE agr_1251-agr_name.
INCLUDE STRUCTURE tprorg1.
DATA: END OF gt_result.
DATA: gt_field TYPE slis_t_fieldcat_alv.

*Define Selection Screen
PARAMETERS p_user LIKE usr02-bname OBLIGATORY.
PARAMETERS p_date LIKE sy-datum OBLIGATORY DEFAULT sy-datum .

RANGES r_group FOR agr_define-agr_name.

END-OF-SELECTION.

REFRESH: db_1252, r_group .
r_group-sign = 'I'.
r_group-option = 'EQ'.
* Get User's roles
SELECT agr_name INTO (r_group-low) FROM agr_users WHERE uname = p_user AND to_dat > p_date.
APPEND r_group.
ENDSELECT.

*Get value of roles' Organizational levels
SELECT * FROM agr_1252 INTO CORRESPONDING FIELDS OF TABLE db_1252
WHERE agr_name IN r_group
ORDER BY counter.
IF sy-subrc NE 0.
MESSAGE i036. "没有符合条件的数据,则提示信息退出
EXIT.
ENDIF.
DELETE db_1252 WHERE varbl = space.
*CALL FUNCTION 'PRGN_1252_READ_ORG_LEVELS'
* EXPORTING
* ACTIVITY_GROUP = S_STAT-OBJID
* TABLES
* ORG_LEVELS = DB_STORG
* EXCEPTIONS
* NO_DATA_AVAILABLE = 1
* OTHERS = 2.
SORT db_1252.
*Auth. Object in User Master Maintenance
SELECT * FROM agr_1251 INTO CORRESPONDING FIELDS OF TABLE gt_au_fld
WHERE agr_name IN r_group
ORDER BY field.
PERFORM init_orgs.
LOOP AT gt_au_fld.
IF gt_au_fld-field NE g_old_field.
g_old_field = gt_au_fld-field.
PERFORM is_org USING g_old_field g_var g_ret.
IF g_ret EQ 0.
READ TABLE db_1252 WITH KEY varbl = g_var.
IF sy-subrc = 0.
LOOP AT db_1252 WHERE varbl = g_var.
APPEND db_1252 TO gt_1252.
ENDLOOP.
IF sy-subrc NE 0.
CLEAR gt_1252.
gt_1252-varbl = g_var.
APPEND gt_1252.
ENDIF.
ELSE.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.

SORT gt_1252.
LOOP AT gt_1252.
MOVE-CORRESPONDING gt_1252 TO gt_result.
PERFORM read_org_text USING gt_1252-varbl gt_result-text.
READ TABLE orgebenen WITH KEY varbl = gt_1252-varbl.
IF sy-subrc = 0.
gt_result-fieldname = orgebenen-field.
ENDIF.
APPEND gt_result.
ENDLOOP.
DESCRIBE TABLE gt_result LINES sy-subrc.
IF sy-subrc = 0.
MESSAGE i036. "没有符合条件的数据,则提示信息退出
EXIT.
ELSE.
PERFORM sub_create_field_cat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = gt_field[]
TABLES
t_outtab = gt_result
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDIF.

*&---------------------------------------------------------------------*
*& Form sub_create_field_cat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM sub_create_field_cat.
REFRESH gt_field.
PERFORM sub_field_des USING :
'' '' 'AGR_NAME' '' 'X' '' '' 'Role Name' '20' '' '' gt_field[],
'' '' 'VARBL' '' 'X' '' '' 'Org. Level' '10' '' '' gt_field[],
'' '' 'TEXT' '' '' '' '' 'Org. Des.' '40' '' '' gt_field[],
'' '' 'LOW' '' '' '' '' 'Low Value' '40' '' '' gt_field[],
'' '' 'HIGH' '' '' '' '' 'High Vlaue' '40' '' '' gt_field[].
ENDFORM. " SUB_CREATE_FIELD_CAT
*----------------------------------------------------------------------*
* Form : SUB_FIELD_DES
*----------------------------------------------------------------------*
* Description: Set the fields which will be displayed
*----------------------------------------------------------------------*
*参数说明 *
*---------------------------------------------------------------------*
* im_ref_FIELD---must upper case *
* im_ref_TABLE---internal table name *
* im_FIELDname---must upper case *
* im_TABname ---internal table name *
* im_KEY ---column with key-color AND frozen *
* im_CHECKBOX ---the column is checkbox *
* im_dosum ---total,if total, the field must be sumed *
* im_SELTEX_L ---column Long description of title *
* im_outputlen---column output length
* re_field : 字段格式定义内表
*----------------------------------------------------------------------*
* Modification Log: *
* Date Programmer Correction Number *
*2006-08-10 dev01 增加控制零值是否显示控制参数
*2006-08-12 dev01 增加控制是否显示控制参数
*----------------------------------------------------------------------*
FORM sub_field_des USING im_ref_field TYPE c
im_ref_table TYPE c
im_fieldname TYPE c
im_tabname TYPE c
im_key TYPE c
im_checkbox TYPE c
im_dosum TYPE c
im_seltex_l TYPE c
im_outputlen TYPE i
im_zero TYPE c
im_out TYPE c
re_field TYPE slis_t_fieldcat_alv.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
CLEAR wa_fieldcat.
wa_fieldcat-ref_fieldname = im_ref_field.
wa_fieldcat-ref_tabname = im_ref_table.
wa_fieldcat-fieldname = im_fieldname.
wa_fieldcat-tabname = im_tabname.
wa_fieldcat-key = im_key.
wa_fieldcat-checkbox = im_checkbox.
wa_fieldcat-do_sum = im_dosum.
wa_fieldcat-no_zero = im_zero.
wa_fieldcat-no_out = im_out.
wa_fieldcat-seltext_l = im_seltex_l.
wa_fieldcat-seltext_m = im_seltex_l.
wa_fieldcat-seltext_s = im_seltex_l.
wa_fieldcat-outputlen = im_outputlen.
* wa_fieldcat-col_pos = IM_colpos.
APPEND wa_fieldcat TO re_field.
ENDFORM. "SUB_FIELD_DES
*&---------------------------------------------------------------------*
*& Form INIT_ORGS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM init_orgs.
STATICS: org_init.
IF org_init = space.
org_init = 'X'.
SELECT * FROM usorg_db INTO TABLE orgebenen.
SORT orgebenen.
orgtext[] = orgebenen[].
SORT orgtext BY langu varbl.
ENDIF.
ENDFORM. " INIT_org
*&---------------------------------------------------------------------*
*& Form IS_ORG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FIELD text
* -->VAR text
* -->RET text
*----------------------------------------------------------------------*
FORM is_org USING field var ret.
READ TABLE orgebenen WITH KEY field = field BINARY SEARCH.
IF sy-subrc = 0.
ret = 0.
var = orgebenen-varbl.
ELSE.
ret = 4.
CLEAR var.
ENDIF.
ENDFORM. "IS_ORG

* Text zu einer Variablen (Orgebene) liefern
FORM read_org_text USING name LIKE usvart-varbl
text.
READ TABLE orgtext WITH KEY langu = sy-langu varbl = name
BINARY SEARCH.
IF sy-subrc = 0.
text = orgtext-vtext.
ELSE.
READ TABLE orgtext WITH KEY langu = 'D' varbl = name
BINARY SEARCH.
IF sy-subrc = 0.
text = orgtext-vtext.
ELSE.
text = name.
ENDIF.
ENDIF.
ENDFORM. "read_org_text

分享到:
评论

相关推荐

    abap 常用tcode

    - 新手学习 ABAP 编程时,可以通过 ABAPDOCU 获取详细的教程和指导。 #### BAPI - BAPI 浏览器 - **功能概述**:BAPI(Business Add-In)是 SAP 系统中提供的业务接口,允许外部应用程序与 SAP 系统进行交互。BAPI...

    abap速成教程

    此外,还需要获取Access Key以便访问SAP系统的开发权限。 **4. ABAP Workbench与Dictionary** - **ABAP Workbench**:它是ABAP开发的核心环境,提供了创建、编辑和调试ABAP程序的功能。Workbench中还包括了各种...

    ABAP入门必看资料.pdf

    - **用户授权**: 在SAP系统中,通过角色和权限来控制用户的访问级别。开发者需要了解如何检查用户的授权状态以防止未经授权的操作。 **15. 调用外部程序和程序动态生产** - **调用外部程序**: ABAP支持调用外部程序...

    ABAP三月通 资料

    - 建立ABAP开发环境通常涉及到在SAP系统中设置必要的权限和访问,以及了解如何使用SAP的开发工具,如ABAP工作台(Workbench)进行编程。 **3. AccessKey获取** - AccessKey是在SAP系统中用于访问特定功能或资源...

    sap abap学习三月通

    - **授权**: ABAP 支持基于角色的权限管理,确保用户只能访问他们被授权的数据和功能。 **9. 调用外部程序和程序动态生成** - **外部调用**: ABAP 可以调用其他编程语言编写的程序,增加了系统的灵活性。 - **...

    ABAP程序下载

    描述中提到的“程序下载”,虽然简短,但其含义涵盖了从SAP系统中获取或导出ABAP程序到本地环境的能力。 **标签意义**:“ABAP程序下载”作为标签,强调了内容的核心——即在SAP环境下,如何处理ABAP程序的下载需求...

    ABAP SMOD/CMOD

    在ABAP开发中,包是用来组织和管理程序单元的重要结构。通过将相关的程序单元放入同一个包内,可以提高代码的可读性和可维护性。例如,如果一个CMOD增强被指定到了名为`MEREQ`的包中,那么该增强的所有相关组件都将...

    SAP HR报表开发

    - `HRCM_ORGSTRC_INFO_TABLE_GET`:获取组织结构信息。 - `RH_STRUC_GET`:用于获取组织结构信息。 ##### 5. 宏模块(Macromodules) - **定义**:宏模块是预定义的代码块,可以在多个程序中重用,提高开发效率。 -...

    SAP CRM程序优化案例

    - `CRM_ORGMAN_READ_OW`:用于读取组织结构信息。 - `CRM_PARNTER_READ_OW`:用于读取合作伙伴信息。 - `CRM_STATUS_READ_OW`:用于读取状态信息。 **轻量级MAINTAIN函数示例**: - `CRM_CUSTOMER_H_MAINTAIN_OW`:...

    SAP Query手冊

    - **设置表结构**:用户可以根据需要选择显示哪些字段,并定义这些字段在报表中的排列顺序。 - **执行Table**:这指的是直接从数据库表中提取数据的操作。 - **Database view**:数据库视图是一种虚拟表,它可以基于...

    SAP-PM模块培训教材.pptx

    计划单据处理货物接收/发票接收、 采购单/释放采购单、东莞虎彩1010计划工厂1010维修工厂1010设备管理部设备管理组、Work Center 1机械维修 Work Center 2组织架构介绍 - 工厂维修 (PM)组织结构电气维修组Work ...

    sap 视图动态创建

    - 使用 SAP ABAP 语言编写相关函数和过程,例如 `zview_fcode_get` 来获取构建信息。 - 动态构建视图结构,根据业务逻辑决定包含哪些表和字段,可能用到 `zget_fieldcat_with_table` 和 `zview_fieldcat_conv`。 ...

    学生成绩管理系统dephi +sql

    例如,当用户在界面上点击“查询”按钮时,Dephi会触发相应的事件处理函数,通过ADO或ODBC发送SQL查询命令到SQL-Server,获取结果后更新显示在界面上。 此外,为了保证系统的安全性和稳定性,还需考虑如下几点: - ...

    sap 操作XML(自己的笔记)

    - **允许操作XML**:在SAP系统中,需要确保用户有足够的权限来进行XML相关操作。 - **生成数据工厂及数据流**:数据工厂和数据流是生成XML文档时的重要组成部分,它们负责组织和管理数据。 - **创建文档**:使用相应...

    一张图告诉你SAP顾问用到的表

    10. 用户管理与授权(User Administration and Authorization):SAP系统中的用户管理包括创建用户、分配权限等。授权(Authorization)确保用户仅能访问其被授权的系统功能和数据。 11. 事务代码(Transaction ...

    SAP開發者指導

    这包括了解ABAP报表结构,如SELECT语句,内部表处理,以及如何使用ABAP工作流。 4. **报表实例**:实际的报表开发涉及到理解业务需求,选择合适的报表类型,如ALV(ABAP List Viewer)报表,或自定义屏幕报表。...

    SAP ES 公有云开发-自定义CDS视图并发布到磁贴

    接着,你需要添加业务目录,这是为了确保应用程序在组织结构内具有适当的访问权限和可见性。 4. **发布与查询**: 发布业务目录后,自定义的应用程序就会出现在主页的磁贴上,用户可以直接通过磁贴进行查询和交互...

    100小时学会SAP客户端安装及登陆步骤.rar

    - SAP菜单:通过层次结构组织的业务功能入口。 - SAP报表:用于生成数据报告的工具,如ABAP报表或BW(Business Warehouse)报表。 - SAP工作流:自动化业务流程的工具,定义了任务的顺序和责任人。 100小时的学习...

Global site tag (gtag.js) - Google Analytics