*----------------------------------------------------------------------
* TABLES/Structure
*----------------------------------------------------------------------
TABLES:T001W,
YTDRIVERI,
YTDRICAR. *----------------------------------------------------------------------
* DATA
*----------------------------------------------------------------------
DATA: BEGIN OF GT_TAB OCCURS ,
WERKS LIKE T001W-WERKS,
END OF GT_TAB. DATA: BEGIN OF GT_NAM OCCURS ,
TPNAM LIKE YTDRIVERI-TPNAM,
END OF GT_NAM. DATA: BEGIN OF GT_DATA OCCURS .
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-. 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 .
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 .
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 =
SYSTEM_FAILURE =
OTHERS = . IF SY-SUBRC <> .
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 =
FOREIGN_LOCK =
INVALID_ACTION =
NO_CLIENTINDEPENDENT_AUTH =
NO_DATABASE_FUNCTION =
NO_EDITOR_FUNCTION =
NO_SHOW_AUTH =
NO_TVDIR_ENTRY =
NO_UPD_AUTH =
ONLY_SHOW_ALLOWED =
SYSTEM_FAILURE =
UNKNOWN_FIELD_IN_DBA_SELLIST =
VIEW_NOT_FOUND =
MAINTENANCE_PROHIBITED =
OTHERS = . IF SY-SUBRC <> .
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 ,
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 ''
ID 'WERKS' FIELD LT_T001W-WERKS.
IF SY-SUBRC NE .
MESSAGE I002 WITH LT_T001W-WERKS .
STOP.
ENDIF.
ENDLOOP.
ELSE.
MESSAGE I011 WITH '没有任何地点!'.
STOP.
ENDIF. ENDFORM. " FRM_CHECK_AUTHOR