SAP ABAP批量复制PFCG角色并生效

需求

最近碰到一个需求,需要对大批量的PFCG角色进行复制并使其生效

整体流程

1. 检查角色是否存在

PRGN_CHECK_AGR_EXISTS

2. 复制角色

PRGN_COPY_AGR

3. 批量生成参数文件

在这里插入图片描述
批量复制新角色名,填入选择屏幕
在这里插入图片描述
点击在后台 等待生成即可
在这里插入图片描述
出现此消息代表成功
在这里插入图片描述

4. 如果角色用户还是出现未比较,可在PFCG界面选择批量比较

在这里插入图片描述
在这里插入图片描述
批量数据填入选择屏幕 出现以下消息代表比较成功
在这里插入图片描述

细节

上载模板

旧角色新角色
ZROLE1ZROLE_NEW1
ZROLE2ZROLE_NEW2

代码:

1.	*&---------------------------------------------------------------------*  
2.	*& Report Z_CREATE_ROLE  
3.	*&---------------------------------------------------------------------*  
4.	*&  
5.	*&---------------------------------------------------------------------*  
6.	REPORT Z_CREATE_ROLE.  
7.	  
8.	  
9.	DATA: IT_DATA TYPE STANDARD TABLE OF ZZS_ALSMEX_TABLINE WITH HEADER LINE.  
10.	FIELD-SYMBOLS: <WA_DATA> TYPE ZZS_ALSMEX_TABLINE.  
11.	  
12.	* 导入的EXCEL格式  
13.	TYPES: BEGIN OF IT_FILE,  
14.	         ROLE_NAME1(30) TYPE C,    "复制来源  
15.	         ROLE_NAME2(30) TYPE C,    "创建内容  
16.	       END OF IT_FILE.  
17.	DATA: WA_FILE TYPE IT_FILE.  
18.	DATA: LT_FILE TYPE STANDARD TABLE OF IT_FILE. "与EXCEL格式保持一致  
19.	  
20.	DATA: ACT_NAME TYPE XUPROFNAME.  
21.	  
22.	DATA: LT_AGR_USERS TYPE TABLE OF AGR_USERS,  
23.	      LT_PT1016    TYPE TABLE OF PT1016,  
24.	      LT_PT1250    TYPE TABLE OF PT1250,  
25.	      LT_PT1251    TYPE TABLE OF PT1251,  
26.	      WA_PT1016    LIKE LINE OF LT_PT1016.  
27.	  
28.	  
29.	* 画屏  
30.	SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.  
31.	PARAMETERS: FNAME1 TYPE RLGRAP-FILENAME OBLIGATORY.  
32.	SELECTION-SCREEN END OF BLOCK BLK1.  
33.	  
34.	INITIALIZATION.  
35.	*获取本地文件  
36.	AT SELECTION-SCREEN ON VALUE-REQUEST FOR FNAME1." SEACH HELP  
37.	  
38.	  CALL FUNCTION 'WS_FILENAME_GET'  
39.	    EXPORTING  
40.	      MASK             = ',EXCEL FILE,*.XLS;*.XLSX;'  
41.	      MODE             = 'O' "S为保存,O为打开  
42.	    IMPORTING  
43.	      FILENAME         = FNAME1  
44.	    EXCEPTIONS  
45.	      INV_WINSYS       = 1  
46.	      NO_BATCH         = 2  
47.	      SELECTION_CANCEL = 3  
48.	      SELECTION_ERROR  = 4  
49.	      OTHERS           = 5.  
50.	  
51.	START-OF-SELECTION.  
52.	  PERFORM INTERNAL_TABLE.  
53.	  PERFORM COPY_ROLE.  
54.	  
55.	END-OF-SELECTION.  
56.	  
57.	  
58.	*获取数据转化为内表  
59.	FORM INTERNAL_TABLE.  
60.	  CALL FUNCTION 'Z_SSF_EXCEL_TO_INTERNAL_TABLE'  
61.	    EXPORTING  
62.	      FILENAME                = FNAME1  
63.	      I_BEGIN_COL             = '1'     "起始列  
64.	      I_BEGIN_ROW             = '2'     "起始行  
65.	      I_END_COL               = '2'     "终结列  
66.	      I_END_ROW               = '65535' "终结行  
67.	    TABLES  
68.	      INTERN                  = IT_DATA  
69.	    EXCEPTIONS  
70.	      INCONSISTENT_PARAMETERS = 1  
71.	      UPLOAD_OLE              = 2  
72.	      OTHERS                  = 3.  
73.	  IF IT_DATA[] IS INITIAL.  
74.	    MESSAGE '清单中无数据' TYPE 'E'.  
75.	    RETURN.  
76.	  ENDIF.  
77.	  
78.	  SORT IT_DATA BY ROW.  
79.	  LOOP AT IT_DATA ASSIGNING <WA_DATA>.  
80.	    CASE <WA_DATA>-COL.  
81.	      WHEN '0001'.  
82.	        WA_FILE-ROLE_NAME1      = <WA_DATA>-VALUE.  
83.	      WHEN '0002'.  
84.	        WA_FILE-ROLE_NAME2      = <WA_DATA>-VALUE.  
85.	    ENDCASE.  
86.	  
87.	    AT END OF ROW.  
88.	      APPEND WA_FILE TO LT_FILE.  
89.	      CLEAR WA_FILE.  
90.	    ENDAT.  
91.	  ENDLOOP.  
92.	ENDFORM.  
93.	  
94.	  
95.	FORM COPY_ROLE.  
96.	  
97.	  LOOP AT LT_FILE INTO WA_FILE.  
98.	*检查角色是否存在  
99.	    CALL FUNCTION 'PRGN_CHECK_AGR_EXISTS'  
100.	      EXPORTING  
101.	        ACTIVITY_GROUP = WA_FILE-ROLE_NAME1.  
102.	    IF SY-SUBRC = 0.  
103.	*复制角色  
104.	      CALL FUNCTION 'PRGN_COPY_AGR'  
105.	        EXPORTING  
106.	          SOURCE_AGR       = WA_FILE-ROLE_NAME1  
107.	          TARGET_AGR       = WA_FILE-ROLE_NAME2  
108.	          DISPLAY_MESSAGES = ''.  
109.	  
110.	    ENDIF.  
111.	  ENDLOOP.  
112.	ENDFORM.  

