在SAP中如何批量快速创建角色(含多公司)

痛点:

1、角色X公司代码或者工厂会导致角色数量非常多,通常有几百上千角色需要创建;

2、角色创建的名称和代码有一定的格式要求;

3、角色包含的参数文件众多

总结来说维护权限的工作量很大,做过SAP的顾问应该都了解

解决办法:

直接上步骤:

1、导出表角色表AGR_DEFINE的的角色清单,获取被复制的对象。如demo角色未建立的自己先建立一下;

2、使用python组合被复制的角色及待生成的公司清单,如原始有20个角色,待生成的公司代码有8个,那么生成出的角色会有160个;

代码如下:

'''
@File    :   newexcel.py
@Time    :   2025/03/11 13:48:06
@Author  :    
@Version :   1.0
@Desc    :   将两个sheet中的数据进行组合,并保存到新的sheet中
'''



import pandas as pd

# 定义文件路径,并确保扩展名为小写
file_path = r"C:\Users\Desktop\系统角色清单.xlsx"

# 读取Excel文件中的sheet1和sheet2
sheet1 = pd.read_excel(file_path, sheet_name="Sheet1")
sheet2 = pd.read_excel(file_path, sheet_name="Sheet2")

# # 检查并打印列名
# print("Sheet1 Columns:", sheet1.columns)
# print("Sheet2 Columns:", sheet2.columns)

# 根据实际的列名调整下面的变量值
col_name_sheet1_A = "角色"  # Sheet1的实际A列名
col_name_sheet1_B = "简短角色描述"  # Sheet1的实际B列名
# Sheet2只有一个未命名的列,我们直接使用位置索引来获取第一列的数据
col_data_sheet2 = sheet2.iloc[:, 0]

# 初始化存储组合结果的列表
combinations_A = []
combinations_B = []
original_A = []
original_B = []

# 确保两个表都有数据需要处理
if not sheet1.empty and not col_data_sheet2.empty:
    # 遍历两个sheet的指定列并组合
    for s1_a, s1_b in zip(sheet1[col_name_sheet1_A], sheet1[col_name_sheet1_B]):
        for s2 in col_data_sheet2:
            # 将s2转换为字符串后进行切片操作
            s2_str = str(s2)
            new_value_a = s1_a[:-4] + s2_str[-4:]
            new_value_b = f"{s1_b}_{s2_str}"

            # 添加组合结果
            combinations_A.append(new_value_a)
            combinations_B.append(new_value_b)
            # 复制原始的A列和B列数据
            original_A.append(s1_a)
            original_B.append(s1_b)

    # 创建一个DataFrame来保存组合结果以及原始数据
    df_combinations = pd.DataFrame(
        data={
            "Combinations_A": combinations_A,
            "Combinations_B": combinations_B,
            "Original_A": original_A,
            "Original_B": original_B,
        }
    )

    # 将组合结果写入新的Excel工作表
    with pd.ExcelWriter(file_path, mode="a", engine="openpyxl") as writer:
        df_combinations.to_excel(
            writer,
            sheet_name="Combinations",  # 新工作表的名称
            index=False,
            header=["A列组合", "B列组合", "原始A列", "原始B列"],
        )

    print("组合数据已成功写入新的工作表 'Combinations' 中。")
else:
    print("Sheet1或Sheet2为空,请检查数据。")

2、通过LSMW录屏,分别录制一个复制的角色的录屏和一个修改名称的录屏;

录屏文件如下:

3、使用事务码PFCG中上面菜单中的批量胜场功能生成参数文件;

4、使用事务PFCGMASSVAL - 权限值的批量维护 ,批量调整角色中参数文件的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鱼儿外面下雨啦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值