SAP 权限管理(1)--权限架构、常用事务码与MM权限对象


SAP 权限管理是项目里最容易被低估的一块:业务上线卡在"用户看不到菜单",审计卡在"谁能改供应商银行账号",事故卡在"某个 ID 拿着 SAP_ALL 跑了一年没人发现"。它不直接产生业务价值,但决定这套系统能不能安全交付、能不能过审计。

这篇把 MM 顾问和内部权限管理员真正会用到的四块内容串起来:权限的基本要素与架构 → 常用事务代码 → MM 模块主要权限对象 → 标准角色与派生角色的落地方法,最后补一节实践清单与常见坑。


一、权限管理的基本要素与架构

1.1 一句话讲清 SAP 权限

SAP 里所有权限判断最终都落到同一个句式:

某个用户,能用某个事务码,对某类数据(权限对象 + 字段值),做某个动作(活动)。

比如"采购员小张能用 ME21N 创建采购组织 1000、采购组 001 的标准采购订单"——这句话在系统里被翻译成:事务码 S_TCODE=ME21N,权限对象 M_BEST_EKO(EKORG=1000)、M_BEST_EKG(EKGRP=001)、M_BEST_BSA(BSART=NB)、M_BEST_WRK(WERKS=1000),活动 ACTVT=01。

权力不是直接挂在用户身上的,中间要经过角色 → 参数文件两级中转。这是 SAP 权限模型和"给用户配菜单"最本质的区别。

1.2 六个基本要素

要素英文说明维护位置
用户主记录User Master Record账号本身:用户组、用户类型、有效期、角色/参数文件页签SU01
角色Role事务码菜单 + 权限数据的集合,是给用户分配的单位PFCG
参数文件Profile真正被系统读取的权限容器,由角色生成(也可手工建)PFCG / SU02
权限对象Authorization Object检查的最小单元,最多包含 10 个权限字段SU21
权限字段Authorization Field被检查的维度,如 WERKS(工厂)、EKORG(采购组织)、ACTVT(活动)SU20
授权Authorization权限对象 + 字段值的组合,例如 M_BEST_WRK: ACTVT=03, WERKS=1000角色内维护

补充两个高频概念:

  • 事务码(T-Code):菜单入口,本身通过权限对象 S_TCODE 检查。没有 S_TCODE,菜单点不动,后面所有对象检查都不会发生。
  • 活动(ACTVT):常用的几个值——01 创建、02 更改、03 显示、06 删除、77 暂存(Park,票据类场景常见)。

1.3 授权数据的层级架构

graph TD
    A["用户主记录<br/>SU01<br/>User"] --> B["角色 Role<br/>PFCG"]
    B --> B1["单一角色<br/>Single Role<br/>生成参数文件"]
    B --> B2["复合角色<br/>Composite Role<br/>只做打包,不生成参数文件"]
    B --> B3["派生角色<br/>Derived Role<br/>继承菜单,组织值可变"]
    B1 --> C["参数文件 Profile<br/>真正生效的权限容器"]
    B2 --> B1
    C --> D["授权 Authorization"]
    D --> E["权限对象<br/>Authorization Object"]
    E --> F["权限字段 + 值<br/>Field / Value<br/>如 WERKS=1000"]
    A -.分配.-> B

几个必须记牢的规则:

  1. 角色是给人看的,参数文件才是给系统看的。 改完角色不"生成"参数文件,权限不会生效。
  2. 复合角色只做打包,本身不生成参数文件;用户分到复合角色后,生效的是它下面挂的各个单一角色。
  3. 多个角色之间是"或"关系:用户做某个操作,只要有任意一个角色提供了对应授权,检查就通过。这也是权限越配越大、最后没人说得清"这个用户到底能干什么"的根源。
  4. 授权是"最小匹配 + 并集":用户的最终权限 = 所有已分配角色(含参数文件)里所有授权的并集,不会因为另一个角色限制得更严而收紧。

1.4 权限是怎么被检查的

SAP 标准程序在关键动作前会调用权限检查(AUTHORITY-CHECK),检查点由开发决定,检查用的权限对象和字段可以在 SU24 里看到(它就是给每个事务码维护"该检查哪些对象"的默认值表)。典型的检查链路:

