SAP 报表使用次数报表

*&---------------------------------------------------------------------*
*& Report  ZRTOT_USER_COLLECTOR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zrtot_user_collector.
***********************************************************************
* Project Name  : Tecno SAP Implementation Project
* Program Name  : ZRTOT_USER_COLLECTOR
* Description   : 报表使用分析
* Date/Autohr   : 2015-10-13 15:03:03
* Use Department:
***********************************************************************
* M O D I F I C A T I O N  L O G
***********************************************************************
* ChangeDate  Programmer  Request     Description
* ==========  ==========  ==========  =================================
*
***********************************************************************
"引用
TYPE-POOLS : slis.
TABLES:usr02,swncaggusertcode,rs38m, user_addr.


"前端查询的历史记录
TYPES : BEGIN OF ty_alv,
          account        TYPE swncaggusertcode-account,
          name           TYPE adrp-name_first,
          entry_id       TYPE swncaggusertcode-entry_id,
          count          TYPE swncaggusertcode-count,
          dcount         TYPE swncaggusertcode-dcount,
          ucount         TYPE swncaggusertcode-ucount,
          bcount         TYPE swncaggusertcode-bcount,
          ecount         TYPE swncaggusertcode-ecount,
          scount         TYPE swncaggusertcode-scount,
          luw_count      TYPE swncaggusertcode-luw_count,
          tmbytesin      TYPE swncaggusertcode-tmbytesin,
          tmbytesout     TYPE swncaggusertcode-tmbytesout,
          respti         TYPE swncaggusertcode-respti,
          respti_avg     TYPE swncaggusertcode-respti,
          procti         TYPE swncaggusertcode-procti,
          procti_avg     TYPE swncaggusertcode-procti,
          cputi          TYPE swncaggusertcode-cputi,
          cputi_avg      TYPE swncaggusertcode-cputi,
          queueti        TYPE swncaggusertcode-queueti,
          queueti_avg    TYPE swncaggusertcode-queueti,
          rollwaitti     TYPE swncaggusertcode-rollwaitti,
          rollwaitti_avg TYPE swncaggusertcode-rollwaitti,
          guitime        TYPE swncaggusertcode-guitime,
          guitime_avg    TYPE swncaggusertcode-guitime,
          guicnt         TYPE swncaggusertcode-guicnt,
          guinettime     TYPE swncaggusertcode-guinettime,
          guinettime_avg TYPE swncaggusertcode-guinettime,
          date           TYPE sy-datum,
          department     TYPE user_addr-department,
        END OF ty_alv.

DATA:gs_alv TYPE ty_alv,
     gt_alv TYPE STANDARD TABLE OF ty_alv.


*data: gt_usertcode  type swnc_t_aggusertcode,
*      gs_usertcode type swncaggusertcode.

TYPES: BEGIN OF ty_usertcode.
         INCLUDE STRUCTURE swncaggusertcode.
TYPES:   date       TYPE sy-datum,
         department TYPE user_addr-department,
       END OF ty_usertcode.

DATA: gt_usertcode TYPE TABLE OF ty_usertcode,
      gs_usertcode TYPE ty_usertcode.


DATA: gt_fieldcat TYPE lvc_t_fcat WITH HEADER LINE,  "ALV字段控制
      gw_layout   TYPE lvc_s_layo,                   "ALV格式控制
      gt_events   TYPE slis_t_event WITH HEADER LINE, "ALV标题
      g_title     TYPE lvc_title.
*======================================================================*
*  Selection Screen
*======================================================================*
SELECTION-SCREEN BEGIN OF BLOCK blk01 WITH FRAME TITLE TEXT-b01.
*  parameter: p_month type dats default sy-datum obligatory."查询月份
  SELECT-OPTIONS: p_month FOR sy-datum  OBLIGATORY."查询月份
  SELECT-OPTIONS:s_user FOR usr02-bname DEFAULT sy-uname MODIF ID m1.
  SELECT-OPTIONS:s_depart FOR user_addr-department MODIF ID m2 no-DISPLAY."部门
  SELECT-OPTIONS:s_tc FOR rs38m-programm.
SELECTION-SCREEN END OF BLOCK blk01.

