SAP 用户授权清单

*---------------------------------------------------------------
* REPORT NAME : 宣告程序名称及报表格式
*------------------------------------------------------------------


REPORT Z_BB_010  NO STANDARD PAGE HEADING.

*声明数据库表
TABLES:UST04,AGR_PROF,USER_ADDR,ADCP.

*for alv
TYPE-POOLS: slis.
DATA:
  i_fieldcat_alv TYPE slis_t_fieldcat_alv, "定义列标题(属性/信息)
  i_layout TYPE slis_layout_alv,           "alv格式
  i_fieldcat TYPE slis_fieldcat_alv,       "
  i_events TYPE slis_t_event,              "alv事件
  w_events LIKE LINE OF i_events,
  i_list_comments TYPE slis_t_listheader,  "alv表单标题区域设置
  w_list_comments LIKE LINE OF i_list_comments,
  w_repid LIKE sy-repid.                   "当前程序


*定义内表
*1.选择屏幕
DATA:
  BEGIN OF hd_itab OCCURS 0,
    BNAME LIKE USER_ADDR-BNAME,
    NAME_TEXTC LIKE USER_ADDR-NAME_TEXTC,
    DEPARTMENT LIKE USER_ADDR-DEPARTMENT,
    PROFILE LIKE UST04-PROFILE,
    AGR_NAME LIKE AGR_PROF-AGR_NAME,
    PTEXT LIKE AGR_PROF-PTEXT,
    TEXT LIKE AGR_TEXTS-TEXT,
  END OF hd_itab.

*定义选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
SELECT-OPTIONS:S_BNAME FOR USER_ADDR-BNAME.
SELECT-OPTIONS:s_DEPART FOR ADCP-DEPARTMENT.
SELECTION-SCREEN END OF BLOCK b1.

*程序初始化
INITIALIZATION.
  t1 = '查询条件'.

*数据选择
START-OF-SELECTION.
  PERFORM getdata.      "读取数据
  PERFORM events_build. "alv事件
  PERFORM layout_build. "定义alv格式属性
  PERFORM fields_build. "定义列标题信息
  PERFORM display_data. "显示数据

END-OF-SELECTION.

  DATA:
    pagenum TYPE VALUE 1. "报表页码

END-OF-PAGE.
  pagenum = pagenum + 1.


*at user-command.
*  case sy-ucomm.
*      when 'REFR'.
*      CLEAR hd_itab.
*      CLEAR hd_itab[].
*      perform getdata.
**     PERFORM DATA_OUTPUT.
*  ENDCASE.
*&--------------------------------------------------------------------*
*&      Form  getdata
*&--------------------------------------------------------------------*
*       获取数据
*---------------------------------------------------------------------*
FORM getdata.

  CLEAR hd_itab.
  CLEAR hd_itab[].                 "init_data
   SELECT USER_ADDR~BNAME USER_ADDR~NAME_TEXTC USER_ADDR~DEPARTMENT UST04~PROFILE
    INTO (HD_ITAB-BNAME, HD_ITAB-NAME_TEXTC,HD_ITAB-DEPARTMENT, HD_ITAB-PROFILE)
    FROM USER_ADDR
    JOIN UST04 ON USER_ADDR~BNAME = UST04~BNAME
    WHERE USER_ADDR~BNAME IN S_BNAME
      AND USER_ADDR~DEPARTMENT IN s_DEPART.
   SELECT SINGLE AGR_NAME PTEXT FROM AGR_PROF
     INTO (HD_ITAB-AGR_NAME,HD_ITAB-PTEXT)
     WHERE PROFILE = HD_ITAB-PROFILE+(10).
   SELECT SINGLE TEXT FROM AGR_TEXTS
     INTO HD_ITAB-TEXT
     WHERE AGR_NAME = HD_ITAB-AGR_NAME
       AND SPRAS = 1.
    APPEND HD_ITAB.
    CLEAR HD_ITAB.
  ENDSELECT.

 SORT HD_ITAB BY  BNAME AGR_NAME.
ENDFORM.     "getdata