graph LR
    A["用户执行事务码<br/>如 ME21N"] --> B["检查 S_TCODE"]
    B --> C["检查业务权限对象<br/>M_BEST_* / M_BANF_*"]
    C -->|通过| D["业务继续"]
    C -->|不通过| E["报错:无权限"]
    E --> F["用户执行 SU53<br/>看最后一次失败的检查"]
    F --> G["找到对象+字段+值"]
    G --> H["PFCG 改角色<br/>生成参数文件"]
    H --> I["用户重新登录<br/>或检查用户缓冲"]

诊断时四个事务码按顺序用:

事务码用途什么时候用
SU53显示当前用户最后一次失败的权限检查业务同事说"我做不了",第一时间让他执行
ST01系统跟踪(可跟踪权限检查全过程)SU53 看不出原因、BAPI/后台作业报权限问题时
SU56分析用户缓冲(User Buffer)改完角色用户还说没权限,先怀疑缓冲没刷新
SU24查看/维护事务码的权限对象默认值不知道某个事务码要检查哪些对象时

1.5 用户主记录里的关键字段

SU01 里除了用户名密码,这几个字段跟权限强相关:

页签 / 字段说明
地址 / 登录数据用户类型(Dialog 交互 / System 系统 / Communication 通讯 / Service 服务 / Reference 参考)、初始密码、有效期
角色(Roles)直接分配单一角色或复合角色;支持有效期和"用户特定的"角色
参数文件(Profiles)手工分配的参数文件(多为历史遗留,正常应由角色生成)
参数(Parameters)用户的默认值,如 EKG(采购组)、WRK(工厂)、BUK(公司代码),影响报表选择画面默认值
用户组(User Group)用户管理分权的关键:管理员只能维护自己负责的用户组

参考用户(Reference User):新建用户时指定一个参考用户,可以把角色、参数一并复制过来,是批量建号的标准做法。用户组配合权限对象 S_USER_GRP 使用,实现"总部管理员只能管总部账号,工厂管理员只能管工厂账号"——这是审计必查的分权点。


二、常用事务代码

2.1 用户管理

事务码用途
SU01创建/修改用户主记录(权限管理员的主战场)
SU01D显示用户主记录(只读,常给审计用)
SU10批量用户维护(批量加/删角色、改有效期)
SU3用户维护自己的默认参数(地址、日期格式、EKG/WRK 等)
SU2用户变更文档(谁改过哪个用户)
SUGR用户组维护

2.2 角色与权限维护

事务码用途
PFCG角色维护(Profile Generator),90% 的权限工作在这里
SU02手工创建参数文件(老做法,新系统一般不推荐)
SU03手工维护授权(同上)
SU20查看权限字段清单
SU21查看/维护权限对象与对象类(自定义对象 Y/Z 在这里建)
SU22维护SAP 交付的权限对象默认值(SAP 系统端)
SU24维护客户系统的权限对象默认值(= 事务码 → 检查对象映射的客户版本)
SU25升级后初始化/调整客户权限表(升级后必跑)
SU26升级后调整参数文件生成逻辑
SUPC批量生成参数文件(角色多、改完批量刷)
PFUD用户比较(User Comparison),把角色变更同步到用户主记录

2.3 权限检查与查询

事务码用途
SU53查看最后一次失败的权限检查(最常用的排障入口)
ST01系统跟踪:跟踪权限检查、RFC 等
SU56用户缓冲分析
SUIM用户信息系统:按用户/角色/对象/事务码/值反查,权限审计核心工具
SE16N直接读权限相关表(AGR_、USR、USOBT_C 等),排查的兜底手段

2.4 审计与批量报表(SUIM 里的标准报表)

报表用途
RSUSR002按复杂条件选用户(如"拥有某事务码的所有用户")
RSUSR003检查所有用户的初始/默认密码
RSUSR006锁定用户/未登录用户清单
RSUSR070按复杂条件选角色
RSUSR100用户变更文档查询

审计场景的常见需求基本都是这几张报表 + SUIM 组合出来的:用户清单、角色清单、某事务码被给了哪些人、某权限对象的值都赋了哪些(有没有满天飞 *)、离职账号是否还在有效期。

2.5 权限相关核心表(排查用)