SELECTION-SCREEN: BEGIN OF BLOCK bl02 WITH FRAME TITLE TEXT-b03.
  PARAMETER: "r_deteai RADIOBUTTON GROUP g1 ,
             r_daysum RADIOBUTTON GROUP g1 DEFAULT 'X',
             r_monsum RADIOBUTTON GROUP g1.
SELECTION-SCREEN: END OF BLOCK bl02.

*SELECTION-SCREEN: BEGIN OF BLOCK bl03 WITH FRAME TITLE TEXT-b04.
*  PARAMETER: c_person RADIOBUTTON GROUP g2 DEFAULT 'X' USER-COMMAND u01,
*            c_depart RADIOBUTTON GROUP g2 .
*SELECTION-SCREEN: END OF BLOCK bl03.

*
*SELECTION-SCREEN BEGIN OF BLOCK blk02 WITH FRAME TITLE TEXT-b02.
*  SELECTION-SCREEN BEGIN OF LINE.
*    SELECTION-SCREEN COMMENT 1(79) TEXT-100.
*  SELECTION-SCREEN END OF LINE.
*  SELECTION-SCREEN BEGIN OF LINE.
*    SELECTION-SCREEN COMMENT 1(79) TEXT-101.
*  SELECTION-SCREEN END OF LINE.
*  SELECTION-SCREEN BEGIN OF LINE.
*    SELECTION-SCREEN COMMENT 1(79) TEXT-102.
*  SELECTION-SCREEN END OF LINE.
*SELECTION-SCREEN END OF BLOCK blk02.



DEFINE append_fieldcat.
  CLEAR gt_fieldcat.
  gt_fieldcat-fieldname     = &1.
  gt_fieldcat-coltext       = &2.
  gt_fieldcat-scrtext_l     = &2.
  gt_fieldcat-scrtext_m     = &2.
  gt_fieldcat-scrtext_s     = &2.
  gt_fieldcat-no_zero       = &3.
  gt_fieldcat-outputlen     = &4.
  gt_fieldcat-edit          = &5.
  APPEND gt_fieldcat.
END-OF-DEFINITION.
*======================================================================*
*  Includes
*======================================================================*
*** Global Data Declear
*INCLUDE <program>_c01.  "Class Definition
*INCLUDE <program>_top.  "Global Variable
*INCLUDE <program>_o01.  "PBO
*INCLUDE <program>_i01.  "PAI
*INCLUDE <program>_f01.  "Subroutine(FORMS)
*======================================================================*
*  Selection Screen Events
*======================================================================*
*** Maintain Selection Screen Output
*AT SELECTION-SCREEN OUTPUT.

*** F4 Value Help
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
*  PERFORM frm_f4_path CHANGING p_path.

*** Check Input Data
*AT SELECTION-SCREEN.

*AT SELECTION-SCREEN ON <f>.
*AT SELECTION-SCREEN ON BLOCK <>.
****CHECK ON SELECT SCREEN INPUT

*======================================================================*
*  Report events
*======================================================================*
** initial data
INITIALIZATION.

*部门描述EARCH HELP
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_depart-low.
*  PERFORM frm_f4_for_s_stext USING 's_depart-low'.
*
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_depart-high.
*  PERFORM frm_f4_for_s_stext USING 's_depart-high'.

AT SELECTION-SCREEN OUTPUT.
  PERFORM frm_modify_screen.
** Prepare Report Data
START-OF-SELECTION.
  PERFORM frm_get_data.

  PERFORM frm_data_count.



** Output Report
END-OF-SELECTION.
  PERFORM frm_alv_out.

*======================================================================*
*  List events
*======================================================================*
*** Page header
*TOP-OF-PAGE.

*** Page Header After First List
*TOP-OF-PAGE during line-selection

*** Page Footer
*END-OF-PAGE.

*** When Double Click
*AT LINE-SELECTION.

*** When Click Some Icon (function code)
*AT USER-COMMAND.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_data .
  DATA: gt_usertcode_copy  TYPE swnc_t_aggusertcode WITH HEADER LINE.
*  data: gt_usertcode_copy  type swncaggusertcode .
  DATA: gt_days TYPE TABLE OF casdayattr WITH HEADER LINE.
  IF p_month-high IS INITIAL.
    p_month-high = p_month-low.
  ENDIF.
  "获取详细日期
  CALL FUNCTION 'DAY_ATTRIBUTES_GET'
    EXPORTING
