做 SAP 权限开发时,很多问题不是出在AUTHORITY-CHECK这一行代码,而是出在更前面的建模。字段建错了,对象就会别扭;对象别扭了,PFCG 角色维护就会变成一堆看不懂的值;角色维护不清楚,业务顾问和 Basis 顾问排查权限问题时就会绕很远。Authorization Field 看起来只是 SU20 里的一条配置,实际却是 ABAP 权限模型里非常关键的颗粒度设计点。
在 SAP 授权对象里,authorization field 代表授权检查时需要被测试的字段值。ABAP 代码里写AUTHORITY-CHECK时,检查的不是一个抽象的权限名称,而是某个 authorization object 下若干 authorization field 的组合。SAP 官方 ABAP 关键字文档也说明,AUTHORITY-CHECK会检查当前用户或指定用户的 user master record 中是否存在相应授权,并且 authorization object 的字段可以包含数据字段,也可以包含用于动作控制的ACTVT字段。(SAP Help Portal)
这也是很多初学者容易踩坑的地方。事务码权限、菜单权限、角色权限、对象权限、字段权限经常被混在一起讲,结果开发同事以为