表内容
USR02用户主记录(登录数据、有效期、锁定状态)
USR04 / USR10 / USR11 / USR12用户授权、用户参数文件、用户参数文件头、用户授权值
AGR_DEFINE角色定义(角色类型、描述)
AGR_USERS用户-角色分配关系
AGR_1251角色的授权值(明细,按对象/字段/值查权限的主表)
AGR_TCODES角色包含的事务码
AGR_PROF角色生成的参数文件
TOBJ权限对象及其字段(SU21 的底表)
USOBT_C / USOBX_CSU24 的默认值表 / 检查标识表
实用技巧:想查"某个事务码被哪些角色包含",AGR_1251 按 S_TCODE 过滤最快;想查"哪些角色含某权限对象",同样在 AGR_1251 里按对象名过滤。

三、MM 模块主要权限对象

3.1 命名规则与对象类

MM 的权限对象命名基本是 M_<业务对象>_<限定>:M_BEST(Bestellung,采购订单)+ _EKO(采购组织)→ 可猜出含义。对象类(Authorization Class)在 SU21 里查看,MM 相关的主要是:

对象类范围
MM_E采购(Purchasing):采购申请、采购订单、询价报价、框架协议、信息记录、供应商主数据
MM_B库存管理/货物移动(Goods Movement):收货发货、物料凭证、预留、盘点
MM_R物流发票校验(Invoice Verification)
MM_G物料主数据(Material Master)
MM_W物料评估相关(如最低价值确定)

3.2 采购凭证类权限对象(MM_E)

权限对象说明常用字段
M_BANF_BSA采购申请:凭证类型ACTVT, BSART
M_BANF_BWK采购申请:采购工厂(Procuring Plant)ACTVT, BESWK
M_BANF_EKG采购申请:采购组ACTVT, EKGRP
M_BANF_EKO采购申请:采购组织ACTVT, EKORG
M_BANF_WRK采购申请:工厂ACTVT, WERKS
M_BANF_LGO采购申请:工厂/存储地点ACTVT, WERKS, LGORT
M_BANF_FRG采购申请:审批代码FRGCD
M_BEST_BSA采购订单:凭证类型ACTVT, BSART
M_BEST_EKG采购订单:采购组ACTVT, EKGRP
M_BEST_EKO采购订单:采购组织ACTVT, EKORG
M_BEST_WRK采购订单:工厂ACTVT, WERKS
M_BEST_LGO采购订单:工厂/存储地点ACTVT, WERKS, LGORT
M_BEST_EXP采购订单:进度跟踪组(Progress Tracking)—
M_ANFR_EKG / M_ANFR_EKO询价(RFQ):采购组 / 采购组织ACTVT + 对应组织字段
M_ANGB_EKG / M_ANGB_EKO报价(Quotation):采购组 / 采购组织ACTVT + 对应组织字段
M_RAHM_EKG / M_RAHM_EKO框架协议(Outline Agreement):采购组 / 采购组织ACTVT + 对应组织字段
M_LPET_EKG / M_LPET_EKO计划协议交货计划ACTVT + 对应组织字段
M_ORDR_EKO货源清单(Source List):采购组织ACTVT, EKORG
M_EINF_EKG / M_EINF_EKO采购信息记录:采购组 / 采购组织ACTVT + 对应组织字段
M_EINF_WRK采购信息记录:工厂ACTVT, WERKS
M_LFM1_EKO供应商主数据:采购组织ACTVT, EKORG
M_LIBE_EKO供应商评估ACTVT + 采购组织
V_KONH_EKO主条件记录(条件/价格):采购组织EKORG, ACTVT
M_SC_PGRP采购购物车:采购组ACTVT, EKGRP
ME21N / ME22N / ME23N(采购订单)的标准检查对象就是 M_BEST_BSA + M_BEST_EKG + M_BEST_EKO + M_BEST_WRK 这四个,配 S_TCODE 一起检查;M_BEST_WRK 检查的是收货工厂(WERKS)。

3.3 采购审批权限对象

审批是权限设计里最容易翻车的地方,涉及两个对象:

权限对象说明字段典型事务码
M_EINK_FRG采购订单审批:审批组 + 审批代码FRGGR(审批组), FRGCO(审批代码)ME28(批量审批)、ME29N(单张审批)
M_BANF_FRG采购申请审批代码(申请审批策略不含分类时使用)FRGCDME54N / ME55