*&--------------------------------------------------------------------*
*&      Form  layout_build
*&--------------------------------------------------------------------*
*       定义ALV格式属性
*---------------------------------------------------------------------*
FORM layout_build .
  i_layout-zebra = 'X'.
  i_layout-detail_popup = 'X'.
*  i_layout-no_vline = ' '.
*  i_layout-colwidth_optimize = 'X'.
*  i_layout-detail_initial_lines = 'X'.
  i_layout-detail_titlebar = '详细内容'.
  i_layout-f2code = '&ETA'.
* i_layout-info_fieldname = 'COLOR'.  "颜色值
  i_layout-detail_popup = 'X'.
 i_layout-detail_titlebar = 'X'.
  i_layout-no_colhead = ''.
  w_repid = sy-repid.
ENDFORM.                    " layout_build

*&--------------------------------------------------------------------*
*&      Form  fields_build
*&--------------------------------------------------------------------*
*      设置报表显示列属性信息
*---------------------------------------------------------------------*
FORM fields_build .
  REFRESH i_fieldcat_alv.
  CLEAR i_fieldcat.
  DATA colnum TYPE VALUE 1.

  i_fieldcat-col_pos = colnum.
  i_fieldcat-fieldname = 'BNAME'.
  i_fieldcat-seltext_s = '用户'.
  i_fieldcat-seltext_m = '用户'.
  i_fieldcat-seltext_l = '用户'.
  i_fieldcat-reptext_ddic = '用户'.
  i_fieldcat-lzero = 'X'.
  i_fieldcat-key = 'X'.
*  i_fieldcat-hotspot = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  colnum = colnum + 1.
  i_fieldcat-col_pos = colnum.
  i_fieldcat-fieldname = 'NAME_TEXTC'.
  i_fieldcat-seltext_s = '姓名'.
  i_fieldcat-seltext_m = '姓名'.
  i_fieldcat-seltext_l = '姓名'.
  i_fieldcat-reptext_ddic = '姓名'.
  i_fieldcat-lzero = 'X'.
  i_fieldcat-key = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  colnum = colnum + 1.
  i_fieldcat-col_pos = colnum.
  i_fieldcat-fieldname = 'DEPARTMENT'.
  i_fieldcat-seltext_s = '部门'.
  i_fieldcat-seltext_m = '部门'.
  i_fieldcat-seltext_l = '部门'.
  i_fieldcat-reptext_ddic = '部门'.
  i_fieldcat-lzero = 'X'.
*  i_fieldcat-key = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  colnum = colnum + 1.
  i_fieldcat-col_pos = colnum.
  i_fieldcat-outputlen = '20'.
  i_fieldcat-fieldname = 'AGR_NAME'.
  i_fieldcat-seltext_s = '角色'.
  i_fieldcat-seltext_m = '角色'.
  i_fieldcat-seltext_l = '角色'.
  i_fieldcat-reptext_ddic = '角色'.
  i_fieldcat-lzero = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

  colnum = colnum + 1.
  i_fieldcat-col_pos = colnum.
  i_fieldcat-outputlen ='30'.
  i_fieldcat-fieldname = 'TEXT'.
  i_fieldcat-seltext_s = '角色描述'.
  i_fieldcat-seltext_m = '角色描述'.
  i_fieldcat-seltext_l = '角色描述'.
  i_fieldcat-reptext_ddic = '角色描述'.
  i_fieldcat-lzero = 'X'.
*  i_fieldcat-key = 'X'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.


  colnum = colnum + 1.
  i_fieldcat-col_pos = colnum.
  i_fieldcat-outputlen ='60'.
  i_fieldcat-fieldname = 'PROFILE'.
  i_fieldcat-seltext_s = '参数文件'.
  i_fieldcat-seltext_m = '参数文件'.
  i_fieldcat-seltext_l = '参数文件'.
  i_fieldcat-reptext_ddic = '参数文件'.
  APPEND i_fieldcat TO i_fieldcat_alv.
  CLEAR i_fieldcat.

