zoukankan      html  css  js  c++  java
  • 开发: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.

  • 相关阅读:
    Delphi xe8 分割字符串太方便了
    Delphi XE8 如何删除Castalia这个渣渣
    Delphi XE7 XE8 开发iphone运用
    美丽图标网站
    xe6输出枚举类型每项字符串
    Delphi XE6记录类型赋值
    XE6 ShortString与String相互转换
    关于Delphi XE6的学习
    Delphi Byte数组与String类型的转换
    Delphi XE6 TStringHelper中的string类型转换
  • 原文地址:https://www.cnblogs.com/twttafku/p/14266519.html
Copyright © 2011-2022 走看看