SM30 权限检查
先看效果
角色控制,用户只能看1000公司数据
实际表数据
测试用户进去显示
如果维护其他公司数据
好了,接下来直接上代码
进去显示控制
MODULE exclude_auth_bukrs.*----------------------------------------------------------------------*
***INCLUDE LZFIT034O01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module EXCLUDE_AUTH_BUKRS OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE exclude_auth_bukrs OUTPUT.DATA:lv_tabix TYPE sy-tabix,lv_subrc TYPE sy-subrc.LOOP AT extract.lv_tabix = sy-tabix.CLEAR:lv_subrc.PERFORM auth_bukrs USING view_action lv_subrc 'N'.IF lv_subrc <> 0.DELETE extract INDEX lv_tabix.ENDIF.ENDLOOP.DESCRIBE TABLE extract LINES maxlines.ENDMODULE.FORM auth_bukrs USING iv_action TYPE cpv_subrc TYPE sy-subrcpv_zif_message TYPE c.DATA lv_actvt TYPE tact-actvt.DATA lv_sellist TYPE vimsellist.CONSTANTS lc_bukrs TYPE dd03p_d-fieldname VALUE 'BUKRS'.CONSTANTS: lc_actvt_display TYPE tact-actvt VALUE '03',lc_actvt_change TYPE tact-actvt VALUE '02',lc_actvt_create TYPE tact-actvt VALUE '01'.FIELD-SYMBOLS: <fs> TYPE any,<fs_bukrs> TYPE bukrs.sy-subrc = 0.CASE iv_action.WHEN aendern." Changelv_actvt = lc_actvt_change.WHEN anzeigen." Displaylv_actvt = lc_actvt_display.WHEN neuer_eintrag." New entrylv_actvt = lc_actvt_create.WHEN OTHERS.RETURN.ENDCASE.IF lv_actvt = lc_actvt_create.CHECK NOT vim_object IS INITIAL.ASSIGN (vim_object) TO <fs> CASTING TYPE (vim_object).ELSE.ASSIGN extract TO <fs> CASTING TYPE (vim_object).ENDIF.ASSIGN COMPONENT lc_bukrs OF STRUCTURE <fs> TO <fs_bukrs>.IF sy-subrc <> 0 OR <fs_bukrs> IS INITIAL.RETURN.ENDIF.CLEAR:pv_subrc.AUTHORITY-CHECK OBJECT 'F_SKA1_BUK'ID 'BUKRS' FIELD <fs_bukrs>ID 'ACTVT' FIELD lv_actvt.IF sy-subrc <> 0.IF pv_zif_message = 'Y'.MESSAGE e011(zfi001) WITH <fs_bukrs>.ENDIF.pv_subrc = 4.ENDIF.ENDFORM. " AUTH_BUKRS
创建新增时控制
FORM frm_init_data.DATA:lv_subrc TYPE sy-subrc.zfit034-erdat = sy-datum.zfit034-uzeit = sy-uzeit.zfit034-ernam = sy-uname.zfit034-lstdate = sy-datum.zfit034-lsttime = sy-uzeit.zfit034-lstuser = sy-uname.CLEAR:lv_subrc.PERFORM auth_bukrs USING neuer_eintrag lv_subrc 'Y'.ENDFORM.