*     FACTORY_CALENDAR           = ' '
*     HOLIDAY_CALENDAR           = ' '
      date_from                  = p_month-low
      date_to                    = p_month-high
      language                   = sy-langu
*     NON_ISO                    = ' '
*   IMPORTING
*     YEAR_OF_VALID_FROM         =
*     YEAR_OF_VALID_TO           =
*     RETURNCODE                 =
    TABLES
      day_attributes             = gt_days[]
    EXCEPTIONS
      factory_calendar_not_found = 1
      holiday_calendar_not_found = 2
      date_has_invalid_format    = 3
      date_inconsistency         = 4
      OTHERS                     = 5.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


  LOOP AT gt_days.
    REFRESH gt_usertcode_copy.
    CALL FUNCTION 'SWNC_COLLECTOR_GET_AGGREGATES'
      EXPORTING
        component     = 'TOTAL'
        periodtype    = 'D'
        periodstrt    = gt_days-date
      TABLES
        usertcode     = gt_usertcode_copy
      EXCEPTIONS
        no_data_found = 1
        OTHERS        = 2.

    DELETE  gt_usertcode_copy WHERE tasktype <> '01'.

    LOOP AT gt_usertcode_copy.
      MOVE-CORRESPONDING gt_usertcode_copy TO gs_usertcode.
      gs_usertcode-date = gt_days-date.
      APPEND gs_usertcode TO gt_usertcode[].
    ENDLOOP.
*   APPEND LINES OF gt_usertcode_copy[] to gt_usertcode[].
  ENDLOOP.
*  call function 'SWNC_COLLECTOR_GET_AGGREGATES'
*
*    exporting
*      component     = 'TOTAL'
*      periodtype    = 'M'
*      periodstrt    = p_month
*    tables
*      usertcode     = gt_usertcode
*    exceptions
*      no_data_found = 1
*      others        = 2.
*
*   delete  gt_usertcode where tasktype <> '01'.





  LOOP AT gt_usertcode INTO gs_usertcode WHERE entry_id(1) = 'Z'.
    gs_usertcode-entry_id = gs_usertcode-entry_id(72).
    MODIFY gt_usertcode FROM gs_usertcode.
  ENDLOOP.

  LOOP AT gt_usertcode INTO gs_usertcode WHERE entry_id(1) = 'Z' AND account IN s_user AND entry_id IN s_tc.

    MOVE-CORRESPONDING gs_usertcode TO gs_alv.

    SELECT SINGLE adrp~name_last department INTO ( gs_alv-name,gs_alv-department )
     FROM adrp INNER JOIN usr21 ON adrp~persnumber = usr21~persnumber
     INNER JOIN usr02 ON usr21~bname = usr02~bname
     INNER JOIN user_addr ON user_addr~bname = usr21~bname
     WHERE usr02~bname = gs_alv-account
    AND department IN s_depart.
*       gs_alv-respti_avg    =  gs_alv-respti / gs_alv-count.
*       gs_alv-procti_avg    =  gs_alv-procti / gs_alv-count.
*       gs_alv-cputi_avg     =  gs_alv-cputi / gs_alv-count.
*       gs_alv-queueti_avg   =  gs_alv-queueti / gs_alv-count.
*       gs_alv-rollwaitti_avg = gs_alv-rollwaitti / gs_alv-count.
*       gs_alv-guitime_avg    = gs_alv-guitime / gs_alv-count.
*       gs_alv-guinettime_avg    = gs_alv-guinettime / gs_alv-count.
    APPEND gs_alv TO gt_alv.
    CLEAR gs_alv.
  ENDLOOP.

  DELETE gt_alv WHERE department NOT IN s_depart.


ENDFORM.                    " FRM_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_OUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_alv_out .
  PERFORM frm_fieldcat.
  PERFORM frm_layout.
  PERFORM frm_output.
ENDFORM.                    " FRM_ALV_OUT
*&---------------------------------------------------------------------*
*&      Form  FRM_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_fieldcat .

  append_fieldcat 'DEPARTMENT'    '部门'                '' '' ''.
  IF r_daysum = 'X'.
    append_fieldcat 'DATE'    '日期'                '' '' ''.
  ENDIF.

  IF r_monsum = 'X'.
    append_fieldcat 'DATE'    '月份'                '' '' ''.
  ENDIF.

