得到application server上所有的logon user

124 阅读1分钟

通过function module THUSRINFO 可以得到当前application server instance上登陆user的详细信息,如terminal,使用的tcode, last transaction time等等。如果application server有多个instance,可以先使用function module RFC_GET_LOCAL_DESTINATIONS 取得所有的local RFC destination,再用RFC的方式调用THUSRINFO:

REPORT zuser.

DATA: lt_usr_liste TYPE STANDARD TABLE OF uinfo,
      lt_total     LIKE lt_usr_liste,
      lt_rfchosts  TYPE STANDARD TABLE OF rfchosts.

CONSTANTS: gc_user_name TYPE uinfo-bname VALUE 'User Name',
           gc_tcode     TYPE uinfo-tcode VALUE 'Tcode',
           gc_term      TYPE uinfo-term VALUE 'Terminal',
           gc_logon     TYPE uinfo-zeit VALUE 'Time'.

CALL FUNCTION 'RFC_GET_LOCAL_DESTINATIONS'
  TABLES
    localdest = lt_rfchosts.

CALL FUNCTION 'THUSRINFO'
  TABLES
    usr_tabl              = lt_usr_liste
  EXCEPTIONS
    communication_failure = 17.

ASSERT sy-subrc = 0.

APPEND LINES OF lt_usr_liste TO lt_total.

LOOP AT lt_rfchosts ASSIGNING FIELD-SYMBOL(<rfc>).
  CLEAR: lt_usr_liste.
  CALL FUNCTION 'THUSRINFO' DESTINATION <rfc>-rfcdest
    TABLES
      usr_tabl              = lt_usr_liste
    EXCEPTIONS
      communication_failure = 17.

  APPEND LINES OF lt_usr_liste TO lt_total.

ENDLOOP.

DELETE lt_total WHERE mandt <> sy-mandt.

SORT lt_total BY bname.

WRITE: / gc_user_name, gc_tcode, gc_term,  gc_logon.

LOOP AT lt_total ASSIGNING FIELD-SYMBOL(<user>).
  WRITE: / <user>-bname UNDER gc_user_name COLOR COL_NEGATIVE,
      <user>-tcode UNDER gc_tcode COLOR COL_POSITIVE,
      <user>-term UNDER gc_term COLOR COL_KEY,
      <user>-zeit UNDER gc_logon COLOR COL_TOTAL.
ENDLOOP.

运行结果如下所示:
clipboard1