首页 > 其他 > 详细

SM30维护视图屏蔽按钮与增加选择条件

时间:2019-09-11 19:23:20      阅读:105      评论:0      收藏:0      [点我收藏+]
*----------------------------------------------------------------------
*                          TABLES/Structure
*----------------------------------------------------------------------
TABLES:T001W,
       YTDRIVERI,
       YTDRICAR.

*----------------------------------------------------------------------
*                          DATA
*----------------------------------------------------------------------
DATA: BEGIN OF GT_TAB OCCURS 0,
       WERKS LIKE T001W-WERKS,
      END OF GT_TAB.

DATA: BEGIN OF GT_NAM OCCURS 0,
       TPNAM LIKE YTDRIVERI-TPNAM,
      END OF GT_NAM.



DATA: BEGIN OF GT_DATA OCCURS 0.
        INCLUDE STRUCTURE YTDRICAR.
DATA: END OF GT_DATA.


DATA: IT_VIMSELLIST TYPE TABLE OF VIMSELLIST,
      IW_VIMSELLIST TYPE VIMSELLIST,
      IT_VIMEXCLFUN TYPE TABLE OF VIMEXCLFUN,
      IW_VIMEXCLFUN TYPE VIMEXCLFUN.
*DATA: IT_MKOAR TYPE TABLE OF TY_MKOAR,
*      IW_MKOAR TYPE TY_MKOAR.
DATA: W_FLG TYPE C.


*======================================================================
*                          SELECTION-SCREEN
*======================================================================
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.

PARAMETERS:     P_WERKS LIKE T001W-WERKS DEFAULT W001.
SELECT-OPTIONS: S_TPNAM FOR  YTDRIVERI-TPNAM NO-EXTENSION NO INTERVALS.

SELECTION-SCREEN END OF BLOCK BLK1.


*----------------------------------------------------------------------
*  INITIALIZATION
*----------------------------------------------------------------------
INITIALIZATION.

* 初始化数据
  PERFORM FRM_INITIAL.

*----------------------------------------------------------------------
*  AT SELECTION-SCREEN
*----------------------------------------------------------------------
AT SELECTION-SCREEN.

* 权限检查部分
  PERFORM FRM_CHECK_AUTHOR.

*======================================================================
*                          MAIN PROGRAM
*======================================================================
*  START-OF-SELECTION
*----------------------------------------------------------------------
START-OF-SELECTION.

*&选择条件判断
  SELECT WERKS
    INTO TABLE GT_TAB
    FROM YTDRIVERI
   WHERE WERKS EQ P_WERKS.

  IF SY-SUBRC NE 0.
   MESSAGE I001.
  ENDIF.

*编辑过滤数据条件
IF P_WERKS IS NOT INITIAL.
  IW_VIMSELLIST-VIEWFIELD = WERKS.
  IW_VIMSELLIST-OPERATOR = EQ.
  IW_VIMSELLIST-AND_OR = AND.
  IW_VIMSELLIST-VALUE = P_WERKS.
  APPEND IW_VIMSELLIST TO IT_VIMSELLIST.
ENDIF.

*&司机名称作为选择条件
 IF S_TPNAM IS NOT INITIAL.
  SELECT TPNAM
    INTO TABLE GT_NAM
    FROM YTDRIVERI
   WHERE WERKS EQ P_WERKS
     AND TPNAM IN S_TPNAM.
  IF SY-SUBRC NE 0.
    MESSAGE I001.
  ENDIF.

*&司机名称作为过滤选择条件
  LOOP AT GT_NAM.
    IW_VIMSELLIST-VIEWFIELD = TPNAM.
    IW_VIMSELLIST-OPERATOR = EQ.
    IW_VIMSELLIST-AND_OR = OR.
    IW_VIMSELLIST-VALUE =  GT_NAM-TPNAM.
    APPEND IW_VIMSELLIST TO IT_VIMSELLIST.
*    CLEAR IW_MKOAR.
  ENDLOOP.
  ENDIF.


*屏蔽按钮(按T-CODE)
*  IW_VIMEXCLFUN-FUNCTION = ‘NEWL‘.
*  APPEND IW_VIMEXCLFUN TO IT_VIMEXCLFUN.
*  IW_VIMEXCLFUN-FUNCTION = ‘KOPE‘.
*  APPEND IW_VIMEXCLFUN TO IT_VIMEXCLFUN.
  IW_VIMEXCLFUN-FUNCTION = DELE.
  APPEND IW_VIMEXCLFUN TO IT_VIMEXCLFUN.
  " MKPF 全选