落地要点:不同审批级别 = 同一个对象的不同字段值。一级审批给 FRGGR=FP, FRGCO=R1,二级给 FRGCO=R2,三级给 R3,配合 S_TCODE 里的 ME28/ME29N,就形成了"谁能批、批到哪一级"的矩阵。角色里写错一个字符(比如给了 R1 的人顺手给了 R2),等于审批链形同虚设。

3.4 货物移动与库存(MM_B)

权限对象说明常用字段
M_MSEG_BWA货物移动:移动类型ACTVT, BWART
M_MSEG_BWE采购订单收货:移动类型ACTVT, BWART
M_MSEG_BWF生产订单收货:移动类型ACTVT, BWART
M_MSEG_BMB物料凭证:移动类型ACTVT, BWART
M_MSEG_WWA货物移动:工厂ACTVT, WERKS
M_MSEG_WMB物料凭证:工厂ACTVT, WERKS
M_MSEG_LGO货物移动:存储地点ACTVT, WERKS, BWART
M_MRES_BWA / M_MRES_WWA预留:移动类型 / 工厂ACTVT + BWART / WERKS
M_MBNK_ALL物料凭证编号范围维护ACTVT
M_GRPT_WWW通过 WWW 收货(自助收货场景)ACTVT
M_ISEG_WIB盘点:工厂的盘点凭证ACTVT, WERKS
M_ISEG_WZL盘点:在工厂清点ACTVT, WERKS
M_ISEG_WDB盘点:在工厂做差异过账ACTVT, WERKS
M_ISEG_WZB盘点:在工厂清点并差异过账ACTVT, WERKS

移动类型(BWART)是库存权限的核心维度:只给 101(采购收货)和给 *(全部移动类型,含 551 报废、601 发货、309 转储)是完全不同量级的授权。仓库岗位的权限设计必须显式枚举移动类型,不允许用 * 兜底。

3.5 发票校验(MM_R)

权限对象说明常用字段
M_RECH_BUK发票:公司代码BUKRS, ACTVT
M_RECH_WRK发票:工厂WERKS, ACTVT
M_RECH_EKG发票审批:采购组ACTVT, EKGRP
M_RECH_AKZ手工接受发票校验差异(含容差)ACTVT
M_RECH_SPG发票:冻结原因(Blocking Reasons)SPEGR, ACTVT
M_RECH_CPY复制发票:公司代码ACTVT, BUKRS
F_BKPF_BUKFI 会计凭证:公司代码(记账必查,MM-IV 也会触发)BUKRS, ACTVT

发票校验是职责分离的重点区域:录发票的人(MIRO,活动 01)和审批放行的人(M_RECH_EKG / 审批策略)应当分开;M_RECH_AKZ(手工接受差异)单独给,避免"录入 + 放行 + 接受差异"全在一人手里。

3.6 物料主数据(MM_G)

权限对象说明常用字段
M_MATE_MAR物料主数据:物料类型ACTVT, MTART
M_MATE_MAT物料主数据:物料ACTVT, MATNR
M_MATE_WRK物料主数据:工厂ACTVT, WERKS
M_MATE_EKG物料主数据:采购组ACTVT, EKGRP
M_MATE_STA物料主数据:维护状态(按部门/视图)ACTVT, MMSTA
M_MATE_WGR物料主数据:物料组ACTVT, MATKL
M_MATE_BUK物料主数据:公司代码ACTVT, BUKRS
M_MATE_LGN物料主数据:仓库号ACTVT, LGNUM
M_MATE_MAN物料主数据:客户端级数据ACTVT
M_MATE_MAF物料主数据:物料锁定ACTVT

物料主数据的权限设计要同时控制"物料类型/范围"和"视图(维护状态)":采购员只该维护采购视图(维护状态 E),会计视图(B)归财务。只给 M_MATE_MAR 不给 M_MATE_STA,等于把物料的所有视图都敞开了。

以上字段以 SAP ECC 6.0 标准系统为准(SU21 / TOBJ 可实时核对)。S/4HANA 中部分对象和检查点有调整,实施时以实际系统 SU24 显示的检查对象为最终依据。

3.7 怎么快速找到"某个操作要什么权限"