小结

代码不多 操作方便快捷

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些常见的SAP ABAP面试题,但并不会提供答案,因为这些问题需要您自己思考和回答。以下是一些可能会被问到的SAP ABAP面试题: 1. SAP ABAP是什么? 2. 如何在SAP ABAP中定义变量? 3. 什么是函数模块? 4. 如何在SAP ABAP中处理异常? 5. 如何在SAP ABAP中进行调试? 6. 什么是内表?如何定义内表? 7. 如何在SAP ABAP中处理日期和时间? 8. 如何在SAP ABAP中处理字符串? 9. 如何在SAP ABAP中使用SELECT语句? 10. 如何在SAP ABAP中使用LOOP语句? 11. 如何在SAP ABAP中使用IF语句? 12. 如何在SAP ABAP中使用CASE语句? 13. 如何在SAP ABAP中使用BREAK-POINT语句? 14. 如何在SAP ABAP中使用MESSAGE语句? 15. 如何在SAP ABAP中使用CATCH语句? 16. 什么是数据字典?如何定义数据字典对象? 17. 如何在SAP ABAP中使用ABAP OO? 18. 如何在SAP ABAP中使用ALV报表? 19. 如何在SAP ABAP中使用BAPI? 20. 如何在SAP ABAP中使用RFC? 21. 如何在SAP ABAP中使用IDoc? 22. 如何在SAP ABAP中使用ALE? 23. 如何在SAP ABAP中使用EDI? 24. 如何在SAP ABAP中使用BDC? 25. 如何在SAP ABAP中使用LSMW? 26. 如何在SAP ABAP中使用用户退出? 27. 如何在SAP ABAP中使用BADI? 28. 如何在SAP ABAP中使用Enhancement Spot? 29. 如何在SAP ABAP中使用Enhancement Section? 30. 如何在SAP ABAP中使用Function Exit? 31. 如何在SAP ABAP中使用事件? 32. 如何在SAP ABAP中使用ABAP List Viewer(ALV)? 33. 如何在SAP ABAP中使用SAP Query? 34. 如何在SAP ABAP中使用Smart Forms? 35. 如何在SAP ABAP中使用Adobe Forms? 36. 如何在SAP ABAP中使用BSP? 37. 如何在SAP ABAP中使用Web Dynpro? 38. 如何在SAP ABAP中使用SAPUI5? 39. 如何在SAP ABAP中使用Fiori Launchpad? 40. 如何在SAP ABAP中使用SAP HANA?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ggreekn

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值