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.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_C | SU24 的默认值表 / 检查标识表 |
实用技巧:想查"某个事务码被哪些角色包含",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 | 采购申请审批代码(申请审批策略不含分类时使用) | FRGCD | ME54N / 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_BUK | FI 会计凭证:公司代码(记账必查,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 怎么快速找到"某个操作要什么权限"
三种办法,按效率排序:
- SU24:输入事务码,直接列出该事务码会检查的权限对象和字段,还能看"检查标识"(是否强制检查)。这是最权威的映射表。
- SU53 实测:让业务用户实操一次、截图 SU53 结果。生产环境排查最快,也能确认默认值之外的自定义检查。
- 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 标准角色直接分配给业务用户——理由很实在:
- 标准角色是为演示/参考设计的,权限范围通常偏大(大量
*),过不了审计; - 升级时 SAP 会覆盖标准角色,你的调整会丢;
- 多个标准角色堆在一起,用户的最终权限是不受控的并集。
4.2 派生角色:一次设计,多处复用
派生角色(Derived Role) 解决的是一个非常具体的重复劳动:
菜单和权限结构完全一样,只有组织级的值不同(工厂 1000 和 2000、公司代码 A 和 B)。
它的继承规则(来自 SAP 官方说明):
| 会继承 | 不继承 / 有约束 |
|---|---|
| 菜单结构 + 菜单里的功能(事务码、报表、Web 链接等) | 用户分配不继承 |
| 一般(非组织级)权限字段值 | 继承来的菜单不能在派生角色里改,只能在母角色里维护 |
| — | 只能从单一角色派生(复合角色不能当母角色) |
| — | 组织级(组织层次)字段值由派生角色自己维护 |
再补三条实操才有价值的细节:
- 母角色里点"生成派生角色"按钮:会把普通字段(非组织层次)复制到所有派生角色,并生成参数文件。组织级数据只有在派生角色的权限数据首次被修改时才传输,且如果派生角色已维护过组织级值,不会被覆盖(见 SAP Note 314513)。
- 派生角色里点"传输数据"按钮:用于初始填充,把模板的所有一般授权值复制过来;派生角色中未填的组织级字段,也会带上参考角色的值。
- 继承关系可以取消,但取消后不可撤销,被取消的角色从此当作普通角色处理(菜单也变成可编辑)。
4.3 创建派生角色的步骤
PFCG输入派生角色名(如Z_MM_PUR_BUYER_2000)+ 描述,回车新建;- 在描述页签的"派生自角色(Derive from Role)"字段填入母角色名(如
Z_MM_PUR_BUYER); - 保存——菜单和事务码会立即从母角色填充过来(这一点比复合角色省事得多);
- 切换到权限页签 → 更改授权数据,只维护组织级字段(采购组织、工厂、采购组、公司代码等);
- 生成参数文件(
Ctrl+F3/ 状态栏按钮"生成"),保存; - 用
SU01把派生角色分配给对应用户,必要时跑PFUD做用户比较。
4.4 三种角色形态怎么选
| 场景 | 选择 | 理由 |
|---|---|---|
| 两个岗位菜单和权限几乎一样,只有组织值不同 | 派生角色 | 改一次母角色,所有分支同步,维护成本最低 |
| 需要在标准角色/既有角色的基础上做较大改造(加减菜单、加减对象) | 复制单一角色 | 派生角色不能改菜单,改造必须靠复制 |
| 一个岗位对应多个功能模块的多个角色,希望一把分配 | 复合角色 | 只做打包,便于分配和回收 |
| 权限结构差异大(如采购员 vs 收货员) | 独立建单一角色 | 强行派生只会制造不必要的耦合 |
4.5 MM 角色设计示例(含派生)
一个典型的采购部权限矩阵可以这么切:
| 角色(母) | 派生 | 关键事务码 | 关键权限对象与值示例 |
|---|---|---|---|
| Z_MM_PUR_BUYER | _1000 / _2000(按工厂+采购组派生) | ME51N/ME21N/ME22N/ME23N/ME53N/ME54N | S_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/ME55 | S_TCODE + M_EINK_FRG(FRGGR=FP, FRGCO=R1/R2/R3) 或 M_BANF_FRG(FRGCD=..) |
| Z_MM_IM_GR | _1000 / _2000(按工厂派生) | MIGO/MB51/MB1B/MB03 | S_TCODE + M_MSEG_BWA(BWART=101,102,122), M_MSEG_WWA(WERKS=1000), M_MSEG_LGO(WERKS+LGORT) |
| Z_MM_IM_PHYS | _1000 / _2000 | MI01/MI04/MI07/MI10 | S_TCODE + M_ISEG_WIB/WZL/WDB/WZB(WERKS=1000) |
| Z_MM_IV_CLERK | _1000 / _2000 | MIRO/MIR4/MIR6/MIR7 | S_TCODE + M_RECH_BUK(BUKRS), M_RECH_WRK(WERKS), F_BKPF_BUK(BUKRS) |
| Z_MM_IV_RELEASE | _1000 / _2000 | MRBR/MIR5/MIR6(放行/清单类) | S_TCODE + M_RECH_EKG(EKGRP) |
| Z_MM_MD_MASTER | _PUR / _ACC(按维护状态派生) | MM01/MM02/MM03/MM17 | S_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 高频踩坑清单
- 改完角色没生成参数文件:PFCG 保存 ≠ 生效,必须生成参数文件(状态栏变绿)。
- 角色菜单里加了事务码,但没分配对应业务权限对象:菜单能看到,点进去报"无权限",新人最常犯。
- 指望用户重新登录就万事大吉:先查
SU56用户缓冲,必要时让用户重新登录/清理缓冲。 - 组织级字段用
*兜底:工厂写*、采购组写*,等于没做隔离,审计一抓一个准。 - 派生角色里手改菜单:改不了(设计如此),要改必须回母角色,或者改用复制方案。
- 复合角色 + 派生角色混用后搞不清来源:用户权限要靠 SUIM /
AGR_1251反查,不要靠记忆。 - SU24 默认值被随意改动:会让"标准检查点"飘移,跨系统行为不一致;改动要有文档和传输。
- 升级后不跑 SU25:新版本新增的权限检查点没有初始化,会出现"以前能用、升级后报权限"的批量问题。
- 离职/转岗只锁账号不回收角色:
USR02的有效期和锁定状态要一起管,离职清单要和 HR 对账。 - 生产环境直接改权限不留痕:角色变更用传输(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 部署时,"能不能打开应用(目录/组)"和"进去能做什么(后端权限对象)"是两件事,缺一个都会报错。
六、总结
- SAP 权限的本质:用户 → 角色 → 参数文件 → 授权(权限对象 + 字段 + 值),事务码是最外层入口(S_TCODE)。
- 工具链固定:PFCG 设计、SU01/SU10 分配、SU24 看检查点、SU53/ST01/SU56 排障、SUIM/RSUSR* 审计、SU25/PFUD 上线与升级。
- 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_*。 - 标准角色只当模板,复制改造后用;结构相同、组织值不同的场景用派生角色,一次设计多处复用。
- 权限设计的三条底线:最小权限、职责分离、用
*之前想清楚。
版本说明:本文基于 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 参考)


Comments | NOTHING