三种办法,按效率排序:

  1. SU24:输入事务码,直接列出该事务码会检查的权限对象和字段,还能看"检查标识"(是否强制检查)。这是最权威的映射表。
  2. SU53 实测:让业务用户实操一次、截图 SU53 结果。生产环境排查最快,也能确认默认值之外的自定义检查。
  3. SE16N 查 TOBJ:按对象类(如 MM_E)列出该类的所有权限对象和字段,适合做角色设计前的"扫一遍"。

四、标准角色与派生角色应用

4.1 标准角色:SAP 交付的模板,不是给用户用的

SAP 为大量业务场景交付了标准角色(PFCG 角色),例如 MM 采购相关就有:

标准角色用途
SAP_MM_PUR_PURCHASEREQUISITION / SAP_MM_PUR_PR_RELEASE处理采购申请 / 审批采购申请
SAP_MM_PUR_PURCHASEORDER / SAP_MM_PUR_PO_RELEASE处理采购订单 / 审批采购订单
SAP_MM_PUR_RFQ / SAP_MM_PUR_QUOTATION询价 / 报价
SAP_MM_PUR_CONTRACTING / SAP_MM_PUR_SCHEDULE合同 / 计划协议
SAP_MM_PUR_SOURCE_LIST / SAP_MM_PUR_INFORECORD货源清单 / 采购信息记录
SAP_MM_PUR_VE / SAP_MM_PUR_VE_LISTS供应商评估及其报表
SAP_MM_PUR_PURCHASEORDER_LISTS / SAP_MM_PUR_PR_LISTS采购订单/申请清单报表
SAP_AUDITOR_BA_MM_PUR(_A)审计只读角色(采购全流程)

正确用法是复制(Copy):在 PFCG 里新建一个 Z* 角色,把标准角色里需要的菜单和权限段复制过来,再按企业实际的组织结构(采购组织、工厂、采购组)调整。不要把 SAP 标准角色直接分配给业务用户——理由很实在:

  1. 标准角色是为演示/参考设计的,权限范围通常偏大(大量 *),过不了审计;
  2. 升级时 SAP 会覆盖标准角色,你的调整会丢;
  3. 多个标准角色堆在一起,用户的最终权限是不受控的并集。

4.2 派生角色:一次设计,多处复用

派生角色(Derived Role) 解决的是一个非常具体的重复劳动:

菜单和权限结构完全一样,只有组织级的值不同(工厂 1000 和 2000、公司代码 A 和 B)。

它的继承规则(来自 SAP 官方说明):

会继承不继承 / 有约束
菜单结构 + 菜单里的功能(事务码、报表、Web 链接等)用户分配不继承
一般(非组织级)权限字段值继承来的菜单不能在派生角色里改,只能在母角色里维护
—只能从单一角色派生(复合角色不能当母角色)
—组织级(组织层次)字段值由派生角色自己维护

再补三条实操才有价值的细节:

  1. 母角色里点"生成派生角色"按钮:会把普通字段(非组织层次)复制到所有派生角色,并生成参数文件。组织级数据只有在派生角色的权限数据首次被修改时才传输,且如果派生角色已维护过组织级值,不会被覆盖(见 SAP Note 314513)。
  2. 派生角色里点"传输数据"按钮:用于初始填充,把模板的所有一般授权值复制过来;派生角色中未填的组织级字段,也会带上参考角色的值。
  3. 继承关系可以取消,但取消后不可撤销,被取消的角色从此当作普通角色处理(菜单也变成可编辑)。

4.3 创建派生角色的步骤

  1. PFCG 输入派生角色名(如 Z_MM_PUR_BUYER_2000)+ 描述,回车新建;
  2. 在描述页签的"派生自角色(Derive from Role)"字段填入母角色名(如 Z_MM_PUR_BUYER);
  3. 保存——菜单和事务码会立即从母角色填充过来(这一点比复合角色省事得多);
  4. 切换到权限页签 → 更改授权数据,只维护组织级字段(采购组织、工厂、采购组、公司代码等);
  5. 生成参数文件(Ctrl+F3 / 状态栏按钮"生成"),保存;
  6. 用 SU01 把派生角色分配给对应用户,必要时跑 PFUD 做用户比较。

4.4 三种角色形态怎么选