*  IF c_person  = 'X'.
    append_fieldcat 'ACCOUNT'    '用户'                '' '' ''.
    append_fieldcat 'NAME'       '用户名'                '' '' ''.
*  ENDIF.
  append_fieldcat 'ENTRY_ID'   '事物/报表/作业'                '' '' ''.
  append_fieldcat 'COUNT'      '执行次数'                '' '' ''.
*append_fieldcat 'DCOUNT'     'DCount'                '' '' ''.
*append_fieldcat 'UCOUNT'     'UCount'                '' '' ''.
*append_fieldcat 'BCOUNT'     'BCount'                '' '' ''.
*append_fieldcat 'ECOUNT'     'ECount'                '' '' ''.
*append_fieldcat 'SCOUNT'     'SCount'                '' '' ''.
*append_fieldcat 'LUW_COUNT'  'LUW Count'                '' '' ''.
  append_fieldcat 'TMBYTESIN'  '总输入(字节)'                '' '' ''.
  append_fieldcat 'TMBYTESOUT' '总输出(字节)'                '' '' ''.
  append_fieldcat 'RESPTI' '总响应时间'                '' '' ''.
  append_fieldcat 'RESPTI_AVG' '平均响应时间'                '' '' ''.
  append_fieldcat 'PROCTI' '总处理时间'                '' '' ''.
  append_fieldcat 'PROCTI_AVG' '平均处理时间'                '' '' ''.
  append_fieldcat 'CPUTI' '总CPU'                '' '' ''.
  append_fieldcat 'CPUTI_AVG' '平均CPU'                '' '' ''.
  append_fieldcat 'QUEUETI' '总队列时间'                '' '' ''.
  append_fieldcat 'QUEUETI_AVG' '平均队列时间'                '' '' ''.
  append_fieldcat 'ROLLWAITTI' '回滚等待时间'                '' '' ''.
  append_fieldcat 'ROLLWAITTI_AVG' '平均回滚等待时间'                '' '' ''.
  append_fieldcat 'GUITIME' 'GUI时间'                '' '' ''.
  append_fieldcat 'GUITIME_AVG' '平均GUI时间'                '' '' ''.
  append_fieldcat 'GUICNT' '通讯次数'                '' '' ''.
  append_fieldcat 'GUINETTIME' 'GUI通讯时间'                '' '' ''.
  append_fieldcat 'GUINETTIME_AVG' '平均GUI通讯时间'                '' '' ''.
ENDFORM.                    " FRM_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  FRM_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_layout .
  gw_layout-cwidth_opt = 'X'.
  gw_layout-zebra             = 'X'.
ENDFORM.                    " FRM_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  FRM_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_output .
*  l_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
*     I_INTERFACE_CHECK      = ' '
*     I_BYPASSING_BUFFER     =
*     I_BUFFER_ACTIVE        =
      i_callback_program     = sy-repid
*     i_callback_pf_status_set          = 'FRM_SET_STATUS'
*     i_callback_user_command           = 'FRM_USER_COMMAND'
      i_callback_top_of_page = 'TOP-OF-PAGE'
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME       =
*     I_BACKGROUND_ID        = ' '
*     I_GRID_TITLE           =
*     I_GRID_SETTINGS        =
      is_layout_lvc          = gw_layout
      it_fieldcat_lvc        = gt_fieldcat[]
*     IT_EXCLUDING           =
*     IT_SPECIAL_GROUPS_LVC  =
*     IT_SORT_LVC            =
*     IT_FILTER_LVC          =
*     IT_HYPERLINK           =
*     IS_SEL_HIDE            =
*     I_DEFAULT              = 'X'
      i_save                 = 'A'
*     IS_VARIANT             =
      it_events              = gt_events[]
*     IT_EVENT_EXIT          =
*     IS_PRINT_LVC           =
*     IS_REPREP_ID_LVC       =
*     I_SCREEN_START_COLUMN  = 0
*     I_SCREEN_START_LINE    = 0
*     I_SCREEN_END_COLUMN    = 0
*     I_SCREEN_END_LINE      = 0
*     I_HTML_HEIGHT_TOP      =
*     I_HTML_HEIGHT_END      =
*     IT_ALV_GRAPHICS        =
*     IT_EXCEPT_QINFO_LVC    =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*  IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER =
    TABLES
      t_outtab               = gt_alv
    EXCEPTIONS
      program_error          = 1
      OTHERS                 = 2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " FRM_OUTPUT

