首页 > 其他分享 >ABAP 用户角色导入

ABAP 用户角色导入

时间:2023-05-29 11:00:12浏览次数:38  
标签:wa 角色 list uname ABAP 导入 ws user TYPE

*&---------------------------------------------------------------------*
*& Report Z_USER_ROLES_IMPORT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_USER_ROLES_IMPORT.


TYPE-POOLS:truxs.

DATA:BEGIN OF ws_list,
       username TYPE bapibname-bapibname,
       agr_name TYPE bapiagr-agr_name,
       from_dat TYPE bapiagr-from_dat,
       to_dat   TYPE bapiagr-to_dat,
     END OF ws_list,
     it_list LIKE TABLE OF ws_list.

DATA: BEGIN OF wa_user,
        uname TYPE sy-uname,
      END OF wa_user,
      it_user LIKE TABLE OF wa_user WITH KEY uname.

DATA:it_role   LIKE bapiagr OCCURS 0 WITH HEADER LINE,
     it_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

TYPES: BEGIN OF ty_log,
         username TYPE bapibname-bapibname, " 账号
         message  TYPE char70, " 消息
       END OF ty_log.

DATA: g_name    TYPE bapibname-bapibname,
      gw_namein TYPE bapibname,
      gw_data   TYPE bapilogond,
      gw_pwd    TYPE bapipwd,
      gw_df     TYPE bapidefaul,
      gw_add    TYPE bapiaddr3,
      gt_re     TYPE STANDARD TABLE OF bapiret2,
      gw_re     TYPE bapiret2.
*----------------------------------------------------------------------*
* 数据定义
*----------------------------------------------------------------------*
DATA git_excel TYPE kcde_intern_struc OCCURS 0 WITH HEADER LINE.
DATA: gt_upload LIKE TABLE OF ws_list WITH HEADER LINE,
      gw_upload LIKE ws_list.

DATA: success_rec TYPE i,
      error_rec   TYPE i.


*———————————————————————-*
* Selection Screen
*———————————————————————-*
SELECTION-SCREEN BEGIN OF BLOCK bl02 WITH FRAME TITLE TEXT-002.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bl02.

*********************************************************************
* AT SELECTION-SCREEN
*********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM frm_open_file.


START-OF-SELECTION.

  WRITE:/ '开始执行....'.

  PERFORM prm_upload.

END-OF-SELECTION.
  WRITE:/ '执行完成...'.

*&---------------------------------------------------------------------*
*&      Form  FRM_OPEN_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_open_file .
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      def_filename     = space
      def_path         = p_file
      mask             = TEXT-001
      mode             = 'O'
    IMPORTING
      filename         = p_file
    EXCEPTIONS
      selection_cancel = 0.

ENDFORM.                    " FRM_OPEN_FILE

*&---------------------------------------------------------------------*
*&      Form  PRM_UPLOAD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM prm_upload .
*从已知文件名读入内表
  CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
    EXPORTING
      filename                = p_file
      i_begin_col             = 1
      i_begin_row             = 2
      i_end_col               = 4
      i_end_row               = 65535
    TABLES
      intern                  = git_excel[]
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
    MESSAGE  '打开文件错误,请检查文件,确保关闭文件!' TYPE 'E'.
    STOP.
  ENDIF.
  REFRESH gt_upload.
  CLEAR gt_upload.

  LOOP AT git_excel .
    CASE git_excel-col.
      WHEN '001'."账号
        MOVE git_excel-value TO ws_list-username.
      WHEN '002'."角色
        MOVE git_excel-value TO ws_list-agr_name.
      WHEN '003'."有效期开始
        MOVE git_excel-value TO ws_list-from_dat.
      WHEN '004'."有效期截止
        MOVE git_excel-value TO ws_list-to_dat.
    ENDCASE.
    AT END OF row.
      APPEND ws_list TO it_list.
      CLEAR  ws_list.
    ENDAT.

  ENDLOOP.

  CHECK it_list IS NOT INITIAL.

  LOOP AT it_list INTO ws_list.
    wa_user-uname = ws_list-username.
    APPEND wa_user TO it_user.
    CLEAR:ws_list,wa_user.
  ENDLOOP.

  SORT it_user BY uname.
  DELETE ADJACENT DUPLICATES FROM it_user.
  SORT it_list BY username.

  LOOP AT it_user INTO wa_user.

    CLEAR:it_role[],it_return[].
    LOOP AT it_list INTO ws_list WHERE username EQ wa_user-uname.
      MOVE-CORRESPONDING ws_list TO it_role.
      APPEND it_role.
      CLEAR ws_list.
    ENDLOOP.

    PERFORM pro_get_user_role USING wa_user-uname.

    CHECK it_role[] IS NOT INITIAL.

    CALL FUNCTION 'BAPI_USER_ACTGROUPS_ASSIGN'
      EXPORTING
        username       = wa_user-uname
      TABLES
        activitygroups = it_role[]
        return         = it_return[].
    LOOP AT it_return WHERE type EQ 'E' OR type EQ 'A'.
      EXIT.
    ENDLOOP.
    IF sy-subrc <> 0.
      WRITE:/ '用户:',wa_user-uname,'->角色分配成功...'.
    ELSE.
      FORMAT COLOR COL_NEGATIVE.
      WRITE:/ '用户:',wa_user-uname,'->角色分配失败...'.
      FORMAT COLOR OFF.
    ENDIF.

    CLEAR wa_user.
  ENDLOOP.


ENDFORM.

FORM pro_get_user_role USING VALUE(g_uname).

  DATA:lt_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
       lt_groups LIKE bapiagr OCCURS 0 WITH HEADER LINE.

  CLEAR:lt_return[],lt_groups[].

  CALL FUNCTION 'BAPI_USER_GET_DETAIL'
    EXPORTING
      username       = g_uname
