1、KS01
需求:创建cost center 时,进行公司代码权限校验
出口:COOMKS02
Function module:EXIT_SAPLKMA1_003
代码:该代码会在保存时进行公司代码权限校验
IF SY-TCODE = 'KS01' OR SY-TCODE = 'KS02' OR SY-TCODE = 'KS03'.
LOOP AT ICSKSP INTO DATA(LS_DATA).
IF LS_DATA-BUKRS IS NOT INITIAL.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD LS_DATA-BUKRS
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC <> 0.
MESSAGE E016(ZFI) WITH LS_DATA-BUKRS.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
2、CJ20N/CJ30/CJ32/CJ01/CJ02/CJ03
需求:创建/更改:WBS 或者Project 时,进行公司代码权限校验
出口:CNEX0002
Function module:EXIT_SAPLCNAU_001;
EXIT_SAPLCNAU_002
代码:
IF SY-TCODE = 'CJ20N' OR SY-TCODE = 'CJ30' OR SY-TCODE = 'CJ32'OR SY-TCODE = 'CJ01'OR SY-TCODE = 'CJ02'OR SY-TCODE = 'CJ03'.
IF SAP_PRPS-PBUKR IS NOT INITIAL.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD SAP_PRPS-PBUKR
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC <> 0.
MESSAGE E016(ZFI) WITH SAP_PRPS-PBUKR.
ENDIF.
ENDIF.
ENDIF.
SAP_X_ACTVT = 'X'.
** 注:该出口下面的函数模块中,只要有SAP_X_ACTVT 这个字段的,都要在该函数模块中把该字段赋值为X,否则标准程序中其他的一些权限校验会出错 **
3、KE51/KE52/KE53/KE54
需求:创建/更改/查看/删除 利润中心时,进行公司代码权限校验
出口:PCAAUTHO
Function module:EXIT_SAPLKEFP_001
代码:
IF SY-TCODE = 'KEMDM'.
IF I_PRCTR IS NOT INITIAL.
AUTHORITY-CHECK OBJECT 'K_PCAR_REP'
ID 'PRCTR' FIELD I_PRCTR
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC <> 0.
MESSAGE E017(ZFI) WITH I_PRCTR.
ENDIF.
ENDIF.
ENDIF.
注:这里的SY-TCODE 使用的限制条件是KEMDM,因为KE51/KE52/KE53/KE54 做了一个Transaction 为KEMDM,SE93可查看
KEMDM 事务码前台截图:
持续更新中~