SAP ABAP 简单代码实现ALV定时刷新

这篇博客介绍了如何在SAP ABAP中创建一个名为Z_ENQUE_SLEEP的功能,用于设置定时等待。接着,展示了如何在Se38中创建一个程序,使用SELECT语句获取数据并显示在ALV表格中。程序还包括了一个自动刷新功能,当用户触发特定命令时,会调用Z_ENQUE_SLEEP进行延时,并在结束时刷新ALV表格数据。
摘要由CSDN通过智能技术生成

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李威威wiwi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值