*     CACHE_RESULTS  = 'X'
*   IMPORTING
*     LOGONDATA      =
*     DEFAULTS       =
*     ADDRESS        =
*     COMPANY        =
*     SNC            =
*     REF_USER       =
*     ALIAS          =
*     UCLASS         =
*     LASTMODIFIED   =
*     ISLOCKED       =
*     IDENTITY       =
*     ADMINDATA      =
*     DESCRIPTION    =
    TABLES
*     PARAMETER      =
*     PROFILES       =
      activitygroups = lt_groups
      return         = lt_return
*     ADDTEL         =
*     ADDFAX         =
*     ADDTTX         =
*     ADDTLX         =
*     ADDSMTP        =
*     ADDRML         =
*     ADDX400        =
*     ADDRFC         =
*     ADDPRT         =
*     ADDSSF         =
*     ADDURI         =
*     ADDPAG         =
*     ADDCOMREM      =
*     PARAMETER1     =
*     GROUPS         =
*     UCLASSSYS      =
*     EXTIDHEAD      =
*     EXTIDPART      =
*     SYSTEMS        =
    .

  CHECK lt_groups[] IS NOT INITIAL.
  LOOP AT lt_groups.
    LOOP AT it_role WHERE agr_name EQ lt_groups-agr_name AND to_dat EQ lt_groups-to_dat.
      EXIT.
    ENDLOOP.
    IF sy-subrc <> 0.
      MOVE-CORRESPONDING lt_groups TO it_role.
      APPEND it_role.
    ENDIF.

    CLEAR:lt_groups,it_role.
  ENDLOOP.


ENDFORM.

 

标签:wa,角色,list,uname,ABAP,导入,ws,user,TYPE
From: https://www.cnblogs.com/ZJY-1314/p/17439846.html

相关文章

  • ABAP 通用自建表批到
    *&---------------------------------------------------------------------**&ReportZUPLOAD_TABLE*&---------------------------------------------------------------------**&*&------------------------------------------------------------......
  • Node模块导入规则总结
    @目录node模块总结node模块引入的步骤:模块分类node支持的模块系统ESModuleCommonJS模块加载CommonJS模块引入路径分析文件定位带扩展名的文件定位不带扩展名的文件定位ESM模块引入路径分析文件定位带路径不带路径(裸说明符)模块加载器总结对比CommonJS模块加载器ECMAScript模块加......
  • RefsUtil 是 Windows 下一款用于管理 REFS 文件系统的实用工具,它提供了丰富的功能和命
    RefsUtil是Windows下一款用于管理REFS文件系统的实用工具,它提供了丰富的功能和命令行界面,可用于创建、修改、检查和修复REFS分区,以及导出和导入数据等操作。以下是一些使用RefsUtil工具的示例:创建REFS分区要创建一个新的REFS分区,可以使用以下命令:CopyCoderef......
  • CSP 202206-3 角色授权
    链接大模拟,用了map,但是TLE了;好在有部分分,能得80.代码如下#include<bits/stdc++.h>usingnamespacestd;intconstN=5005,M=505;intn,m,q,ID[M]; //ID[关联编号]=角色编号stringcurname,curop,curkd,curnm;//当前操作的用户,操作,资源种类,资源名称map<st......
  • java实现导入word模板导入试题
    ​ 最近有一个项目需要将一个word文档中的试题数据导入,并存储到数据库中。试题类型包括:单选题、多选题、判断题、填空题、简答题。支持图片导入(我的这篇是借鉴JAVA实现Excel、Word模板导入-JAVA-华仔部落,javapoi解析上传word试卷(题库管理系统)-爱码网)这两位大神的。废话......
  • 如何通过Python将JSON格式文件导入redis?
    摘要:如果希望将JSON文件导入到Redis中,首先要做的就是连接到redis服务。本文分享自华为云社区《Python将JSON格式文件导入redis,多种方法》,作者:梦想橡皮擦。在导入前需要先确定你已经安装Redis,并且可以启动相关服务。windows上启动redis的命令是redis-server.exer......
  • ABAP-屏幕设计-上门拜访动态切换
    *&---------------------------------------------------------------------**&ReportZHQ_01_04*&*&---------------------------------------------------------------------**&*&*&-------------------------------------------------......
  • workbench导入csv文件时候出现的报错
    问题一:解决办法:把csv文件的编码从什么utf-8、gbk更改为gb2312就可以成功导入了。我更改编码的方式是用的VS-code,1.用vscode打开。2.点击右下角编码2.点击通过编码保存,找到gb2312点击保存为新文件就可以成功导入了。问题二:ERROR:Importdatafile:("Column'book_img'specifiedt......
  • clickhouse导入csv文件
    clickhouse导入csv格式文件内容参考如下:UlHtlFVg,2023-04-2302:13:34,APP,Go1KtO,1682187214,2023-04-2302:13:34,trunck,APP_START,,,,PURvq4,list2,78IaN6f9,sanxing,x5,sanxing,sanxing,5G,移动,andriod,x4,x1.2,,,10.11.1.11,,,1,1804,1412,china,江西省,九江,,,1412,,1804,......
  • ABAP:CO11N,CO13保存前增强
    SE18:WORKORDER_CONFIRMMETHODif_ex_workorder_confirm~at_save.DATA:s_vornrTYPERANGEOFresb-vornr.DATA:lv_vornrLIKELINEOFs_vornr.DATA:lv_gmngaTYPEafru-gmnga,lv_mengeTYPEmseg-menge,lv_menge_s......