场景选择理由
两个岗位菜单和权限几乎一样,只有组织值不同派生角色改一次母角色,所有分支同步,维护成本最低
需要在标准角色/既有角色的基础上做较大改造(加减菜单、加减对象)复制单一角色派生角色不能改菜单,改造必须靠复制
一个岗位对应多个功能模块的多个角色,希望一把分配复合角色只做打包,便于分配和回收
权限结构差异大(如采购员 vs 收货员)独立建单一角色强行派生只会制造不必要的耦合

4.5 MM 角色设计示例(含派生)

一个典型的采购部权限矩阵可以这么切:

角色(母)派生关键事务码关键权限对象与值示例
Z_MM_PUR_BUYER_1000 / _2000(按工厂+采购组派生)ME51N/ME21N/ME22N/ME23N/ME53N/ME54NS_TCODE + M_BEST_BSA(NB), M_BEST_EKO(1000), M_BEST_EKG(001), M_BEST_WRK(1000), M_BANF_* 同构, M_MATE_MAR(ROH, HALB)
Z_MM_PUR_APPROVE_L1 / _L2 / _L3(按审批代码派生)ME28/ME29N/ME54N/ME55S_TCODE + M_EINK_FRG(FRGGR=FP, FRGCO=R1/R2/R3) 或 M_BANF_FRG(FRGCD=..)
Z_MM_IM_GR_1000 / _2000(按工厂派生)MIGO/MB51/MB1B/MB03S_TCODE + M_MSEG_BWA(BWART=101,102,122), M_MSEG_WWA(WERKS=1000), M_MSEG_LGO(WERKS+LGORT)
Z_MM_IM_PHYS_1000 / _2000MI01/MI04/MI07/MI10S_TCODE + M_ISEG_WIB/WZL/WDB/WZB(WERKS=1000)
Z_MM_IV_CLERK_1000 / _2000MIRO/MIR4/MIR6/MIR7S_TCODE + M_RECH_BUK(BUKRS), M_RECH_WRK(WERKS), F_BKPF_BUK(BUKRS)
Z_MM_IV_RELEASE_1000 / _2000MRBR/MIR5/MIR6(放行/清单类)S_TCODE + M_RECH_EKG(EKGRP)
Z_MM_MD_MASTER_PUR / _ACC(按维护状态派生)MM01/MM02/MM03/MM17S_TCODE + M_MATE_MAR(MTART), M_MATE_WRK(WERKS), M_MATE_STA(MMSTA=E 或 B), M_MATE_EKG(EKGRP)

命名建议:Z_<模块>_<业务域>_<岗位>_<组织值>,例:Z_MM_PUR_BUYER_1000。好处一眼能看出用途,SUIM 反查和离职清理都不会漏。


五、落地实践与常见坑

5.1 权限管理自身的权限(分权)

权限管理员不需要 SAP_ALL。管理权限的工作本身也由权限对象控制,常用的几个:

权限对象控制对象
S_TCODE哪些事务码能执行
S_USER_GRP能维护哪些用户组的用户(用户管理分权的核心,字段含用户组 + ACTVT)
S_USER_AGR能维护哪些角色(字段含角色名 + ACTVT)
S_USER_PRO参数文件维护
S_USER_AUT授权维护
S_TABU_DIS / S_TABU_NAM表维护/表浏览的授权组与表名(限制 SE16/SE11 等直接读表)
S_DEVELOP开发与调试权限(生产环境应严格限制)

最低要求:用户管理员(建号改号)和权限管理员(改角色)分设两个人,且都不给 SAP_ALL。

5.2 高频踩坑清单

  1. 改完角色没生成参数文件:PFCG 保存 ≠ 生效,必须生成参数文件(状态栏变绿)。
  2. 角色菜单里加了事务码,但没分配对应业务权限对象:菜单能看到,点进去报"无权限",新人最常犯。
  3. 指望用户重新登录就万事大吉:先查 SU56 用户缓冲,必要时让用户重新登录/清理缓冲。
  4. 组织级字段用 * 兜底:工厂写 *、采购组写 *,等于没做隔离,审计一抓一个准。
  5. 派生角色里手改菜单:改不了(设计如此),要改必须回母角色,或者改用复制方案。
  6. 复合角色 + 派生角色混用后搞不清来源:用户权限要靠 SUIM / AGR_1251 反查,不要靠记忆。
  7. SU24 默认值被随意改动:会让"标准检查点"飘移,跨系统行为不一致;改动要有文档和传输。
  8. 升级后不跑 SU25:新版本新增的权限检查点没有初始化,会出现"以前能用、升级后报权限"的批量问题。
  9. 离职/转岗只锁账号不回收角色:USR02 的有效期和锁定状态要一起管,离职清单要和 HR 对账。
  10. 生产环境直接改权限不留痕:角色变更用传输(PFCG 角色的传输)管理,配合 RSUSR100/SU2 查变更历史。

