zoukankan      html  css  js  c++  java
  • 功能: 用户长期未登录,程序设置自动过期

    *&---------------------------------------------------------------------*
    *& 使用场景,系统自动清理一段时期内未登录过的用户,节省用户资源
    *&
    *&---------------------------------------------------------------------*
    *&1、RSUSR200   拉出所有用户,  里面有一个字段 (Date of Last Logon);
    *&2、用户设置过期  使用su01  在"Logon data" 里面 有 validity Period;
    *&---------------------------------------------------------------------*
    REPORT ZDLUSER.
    DATA:ZRETURN TYPE TABLE OF  BAPIRET2 .

    FIELD-SYMBOLS:<LT_DATA>      TYPE ANY TABLE,
                  <LT_DATA_LINE> TYPE ANY TABLE.
    DATA:         LR_DATA      TYPE REF TO DATA,
                  LR_DATA_LINE TYPE REF TO DATA.
    DATA:         LR_DATA_DESCR      TYPE REF TO CL_ABAP_DATADESCR,
                  LR_DATA_DESCR_LINE TYPE REF TO CL_ABAP_DATADESCR.
    DATA:          USERNAME   TYPE BAPIBNAME-BAPIBNAME,
                   LOGONDATA  LIKE BAPILOGOND,
                   LOGONDATAX LIKE BAPILOGONX,
                   RETURN     LIKE  BAPIRET2 OCCURS WITH HEADER LINE.

    TYPESBEGIN OF TYP_ITAB,
             BNAME  TYPE XUBNAME,          "用户名
             TRDAT1 TYPE XULDATE_ALV,     "最后一次登录日期
           END OF TYP_ITAB.

    DATA:GT_ITAB TYPE STANDARD TABLE OF TYP_ITAB,
         GS_ITAB TYPE TYP_ITAB.

    DATA:LV_FLAG TYPE CHAR1.
    *  Important to set display = abap_false so the standard program won’t display the ALV
    CL_SALV_BS_RUNTIME_INFO=>SET(
      EXPORTING DISPLAY  = ABAP_FALSE
                METADATA = ABAP_FALSE
                DATA     = ABAP_TRUE ).

    * Submit standard program with selection table
    SUBMIT RSUSR200
      USING SELECTION-SET 'UEXPIRE90'
            EXPORTING LIST TO MEMORY
           AND RETURN.

    CLEAR:LV_FLAG.
    TRY."因MB51中ALV输出有header,list 所以要有2个参数
        CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF(
             IMPORTING R_DATA_DESCR      = LR_DATA_DESCR
                       R_DATA_LINE_DESCR = LR_DATA_DESCR_LINE ).

        CREATE DATA LR_DATA TYPE HANDLE LR_DATA_DESCR.
        CREATE DATA LR_DATA_LINE TYPE HANDLE LR_DATA_DESCR_LINE.

        ASSIGN LR_DATA->* TO <LT_DATA>.
        ASSIGN LR_DATA_LINE->* TO <LT_DATA_LINE>.

        CL_SALV_BS_RUNTIME_INFO=>GET_DATA(
          IMPORTING
            T_DATA      =      <LT_DATA>
    *        T_DATA_LINE      =      <LT_DATA_LINE>
               ).

      CATCH CX_SALV_BS_SC_RUNTIME_INFO.
        WRITE `Unable to retrieve ALV data` .
        LV_FLAG 'X'.
      CATCH CX_SY_REF_IS_INITIAL.
        WRITE 'NO DATA'.
        LV_FLAG 'X'.
    ENDTRY.

    CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL).
    CHECK LV_FLAG IS INITIAL .
    IF <LT_DATA>  IS NOT ASSIGNED.
      RETURN.
    ENDIF.
    MOVE-CORRESPONDING <LT_DATA> TO GT_ITAB.

    "用户设置过期
    CLEAR:GS_ITAB.
    LOOP AT GT_ITAB INTO GS_ITAB.

      USERNAME = GS_ITAB-BNAME.

      LOGONDATA-GLTGV = SY-DATUM 1.

      LOGONDATAX-GLTGV 'X'.

      LOGONDATA-GLTGB = SY-DATUM 1.

      LOGONDATAX-GLTGB 'X'.

      CALL FUNCTION 'BAPI_USER_CHANGE'
        EXPORTING
          USERNAME   = USERNAME
          LOGONDATA  = LOGONDATA
          LOGONDATAX = LOGONDATAX
        TABLES
          RETURN     RETURN.

      IF  SY-SUBRC .
        LOOP AT RETURN.
          WRITERETURN-MESSAGE .
        ENDLOOP.
      ENDIF.
    ENDLOOP.

  • 相关阅读:
    SVN客户端服务器搭建与使用(一)
    MyEclipse下XFire开发WebService实例
    SVN客户端服务器搭建与使用(三)
    MyEclipse中Svn插件
    Spring整合MyBatis
    MyEclipse中Properties文件中文编辑插件
    WebService的原理及概念
    字符集和字符编码(Charset & Encoding)(转)
    Android 4.0系统七大新功能(转)
    加密算法小知识
  • 原文地址:https://www.cnblogs.com/twttafku/p/ZDLUSER.html
Copyright © 2011-2022 走看看