1、SE37 创建一个Function
FUNCTION Z_ENQUE_SLEEP.
*"----------------------------------------------------------------------
*"*"本地接口: 根据需要设定定时时长
*"----------------------------------------------------------------------
WAIT UP TO 300 SECONDS.
ENDFUNCTION.
2、Se38 创建程序
REPORT zauto_refresh .
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*----------------------------------------------------------------------*
*ALV 输出定义
*----------------------------------------------------------------------*
*
TYPE-POOLS:SLIS ,TRUXS.
DATA: REPID LIKE SY-REPID,
LAYOUT TYPE SLIS_LAYOUT_ALV,
FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
VARIANT LIKE DISVARIANT,
DEF_VARIANT LIKE DISVARIANT,
LC_GLAY LIKE LVC_S_GLAY,
VARIANT_EXIT TYPE C,
KEYINFO TYPE SLIS_KEYINFO_ALV,
SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
PRINT TYPE SLIS_PRINT_ALV,
RT_EXTAB TYPE SLIS_T_EXTAB.
DATA:T_EVENTS TYPE SLIS_T_EVENT .
DATA WA_EVENT TYPE SLIS_ALV_EVENT.
DATA TEM_GRID TYPE REF TO CL_GUI_ALV_GRID.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
*定时器定义
DATA: G_INIT_ONCE,
OK_CODE(20),
G_REF_FROM_TIMER.
*----------------------------------------------------------------------*
*自动刷新相关定义
DATA:LS_LAYOUT TYPE LVC_S_LAYO,
LV_GRID TYPE REF TO CL_GUI_ALV_GRID.
START-OF-SELECTION.
IF G_INIT_ONCE <> 'X'.
G_INIT_ONCE = 'X'.
CALL FUNCTION 'Z_ENQUE_SLEEP'
STARTING NEW TASK 'WAIT'
PERFORMING WHEN_FINISHED ON END OF TASK.
ENDIF.
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
UP TO 10 ROWS
FROM ekpo
INTO TABLE it_ekko.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME = 'EKPO'
IS_LAYOUT = LAYOUT
* I_GRID_SETTINGS = LC_GLAY
IT_FIELDCAT = FCAT[]
* IT_SORT = SORT[]
* I_DEFAULT = 'X'
I_SAVE = 'A'
* IS_VARIANT = VARIANT
* it_events = t_events[]
TABLES
T_OUTTAB = it_ekko[]
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: L_SPACE(4).
IF G_REF_FROM_TIMER = 'X'.
CALL FUNCTION 'Z_ENQUE_SLEEP'
STARTING NEW TASK 'INFO'
PERFORMING WHEN_FINISHED ON END OF TASK.
G_REF_FROM_TIMER = ''.
ENDIF.
CASE R_UCOMM. "自动刷新
WHEN 'FCT_R'.
PERFORM GET_DATA.
PERFORM PROCESS_DATA.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = LV_GRID.
* CALL METHOD LV_GRID->GET_FRONTEND_LAYOUT
* IMPORTING
* ES_LAYOUT = LS_LAYOUT.
*
* LS_LAYOUT-CWIDTH_OPT = 'X'.
*
* CALL METHOD LV_GRID->SET_FRONTEND_LAYOUT
* EXPORTING
* IS_LAYOUT = LS_LAYOUT.
CALL METHOD LV_GRID->REFRESH_TABLE_DISPLAY.
CALL METHOD CL_GUI_CFW=>FLUSH
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2.
ENDCASE.
ENDFORM.
*---------------------------------------------------------------------*
* --> TASKNAME *
*---------------------------------------------------------------------*
FORM WHEN_FINISHED USING TASKNAME.
RECEIVE RESULTS FROM FUNCTION 'Z_ENQUE_SLEEP'.
G_REF_FROM_TIMER = 'X'.
* Trigger an event to run the at user-command
SET USER-COMMAND 'FCT_R'.
OK_CODE = 'FCT_R'.
SY-UCOMM = 'FCT_R'.
ENDFORM. " WHEN_FINISHED