*&---------------------------------------------------------------------*
*&      FORM  TOP-OF-PAGE
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM top-of-page .
  DATA: l_line     TYPE slis_listheader,
        l_t_header TYPE slis_t_listheader.


  CLEAR l_line.
  l_line-typ  = 'H'.
*  IF P_PARAM1 = 'X'.
  l_line-info = '报表使用率分析表'.
*  ELSEIF P_PARAM2 = 'X'.
*    L_LINE-INFO = '报表访问次数明细'.
*  ENDIF.
  APPEND l_line TO l_t_header.


  l_line-typ  = 'H'.
  CONCATENATE p_month-low(4) '年' p_month-low+4(2) '月' p_month-low+6(2) '日' '至' p_month-high(4) '年' p_month-high+4(2) '月' p_month-high+6(2) '日' INTO l_line-info.
  APPEND l_line TO l_t_header.

  l_line-info = '单位:次/毫秒/字节'.
  APPEND l_line TO l_t_header.


  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = l_t_header.


ENDFORM. "TOP-OF-PAGE
*&---------------------------------------------------------------------*
*&      Form  FRM_DATA_COUNT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_data_count .
  DATA: gt_alv_copy  TYPE STANDARD TABLE OF ty_alv.
  APPEND LINES OF gt_alv[] TO gt_alv_copy[].
  REFRESH gt_alv.
  "按部门
  "按天汇总

  if r_daysum = 'X' .
    LOOP AT gt_alv_copy INTO gs_alv.
*      CLEAR gs_alv-department.
      COLLECT gs_alv INTO gt_alv.
    ENDLOOP.
    "按个人
    "按月汇总
  ELSEIF r_monsum = 'X' .
    LOOP AT gt_alv_copy INTO gs_alv.
*      CLEAR gs_alv-department.
      gs_alv-date = gs_alv-date(6).
      COLLECT gs_alv INTO gt_alv.
    ENDLOOP.
  ENDIF.


  LOOP AT gt_alv INTO gs_alv .

    gs_alv-respti_avg    =  gs_alv-respti / gs_alv-count.
    gs_alv-procti_avg    =  gs_alv-procti / gs_alv-count.
    gs_alv-cputi_avg     =  gs_alv-cputi / gs_alv-count.
    gs_alv-queueti_avg   =  gs_alv-queueti / gs_alv-count.
    gs_alv-rollwaitti_avg = gs_alv-rollwaitti / gs_alv-count.
    gs_alv-guitime_avg    = gs_alv-guitime / gs_alv-count.
    gs_alv-guinettime_avg    = gs_alv-guinettime / gs_alv-count.

    MODIFY gt_alv FROM gs_alv.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_MODIFY_SCREEN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_modify_screen .
*  LOOP AT SCREEN.
*    CASE screen-group1.
*      WHEN 'M1'.
*        IF c_person = abap_true.
*          screen-active = '1'.
*        ELSE.
*          screen-active = '0'.
*          REFRESH s_user.
*        ENDIF.
*      WHEN 'M2'.
*        IF c_depart = abap_true.
*          screen-active = '1'.
*        ELSE.
*          screen-active = '0'.
*          REFRESH s_depart.
*        ENDIF.
*      WHEN OTHERS.
*    ENDCASE.
*    MODIFY SCREEN.
*  ENDLOOP.
ENDFORM.

FORM frm_f4_for_s_stext USING dyfield.

  TYPES:BEGIN OF ty_depart,
          department TYPE user_addr-department,

        END OF ty_depart.

  DATA: gt_depart TYPE TABLE OF  ty_depart,
        gs_depart TYPE ty_depart.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_depart
  FROM user_addr.


  SORT gt_depart BY department.
  DELETE ADJACENT DUPLICATES FROM  gt_depart COMPARING department.
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield        = 'DEPARTMENT'
      dynpprog        = sy-repid
      dynpnr          = sy-dynnr
      dynprofield     = dyfield
      value_org       = 'S'
*     callback_program = sy-repid
*     callback_form   = 'CM_FORM'
    TABLES
      value_tab       = gt_depart
*     return_tab      = lt_return
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.
  IF sy-subrc <> 0.

  ENDIF.
ENDFORM.

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值