SAP 跟踪记录用户

2023-10-13 15:38:47 浏览数 (2)

直接上代码

代码如下:

代码语言:javascript复制
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          = space  
    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

0 人点赞