This report displays User's info (SM04) using the FM

REPORT z_alv_auto_refresh.
* *>************************************************ *********************
* * This report displays User's info (SM04) using the FM: *
* * REUSE_ALV_LIST_DISPLAY *
* * The list is auto-refreshed (refresh time: 5 seconds) *
* ************************************************** *********************
TYPE-POOLS: slis. "ALV Global Types

DATA:
gt_user LIKE uinfo OCCURS 0 WITH HEADER LINE.  "User info in SM04

* *------------------------------------------------- --------------------*
START-OF-SELECTION.

  PERFORM f_read_data.

  PERFORM f_display_data.

* *------------------------------------------------- --------------------*
* * Form F_LIRE_DATA
* *------------------------------------------------- --------------------*
FORM f_read_data.

  REFRESH gt_user.

* * Get User's info
  CALL FUNCTION 'THUSRINFO'
    TABLES
      usr_tabl = gt_user.

* * Wait in a task
  PERFORM f_call_rfc_wait.

ENDFORM. "F_READ_DATA
* *------------------------------------------------- --------------------*
* * Form F_DISPLAY_DATA
* *------------------------------------------------- --------------------*
FORM f_display_data.

  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &1.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DEFINE m_event_exit.
    clear ls_event_exit.
    ls_event_exit-ucomm = &1.
    ls_event_exit-after = 'X'.
    append ls_event_exit to lt_event_exit.
  END-OF-DEFINITION.

  DATA:
  ls_layout TYPE slis_layout_alv,
  lt_sort TYPE slis_t_sortinfo_alv,
  ls_sort TYPE slis_sortinfo_alv,
  lt_event_exit TYPE slis_t_event_exit,
  ls_event_exit TYPE slis_event_exit.

* * Build Sort Table
  m_sort  'ZEIT'.
* * Build Event Exit Table
  m_event_exit '&NTE'. "Refresh
  ls_layout-zebra = 'X'.
  ls_layout-colwidth_optimize = 'X'.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      i_callback_program      = sy-cprog
      i_callback_user_command = 'USER_COMMAND'
      is_layout               = ls_layout
      i_structure_name        = 'UINFO'
      it_sort                 = lt_sort
      it_event_exit           = lt_event_exit
    TABLES
      t_outtab                = gt_user.

ENDFORM. "F_DISPLAY_DATA
* *------------------------------------------------- --------------------*
* * FORM USER_COMMAND *
* *------------------------------------------------- --------------------*
FORM user_command USING i_ucomm TYPE syucomm
is_selfield TYPE slis_selfield. "# EC CALLED

  CASE i_ucomm.
    WHEN '&NTE'.
      PERFORM f_read_data.
      is_selfield-refresh = 'X'.
      SET USER-COMMAND '&OPT'. "Optimize columns width
  ENDCASE.

ENDFORM. "USER_COMMAND
* *------------------------------------------------- --------------------*
* * Form F_CALL_RFC_WAIT
* *------------------------------------------------- --------------------*
FORM f_call_rfc_wait.

  DATA lv_mssg(80). "# EC NEEDED

* * Wait in a task
  CALL FUNCTION 'RFC_PING_AND_WAIT' STARTING NEW TASK '001'
    PERFORMING f_task_end ON END OF TASK
    EXPORTING
      seconds = 5 "Refresh time
      busy_waiting = ''.
* EXCEPTIONS
*  resource_failure = 1
*  COMMUNICATION_FAILURE = 2 message LV_MSSG
*  system_failure = 3 MESSAGE lv_mssg
*  OTHERS = 4.

ENDFORM. "F_CALL_RFC_WAIT
* *------------------------------------------------- --------------------*
* * Form F_TASK_END
* *------------------------------------------------- --------------------*
FORM f_task_end USING u_taskname.

  DATA lv_mssg(80). "# EC NEEDED

* * Receiving task results
  RECEIVE RESULTS FROM FUNCTION 'RFC_PING_AND_WAIT'
 EXCEPTIONS
  RESOURCE_FAILURE = 1
  communication_failure = 2 MESSAGE lv_mssg
  system_failure = 3 MESSAGE lv_mssg
  OTHERS = 4.

  CHECK sy-subrc EQ 0.
  SET USER-COMMAND '&NTE'. "Refresh

ENDFORM. "F_TASK_END
* *************** END OF PROGRAM Z_ALV_AUTO_REFRESH *********************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值