*BREAK AD_CAIXIANG.

**& -锁表
  CALL FUNCTION ENQUEUE_EYTDRIVERI
    EXPORTING
      MODE_YTDRIVERI     = E
      MANDT              = SY-MANDT
      WERKS              = P_WERKS
*     WERKS              = DBA_SELLIST-VALUE
    EXCEPTIONS
      FOREIGN_LOCK       = 1
      SYSTEM_FAILURE     = 2
      OTHERS             = 3.

 IF SY-SUBRC <> 0.
   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
 ENDIF.

*  CALL FUNCTION ‘YH_YTDRIVERI_CALL‘
*    EXPORTING
*      ACTION                       = ‘S‘
*      VIEW_NAME                    = ‘YTDRIVERI‘
*    TABLES
*      DBA_SELLIST                  = IT_VIMSELLIST
*      EXCL_CUA_FUNCT               = IT_VIMEXCLFUN
*    EXCEPTIONS
*      CLIENT_REFERENCE             = 1
*      FOREIGN_LOCK                 = 2
*      INVALID_ACTION               = 3
*      NO_CLIENTINDEPENDENT_AUTH    = 4
*      NO_DATABASE_FUNCTION         = 5
*      NO_EDITOR_FUNCTION           = 6
*      NO_SHOW_AUTH                 = 7
*      NO_TVDIR_ENTRY               = 8
*      NO_UPD_AUTH                  = 9
*      ONLY_SHOW_ALLOWED            = 10
*      SYSTEM_FAILURE               = 11
*      UNKNOWN_FIELD_IN_DBA_SELLIST = 12
*      VIEW_NOT_FOUND               = 13
*      MAINTENANCE_PROHIBITED       = 14
*      OTHERS                       = 15.


  CALL FUNCTION VIEW_MAINTENANCE_CALL
    EXPORTING
      ACTION                       = S
      VIEW_NAME                    = YTDRIVERI
    TABLES
      DBA_SELLIST                  = IT_VIMSELLIST
      EXCL_CUA_FUNCT               = IT_VIMEXCLFUN
    EXCEPTIONS
      CLIENT_REFERENCE             = 1
      FOREIGN_LOCK                 = 2
      INVALID_ACTION               = 3
      NO_CLIENTINDEPENDENT_AUTH    = 4
      NO_DATABASE_FUNCTION         = 5
      NO_EDITOR_FUNCTION           = 6
      NO_SHOW_AUTH                 = 7
      NO_TVDIR_ENTRY               = 8
      NO_UPD_AUTH                  = 9
      ONLY_SHOW_ALLOWED            = 10
      SYSTEM_FAILURE               = 11
      UNKNOWN_FIELD_IN_DBA_SELLIST = 12
      VIEW_NOT_FOUND               = 13
      MAINTENANCE_PROHIBITED       = 14
      OTHERS                       = 15.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.



*&---------------------------------------------------------------------*
*&      Form  FRM_INITIAL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_INITIAL .

ENDFORM.                    " FRM_INITIAL
*&---------------------------------------------------------------------*
*&      Form  FRM_CHECK_AUTHOR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_CHECK_AUTHOR .
  DATA: BEGIN OF LT_T001W OCCURS 0,
        WERKS LIKE T001L-WERKS,
        END OF LT_T001W.

  SELECT WERKS
    INTO TABLE LT_T001W
    FROM T001L
   WHERE WERKS EQ P_WERKS.

  IF LT_T001W[] IS NOT INITIAL.
    LOOP AT LT_T001W.
      AUTHORITY-CHECK OBJECT YHLM_PLANT
               ID ACTVT FIELD 03
               ID WERKS FIELD LT_T001W-WERKS.
      IF SY-SUBRC NE 0.
        MESSAGE I002 WITH LT_T001W-WERKS .
        STOP.
      ENDIF.
    ENDLOOP.
  ELSE.
    MESSAGE I011 WITH 没有任何地点!.
    STOP.
  ENDIF.


ENDFORM.                    " FRM_CHECK_AUTHOR

 

SM30维护视图屏蔽按钮与增加选择条件

原文:https://www.cnblogs.com/rainysblog/p/11507782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!