开发:RFC调用信息获取

*&---------------------------------------------------------------------*
*&  Include  ZRFC_CNT
*&  RFC 调用次数统计
*&  使用时第一行直接INCLUDE   ZRFC_CNT
*&---------------------------------------------------------------------*



 DATA: LS_TAB_201803081656 LIKE ZRFC_CNT.

 DATA:
   CALLER_DESTINATION         LIKE  RFCDISPLAY-RFCDEST,
   CALLER_IP                  LIKE  RFCDISPLAY-RFCDEST,
   CALLER_TRUSTED             LIKE  RFCDISPLAY-RFCSLOGIN,
   CALLER_RFC_TYPE            LIKE  RFCDES-RFCTYPE,
   CALLER_CLIENT              LIKE  RFCDISPLAY-RFCCLIENT,
   CALLER_WHOAMI              LIKE  RFCDISPLAY-RFCUSER,
   CALLER_START_INFO          LIKE  RFCDISPLAY-RFCDEST,
   CALLER_TCODE               LIKE  SY-TCODE,
   CALLER_PROGRAM             LIKE  SY-CPROG,
   CALLER_SYSTEM_ID           LIKE  SY-SYSID,
   CALLER_SYSTEM_RELEASE      LIKE  SY-SAPRL,
   CALLER_KERNEL_RELEASE      LIKE  SY-SAPRL,
   CALLER_ASYNC_TYPE          LIKE  SY-BATCH,
   CALLER_TRANS_TYPE          LIKE  SY-BATCH,
   CALLER_PCS                 LIKE  SY-BATCH,
   CALLER_CODEPAGE            LIKE  TCP00-CPCODEPAGE,
   CALLER_MDMP                TYPE  CHAR1,
   CALLER_INSTALLATION_NUMBER TYPE  SLIC_INST.

 CALL FUNCTION 'RFC_GET_ATTRIBUTES'
   IMPORTING
     CALLER_DESTINATION         = CALLER_DESTINATION
     CALLER_IP                  = CALLER_IP
     CALLER_TRUSTED             = CALLER_TRUSTED
     CALLER_RFC_TYPE            = CALLER_RFC_TYPE
     CALLER_CLIENT              = CALLER_CLIENT
     CALLER_WHOAMI              = CALLER_WHOAMI
     CALLER_START_INFO          = CALLER_START_INFO
     CALLER_TCODE               = CALLER_TCODE
     CALLER_PROGRAM             = CALLER_PROGRAM
     CALLER_SYSTEM_ID           = CALLER_SYSTEM_ID
     CALLER_SYSTEM_RELEASE      = CALLER_SYSTEM_RELEASE
     CALLER_KERNEL_RELEASE      = CALLER_KERNEL_RELEASE
     CALLER_ASYNC_TYPE          = CALLER_ASYNC_TYPE
     CALLER_TRANS_TYPE          = CALLER_TRANS_TYPE
     CALLER_PCS                 = CALLER_PCS
     CALLER_CODEPAGE            = CALLER_CODEPAGE
     CALLER_MDMP                = CALLER_MDMP
     CALLER_INSTALLATION_NUMBER = CALLER_INSTALLATION_NUMBER
   EXCEPTIONS
     SYSTEM_CALL_NOT_SUPPORTED  1
     NO_RFC_COMMUNICATION       2
     INTERNAL_ERROR             3
     OTHERS                     4.


 IF  SY-SUBRC > 0.


   DATA:
     L_LONG_LINE  TYPE C LENGTH 2048,
     L_TERMINAL   TYPE STRING,
     L_IP_ADDRESS TYPE NI_NODEADDR,
     TERMINAL_ID  TYPE SYINDEX,
     LI_USR_TABL  TYPE STANDARD TABLE OF UINFO,
     NODEADDR     TYPE NI_NODEADDR.

   " Get user's terminal information
   CALL FUNCTION 'TH_USER_INFO'
     IMPORTING
       TID     = TERMINAL_ID
       ADDRSTR = L_IP_ADDRESS.

   CALL FUNCTION 'THUSRINFO'
     TABLES
       USR_TABL = LI_USR_TABL.

   DATA(LONGNAME= LI_USR_TABL[ TID = TERMINAL_ID ]-TERM.

   CALL FUNCTION 'NI_NAME_TO_ADDR'
     EXPORTING
       HOSTNAME      = CONV NI_HOSTNAME( LONGNAME )
     IMPORTING
       NODEADDR      = NODEADDR
     EXCEPTIONS
       EHOST_UNKNOWN 1
       EINVAL        2
       OTHERS        3.

   IF SY-SUBRC <> 0.
     IF L_IP_ADDRESS IS NOT INITIAL.
*        OUT = L_IP_ADDRESS && |-| && LONGNAME.

       MOVE L_IP_ADDRESS TO CALLER_IP.
       MOVE LONGNAME TO CALLER_DESTINATION.


     ELSE.
*       OUT = 'Not available' ##NO_TEXT.
     ENDIF.
   ELSE.
*      OUT = NODEADDR && |-| && LONGNAME  &&  |-| && SY-XFORM ..


     MOVE NODEADDR TO CALLER_IP.
     MOVE LONGNAME TO CALLER_DESTINATION.

   ENDIF.


 ENDIF.




 DATA: V_RPT TYPE STRING.

 SELECT SINGLE RPTNAME INTO V_RPT FROM ZRPT_STOP WHERE RPTNAME = SY-XFORM.

 IF SY-SUBRC 0.

   RAISE  EXCEPTION type CX_SY_FILE_AUTHORITY  .

 ENDIF.






 SELECT SINGLE * INTO LS_TAB_201803081656
 FROM ZRFC_CNT
 WHERE  RPTNAME = SY-XFORM
   AND SPMON = SY-DATUM+0(6)
 AND  CALLER_IP =  CALLER_IP
   .
 IF SY-SUBRC 0.
   LS_TAB_201803081656-RPTCNT = LS_TAB_201803081656-RPTCNT + 1.
 ELSE.
   LS_TAB_201803081656-RPTCNT 1.
 ENDIF.



 MOVE      CALLER_DESTINATION          TO  LS_TAB_201803081656-CALLER_DESTINATION.
 MOVE      CALLER_IP                   TO  LS_TAB_201803081656-CALLER_IP.
 MOVE      CALLER_TRUSTED              TO  LS_TAB_201803081656-CALLER_TRUSTED.
 MOVE      CALLER_RFC_TYPE             TO  LS_TAB_201803081656-CALLER_RFC_TYPE.
 MOVE      CALLER_CLIENT               TO  LS_TAB_201803081656-CALLER_CLIENT.
 MOVE      CALLER_WHOAMI               TO  LS_TAB_201803081656-CALLER_WHOAMI.
 MOVE      CALLER_START_INFO           TO  LS_TAB_201803081656-CALLER_START_INFO.
 MOVE      CALLER_TCODE                TO  LS_TAB_201803081656-CALLER_TCODE.
 MOVE      CALLER_PROGRAM              TO  LS_TAB_201803081656-CALLER_PROGRAM.
 MOVE      CALLER_SYSTEM_ID            TO  LS_TAB_201803081656-CALLER_SYSTEM_ID.
 MOVE      CALLER_SYSTEM_RELEASE       TO  LS_TAB_201803081656-CALLER_SYSTEM_RELEASE.
 MOVE      CALLER_KERNEL_RELEASE       TO  LS_TAB_201803081656-CALLER_KERNEL_RELEASE.
 MOVE      CALLER_ASYNC_TYPE           TO  LS_TAB_201803081656-CALLER_ASYNC_TYPE.
 MOVE      CALLER_TRANS_TYPE           TO  LS_TAB_201803081656-CALLER_TRANS_TYPE.
 MOVE      CALLER_PCS                  TO  LS_TAB_201803081656-CALLER_PCS.
 MOVE      CALLER_CODEPAGE             TO  LS_TAB_201803081656-CALLER_CODEPAGE.
 MOVE      CALLER_MDMP                 TO  LS_TAB_201803081656-CALLER_MDMP.
 MOVE      CALLER_INSTALLATION_NUMBER  TO  LS_TAB_201803081656-CALLER_INSTALLATION_NUMBER.






 LS_TAB_201803081656-RPTNAME = SY-XFORM.
 LS_TAB_201803081656-USR = SY-UNAME.
 LS_TAB_201803081656-UDAT = SY-DATUM.
 LS_TAB_201803081656-UTIM =  SY-UZEIT.
 LS_TAB_201803081656-SPMON = SY-DATUM+0(6).
 IF LS_TAB_201803081656-SDAT IS INITIAL.
   LS_TAB_201803081656-SDAT = SY-DATUM.
 ENDIF.

 MODIFY ZRFC_CNT FROM LS_TAB_201803081656.
 COMMIT WORK AND WAIT.





*  OUT = LS_TAB_201803081656-CALLER_IP && |-| && LS_TAB_201803081656-CALLER_DESTINATION && |-| &&  LS_TAB_201803081656-RPTNAME  && |-| &&  LS_TAB_201803081656-USR.

原文地址:https://www.cnblogs.com/twttafku/p/14266519.html