SAP ABAP ZBA_C001 批量新建用户和增加角色程序

 

 

*&---------------------------------------------------------------------*
*& Report ZBA09
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZBA09.



******************************************
* 批量新建用户和增加角色程序
* 功能:使用BAPI
* 作者:刘欣
* 2013-6-21 QQ:522929
******************************************
*****导入数据文件数据格式如下*************
*用户名      部门       角色
*ZTEST22 测试部门 ZDOWNLOAD_MXW2006
*ZTEST22 测试部门 ABCDE
*ZTEST23 测试部门 BATCH
*******************************************
DATA: BEGIN OF urecord,
        uname(012),
        depart(40),
        agename(035),
      END OF urecord.
DATA record LIKE urecord OCCURS 0 WITH HEADER LINE.

DATA: USERNAME LIKE BAPIBNAME,      "用户名
      PASSWORD LIKE BAPIPWD,        "密码
      LOGONDATA LIKE BAPILOGOND,    "登录数据
      ADDRESS LIKE BAPIADDR3,      "地址信息
      DEFAULTS LIKE BAPIDEFAUL,    "默认
      RETURN LIKE STANDARD TABLE OF BAPIRET2 WITH
      HEADER LINE.       "返

DATA: myUSERNAME LIKE BAPIBNAME-BAPIBNAME,
      myDEPARTMENT LIKE BAPIADDR3-DEPARTMENT,
      myACTIVITYGROUPS LIKE TABLE OF BAPIAGR WITH
HEADER LINE,
      myRETURN LIKE STANDARD TABLE OF BAPIRET2 WITH
HEADER LINE.

*声明一个输入框,变量是dataset
PARAMETERS: dataset TYPE localfile.
*屏幕选择输入框,去打开取文件名form.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR dataset.
PERFORM open_file USING dataset.

START-OF-SELECTION.
PERFORM import_from_file TABLES record[] USING dataset.
*如果内表中没内容,退出
IF record[] IS INITIAL.
    EXIT.
ENDIF.
*整理一下内表
DELETE record WHERE uname = ''.
SORT record BY uname(012).

LOOP AT record.
myUSERNAME  = record-uname.
myDEPARTMENT = record-depart.
myACTIVITYGROUPS-AGR_NAME = record-agename.
append myACTIVITYGROUPS to myACTIVITYGROUPS.

*如果uname内容改变,执行下面的代码.
      AT END OF uname.
            USERNAME-BAPIBNAME  = myUSERNAME.
            PASSWORD-BAPIPWD = '123456'.
            LOGONDATA-GLTGV = '20200101'.
            LOGONDATA-GLTGB = '99991231'.
            LOGONDATA-USTYP = 'A'.
            LOGONDATA-CLASS = ''.
            LOGONDATA-ACCNT = ''.
            LOGONDATA-TZONE = 'UTC+8'.
            LOGONDATA-LTIME = ''.
            LOGONDATA-BCODE = ''.
            LOGONDATA-CODVN = ''.
            ADDRESS-FIRSTNAME = ''.
            ADDRESS-LASTNAME = myDEPARTMENT.
            ADDRESS-TITLE_P = '0002'.
            ADDRESS-DEPARTMENT = '离职'.
            DEFAULTS-DCPFM = ''.
            DEFAULTS-DATFM = ''.
            CALL FUNCTION 'BAPI_USER_CREATE1'
              EXPORTING
                username         = USERNAME
                logondata        = LOGONDATA
                password         = PASSWORD
                DEFAULTS         = DEFAULTS
                address          = ADDRESS
                LOCK_LOCALLY     = 'X'
              tables
                return           = RETURN.
*创建用户消息返回
               LOOP AT RETURN.
              WRITE: / RETURN-MESSAGE.
              ENDLOOP.


            CALL FUNCTION 'BAPI_USER_ACTGROUPS_ASSIGN'
              EXPORTING
                USERNAME         = myUSERNAME
              TABLES
                ACTIVITYGROUPS   = myACTIVITYGROUPS
                RETURN           = myRETURN.

            COMMIT WORK.
*保存角色返回消息
            LOOP AT myRETURN.
            WRITE: / myRETURN-MESSAGE.
            ENDLOOP.
            CLEAR myACTIVITYGROUPS.
            REFRESH myACTIVITYGROUPS.
      ENDAT.
ENDLOOP.







*--------------取文件名的FORM-------------
FORM open_file CHANGING x TYPE localfile .
  CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
            def_filename     = ''
            def_path         = ''
            mask             = ',*.txt,*.txt.'
            mode             = '0'
            TITLE            = '取文件名'
       IMPORTING
            filename         = x
       EXCEPTIONS
            inv_winsys       = 01
            no_batch         = 02
            selection_cancel = 03
            selection_error  = 04.
ENDFORM.
*--------把文件放内表的FORM----------------
FORM import_from_file TABLES record_temp LIKE record[]
                      USING x TYPE localfile.
  DATA: flength TYPE i.
  CALL FUNCTION 'WS_UPLOAD'
       EXPORTING
            filename            = x
            filetype            = 'DAT'
       IMPORTING
            filelength          = flength
       TABLES
            data_tab            = record_temp
       EXCEPTIONS
            conversion_error    = 1
            file_open_error     = 2
            file_read_error     = 3
            invalid_table_width = 4
            invalid_type        = 5.
ENDFORM.

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值