1.新建函数ZF_AUTHORITY_CHECK_01。
2.import参数:
3.table参数:
4.函数代码:
********************************************************************************************************************************************
FUNCTION ZF_AUTHORITY_CHECK_01.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(ZOBJECT) TYPE XUOBJECT
*" REFERENCE(ZFIELD) TYPE XUFIELD
*" TABLES
*" IN_DATA OPTIONAL
*"----------------------------------------------------------------------
DATA:BEGIN OF lt_indata,
sign type char01,
option TYPE char02,
low TYPE char100,
high TYPE char100,
END OF lt_indata.
DATA:rollname TYPE rollname,
ddtext TYPE ddtext.
DATA:errstr TYPE string.
SELECT SINGLE rollname INTO rollname FROM authx WHERE fieldname = zfield.
IF sy-subrc <> 0.
CONCATENATE '权限字段' zfield '不存在' INTO errstr.
MESSAGE errstr TYPE 'E'.
exit.
ELSE.
SELECT SINGLE ddtext INTO ddtext FROM dd04t WHERE rollname = rollname AND ddlanguage = sy-langu AND as4local = 'A'.
ENDIF.
CLEAR:errstr.
LOOP AT in_data.
lt_indata = in_data.
IF NOT lt_indata-low IS INITIAL.
AUTHORITY-CHECK OBJECT zobject id zfield FIELD lt_indata-low.
IF sy-subrc NE 0.
CONCATENATE ddtext '['lt_indata-low']授权检查失败' INTO errstr.
MESSAGE errstr TYPE 'E'.
exit.
ENDIF.
ENDIF.
IF NOT lt_indata-high IS INITIAL.
AUTHORITY-CHECK OBJECT zobject id zfield FIELD lt_indata-high.
IF sy-subrc NE 0.
CONCATENATE ddtext '['lt_indata-high']授权检查失败' INTO errstr.
MESSAGE errstr TYPE 'E'.
exit.
ENDIF.
ENDIF.
ENDLOOP.
ENDFUNCTION.