5.3 上线与传输检查清单

  • 角色在开发系统维护 → 通过传输请求传到测试/生产(不要在生产线手改);
  • 传输后跑 PFUD(用户比较),确保用户主记录与角色的参数文件一致;
  • 角色数量多时用 SUPC 批量生成参数文件;
  • 每次升级后按 SAP 标准流程跑 SU25(两步:先初始化客户表,再对照调整);
  • 上线前用 SUIM + RSUSR003(初始密码)、RSUSR006(锁定/未登录)过一遍账号状态;
  • 保留一份"角色-用户-组织值"清单,作为审计和交接材料。

5.4 S/4HANA 与 Fiori 的权限变化

S/4HANA 时代权限体系多了一层:业务角色(Business Role)→ 业务目录(Business Catalog)→ 业务组(Business Group),Fiori 应用的可见性由业务目录控制,而业务角色里的技术层最终仍然落到传统的 PFCG 角色和参数文件上。实务上要记住两点:

  • 传统事务码(ME21N、MIGO 等)和 Fiori 应用可以共存,权限设计要保证"同一个人不管从哪个入口进来,权限边界一致";
  • 做 Fiori launchpad 部署时,"能不能打开应用(目录/组)"和"进去能做什么(后端权限对象)"是两件事,缺一个都会报错。

六、总结

  1. SAP 权限的本质:用户 → 角色 → 参数文件 → 授权(权限对象 + 字段 + 值),事务码是最外层入口(S_TCODE)。
  2. 工具链固定:PFCG 设计、SU01/SU10 分配、SU24 看检查点、SU53/ST01/SU56 排障、SUIM/RSUSR* 审计、SU25/PFUD 上线与升级。
  3. MM 权限对象按域记:采购凭证 M_BANF_* / M_BEST_*、询报价 M_ANFR_* / M_ANGB_*、框架协议 M_RAHM_*、信息记录 M_EINF_*、审批 M_EINK_FRG / M_BANF_FRG、货物移动 M_MSEG_*、盘点 M_ISEG_*、发票校验 M_RECH_*、物料主数据 M_MATE_*。
  4. 标准角色只当模板,复制改造后用;结构相同、组织值不同的场景用派生角色,一次设计多处复用。
  5. 权限设计的三条底线:最小权限、职责分离、用 * 之前想清楚。
版本说明:本文基于 SAP ECC 6.0 与 S/4HANA 标准功能整理(标准事务码、权限对象、标准角色名以 SAP 交付内容为准)。ECC 与 S/4HANA 在标准角色命名(如业务角色 SAP_BR_*)和部分检查点上有差异,实施时请以实际系统的 SU21 / SU24 / SUIM 查询结果为准。

参考资料

  • SAP Help Portal — Invoice Verification (MM-IV): Authorizations(标准权限对象清单)
  • SAP Help Portal — Materials Management (MM): Authorizations(MM 标准角色清单:SAP_MM_PUR_*)
  • SAP Help Portal — Roles and Authorizations(标准 PFCG 角色的定位与用法)
  • SAP Learning — Implementing a Derived Role Strategy(派生角色继承规则、两种数据比较方式、SAP Note 314513)
  • SAP Community — MM Authorization objects / MM Related Authorization Objects: How to Find out & Assign(MM 权限对象与字段、TOBJ 查法、SU53 排障流程)
  • 枫竹丹青 — 采购订单的审批操作和权限管理(M_EINK_FRG 的 FRGGR/FRGCO 与 ME28/ME29N 实操)
  • 知乎专栏 — SAP 如何查询 MM 模块标准权限对象(按对象类导出的 MM 权限对象/字段对照)
  • SAP Security 事务码清单(BASIS 权限管理常用 T-Code 参考)

For you, a thousand times over!