SM30维护视图改用程序调用案例

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
 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值