REPORT ztest001 MESSAGE-ID zmn_ms.
TABLES: ztmm0229,lfa1,t001w.
CONSTANTS:gc_view TYPE char30 VALUE 'ZTMM0229'.
CONSTANTS:gc_and TYPE char3 VALUE 'AND'.
"CONSTANTS:gc_u TYPE char1 VALUE 'U'.
DATA:gv_u TYPE char1.
DATA:gt_seltab TYPE STANDARD TABLE OF vimsellist WITH HEADER LINE.
DATA:gv_fieldname TYPE vimsellist-viewfield.
DATA:gt_exclude TYPE TABLE OF vimexclfun.
DATA:gs_exclude TYPE vimexclfun.
DATA:gt_excl_cua_funct TYPE TABLE OF vimexclfun WITH HEADER LINE.
DEFINE mcr_seltab.
clear:gv_fieldname.
gv_fieldname = &1.
call function 'VIEW_RANGETAB_TO_SELLIST'
exporting
fieldname = gv_fieldname
append_conjunction = gc_and
tables
sellist = gt_seltab
rangetab = &2.
END-OF-DEFINITION.
*@---------------------------------------------------------------------*
*@ 定义选择屏幕
*@---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl WITH FRAME TITLE text-001.
SELECT-OPTIONS:s_werks FOR ztmm0229-werks.
SELECTION-SCREEN END OF BLOCK bl.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM frm_auth_check.
PERFORM frm_call_view.
*&---------------------------------------------------------------------*
*& Form frm_call_view
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_call_view .
gv_u = 'U'.
FREE gt_seltab.
LOOP AT s_werks.
gt_seltab-viewfield = 'WERKS'.
gt_seltab-operator = 'EQ'.
gt_seltab-value = s_werks-low.
gt_seltab-and_or = 'OR'.
AT LAST.
CLEAR gt_seltab-and_or.
ENDAT.
APPEND gt_seltab.
CLEAR gt_seltab.
ENDLOOP.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = gv_u
view_name = gc_view
TABLES
dba_sellist = gt_seltab[]
excl_cua_funct = gt_excl_cua_funct.
ENDFORM. " FRM_CALL_VIEW
*&---------------------------------------------------------------------*
*& Form FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_auth_check .
DATA:lv_message TYPE string.
DATA:lt_t001w TYPE TABLE OF t001w.
DATA:ls_t001w TYPE t001w.
SELECT * FROM t001w INTO CORRESPONDING FIELDS OF TABLE lt_t001w WHERE t001w~werks IN s_werks.
CLEAR:lv_message.
LOOP AT lt_t001w INTO ls_t001w.
AUTHORITY-CHECK OBJECT 'M_BEST_WRK'
ID 'ACTVT' FIELD '01'
ID 'WERKS' FIELD ls_t001w-werks.
IF sy-subrc NE 0.
IF lv_message IS INITIAL.
lv_message = ls_t001w-werks.
ELSE.
CONCATENATE lv_message ls_t001w-werks INTO lv_message SEPARATED BY '、'.
ENDIF.
ENDIF.
CLEAR:ls_t001w.
ENDLOOP.
IF lv_message IS NOT INITIAL.
lv_message = '您没有' && lv_message && '工厂的权限!' .
CONDENSE lv_message NO-GAPS.
MESSAGE lv_message TYPE 'S'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " FRM_AUTH_CHECK