ENDFORM.                    " fields_build
*&--------------------------------------------------------------------*
*&      Form  display_data
*&--------------------------------------------------------------------*
*       显示报表内容
*---------------------------------------------------------------------*
FORM display_data .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = w_repid
      is_layout               = i_layout
      it_fieldcat             = i_fieldcat_alv[]
      it_events               = i_events[]
*      i_grid_title            = '                                  '
      i_callback_user_command = 'USER_COMMAND'
      i_save                  = 'A'
    TABLES
      t_outtab                = hd_itab.

*  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  ENDIF.
ENDFORM.                    " display_data
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM user_command USING i_ucomm LIKE sy-ucomm
is_selfield TYPE slis_selfield.                             "#EC CALLED
  CASE i_ucomm.
    WHEN '&IC1'" Pick
      READ TABLE hd_itab INDEX is_selfield-tabindex.

  ENDCASE.
ENDFORM. " USER_COMMAND

*&--------------------------------------------------------------------*
*&      Form  whole_toolbar
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->EXTAB      text
*---------------------------------------------------------------------*
FORM whole_toolbar USING extab TYPE slis_t_extab.           "#EC CALLED
  SET PF-STATUS 'WHOLE_TOOLBAR' EXCLUDING extab.
ENDFORM.                    "whole_toolbar

*&--------------------------------------------------------------------*
*&      Form  alv_top_of_page
*&--------------------------------------------------------------------*
*       页头格式设置
*---------------------------------------------------------------------*
FORM alv_top_of_page.
  CLEAR: i_list_comments.
  w_list_comments-typ = 'H'.
  w_list_comments-key = ''.
  w_list_comments-info = '用户授权清单'.
  APPEND w_list_comments TO i_list_comments.
  CLEAR w_list_comments.

  DATA: data_temp(16).
  WRITE sy-datum TO: data_temp MM/DD/YYYY.
  CONCATENATE '日期: ' data_temp INTO data_temp.
  CONCATENATE data_temp '                         SAP部' INTO data_temp.
  w_list_comments-typ = 'S'.
  w_list_comments-key = ''.
  w_list_comments-info = data_temp.
  APPEND w_list_comments TO i_list_comments.
  CLEAR w_list_comments.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = i_list_comments
      i_logo             = 'ENJOYSAP_LOGO' "标题图标.
      i_end_of_list_grid = 'X'.
*      i_logo             = 'ENJOYSAP_LOGO'.    "标题图标
ENDFORM.                    "alv_top_of_page


*&--------------------------------------------------------------------*
*&      Form  alv_end_of_list
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM alv_end_of_list.
*  CLEAR: i_list_comments.
*  w_list_comments-typ = 'S'.
*  w_list_comments-info = 'SAP部'.
*  APPEND w_list_comments TO i_list_comments.
*  CLEAR w_list_comments.
*

*  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
*    EXPORTING
*      it_list_commentary = i_list_comments
*      i_logo             = 'ENJOYSAP_LOGO' "标题图标
*      i_end_of_list_grid = 'X'.
ENDFORM.                    "alv_end_of_list
*
*&--------------------------------------------------------------------*
*&      Form  events_build
*&--------------------------------------------------------------------*
*       定义ALV事件
*---------------------------------------------------------------------*
FORM events_build .
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = i_events.

  READ TABLE i_events WITH KEY name = 'TOP_OF_PAGE'
                      INTO w_events.
  IF sy-subrc = 0.
    MOVE 'ALV_TOP_OF_PAGE' TO w_events-form.
    MODIFY i_events FROM w_events INDEX sy-tabix.
  ENDIF.

  READ TABLE i_events INTO w_events WITH KEY name = 'USER_COMMAND'.
  IF sy-subrc EQ 0.
    w_events-name = 'USER_COMMAND'.
    MODIFY i_events FROM w_events INDEX sy-tabix.
  ENDIF.

  READ TABLE i_events WITH KEY name = 'END_OF_LIST'"slis_ev_end_of_page
                      INTO w_events.
  IF sy-subrc = 0.
    MOVE 'ALV_END_OF_LIST' TO w_events-form.
    MODIFY i_events FROM w_events INDEX sy-tabix.
  ENDIF.

ENDFORM.                    " events_build
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值