TABLE CONTROL使用方法(待整理)

原文地址haixuan-2004的博客

 关于SAP控件TABLE Control的用法,近期研究得到的几点如下:

1、 使用向导创建table control时,提示“specify the work area of the table or a table with a header line”。检查系统定义,所绑定的内表已很明确地定义了内表的具有表头。后来摸索到,一个屏幕只允许使用向导创建一个table control,如果手工创建则不受限制。
2、  系统提示:Cannot currently edit include Repeat step?想了好久,在SAP论坛上发现老外也存在同样的问题待解决, http://forums.sdn.sap.com/thread.jspa?threadID=1195809
重复了几次,后来仔细想想,include是一个包,screen与程序绑定的,会不会是因为正在打开绑定的程序呢,于时在SE38中退出正在编辑的程序,重新操作则成功。
3、关于这个控件很好的学习资料。见 http://blog.chinaunix.net/space.php?uid=150062&do=blog&id=2780070
4、table control配套按钮的设计。今年6月在使用时,为了设计配套按钮(如翻页、全选、全不选、新增、删除等)费了好多时间,还背了一段代码,而如果采用向导创建table Control,系统会自动帮我们设置,具体操作如下
  •     一般情况下配置选择列。定义内表时,增加一列用于标记当前行是否被选中,该列的数据类型为 c,长度为 1, 在“line selectability"中勾选“line selection col”,并指定列名,同时可以指定是否允许选中       多行。如:
                 TABLES :SPFLI .
 创建带有选择列的内表
    TYPES : BEGIN  OF SP1_TYPE ,
                   ISSEL TYPE C,
                    CARRID  LIKE SPFLI -CARRID ,
                    CONNID  LIKE SPFLI -CONNID ,
                    COUNTRYFR  LIKE SPFLI -COUNTRYFR ,
                    CITYFROM  LIKE  SPFLI -CITYFROM ,
                    AIRPFROM  LIKE SPFLI -AIRPFROM ,
                    COUNTRYTO  LIKE SPFLI -COUNTRYTO ,
                    CITYTO  LIKE SPFLI -CITYTO ,
                    AIRPTO  LIKE SPFLI -AIRPTO ,
                END  OF SP1_TYPE .

      DATA :OK_CODE  TYPE SY -UCOMM ,
                SP1  TYPE  STANDARD  TABLE  OF SP1_TYPE  WITH  HEADER  LINE ,
                SP2  TYPE  STANDARD  TABLE  OF SP1_TYPE  WITH  HEADER  LINE .
  •     配置实现可编辑的table control。
1、在input/output attributes选项面板中,勾选“input control”。
2、在维护函数选项中,勾选“SCROLL”,“Insert/delete line”,“select/deselect all”选项,系统自动配套设计好相关操作按钮。
3、在屏幕被调用前,指定table control的长度。   如:
    TBL2-LINES 1000.
      CALL  SCREEN  100 .
       表格控制的行数固定为1000行,如果内表不足一千行,用空行代替,当从屏幕更新数据到内表时,系统会跳过为空的行,所以不用担心这样做会造成内表有很多空行.  一般情况下,当要求可编辑时,要求预留空行,否则,用TBL2_CHANGE_TC_ATTR控制.如果用户不允许空行的存在,则按以下方式
 如果表格不允许空行的存在,则取消此处的注析,系统在显示前都会告知系统要显示的行数.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBL2_CHANGE_TC_ATTR  OUTPUT .
 DESCRIBE TABLE SP1 LINES TBL2-lines.
ENDMODULE .

  •     自动录入功能增强。为了提高用户的友好性,提高用户的录入效率,有时候会根据用户录入的某些内容,自动带出其它相关的内容,只要监控相关列的值是否改变,如果有改变,即对其它相关列进行赋值。(table control中改变了界面的值后,只有按了enter键才会触发更改)。代码如:
流逻辑中监控字段的值是否改变
PROCESS  AFTER  INPUT .
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TBL2'
    LOOP  AT SP1 .
        CHAIN .
            FIELD SP1 -ISSEL .
            FIELD SP1 -CARRID .
            FIELD SP1 -CONNID .
            FIELD SP1 -COUNTRYFR .
            FIELD SP1 -CITYFROM .
            FIELD SP1 -AIRPFROM .
            FIELD SP1 -COUNTRYTO .
            FIELD SP1 -CITYTO .
            FIELD SP1 -AIRPTO .
            MODULE TBL2_MODIFY  ON CHAIN -REQUEST .
        ENDCHAIN .

    ENDLOOP .

在程序中自动赋值:
 当用户更改表格中的数据后,触发该事件
 第一个SP1是内表,第二个SP1是表工作区,这个工作区和SP1表格控制绑定,在流逻辑中指定
 在这里可以实现信息提示,根据之前输入的字段内容,确定后面的字段内容,
MODULE TBL2_MODIFY INPUT.
  IF SP1-COUNTRYFR 'US'.
    SP1-COUNTRYTO 'CHI'.
  ENDIF.

  IF SP1-COUNTRYFR 'CHI'.
    SP1-COUNTRYTO 'US'.
  ENDIF.

  MODIFY SP1 FROM SP1 INDEX TBL2-CURRENT_LINE.
ENDMODULE.

这两天自已做的一个案例的全部内容如下:
*&---------------------------------------------------------------------*
*& Report  ZTABCON_HX_01_04
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTABCON_HX_01_04 .
    TABLES :SPFLI .
 创建带有选择列的内表
    TYPES : BEGIN  OF SP1_TYPE ,
                    ISSEL  TYPE  C ,
                    CARRID  LIKE SPFLI -CARRID ,
                    CONNID  LIKE SPFLI -CONNID ,
                    COUNTRYFR  LIKE SPFLI -COUNTRYFR ,
                    CITYFROM  LIKE  SPFLI -CITYFROM ,
                    AIRPFROM  LIKE SPFLI -AIRPFROM ,
                    COUNTRYTO  LIKE SPFLI -COUNTRYTO ,
                    CITYTO  LIKE SPFLI -CITYTO ,
                    AIRPTO  LIKE SPFLI -AIRPTO ,
                END  OF SP1_TYPE .

    DATA :OK_CODE  TYPE SY -UCOMM ,
                SP1  TYPE  STANDARD  TABLE  OF SP1_TYPE  WITH  HEADER  LINE ,
                SP2  TYPE  STANDARD  TABLE  OF SP1_TYPE  WITH  HEADER  LINE .
      SP1 TYPE STANDARD TABLE OF SPFLI WITH HEADER LINE."采用这种方式创建的表格控件是没有选择列的,因为选择列还需要有额外的一个标记
    SELECT  INTO CORRESPONDING  FIELDS  OF  TABLE SP1
        FROM SPFLI .
 表格控件控件
 &SPWIZARD: DECLARATION OF TABLECONTROL 'TBL2' ITSELF
    CONTROLS TBL2  TYPE TABLEVIEW  USING  SCREEN  0100 .

 &SPWIZARD: LINES OF TABLECONTROL 'TBL2'
    DATA     G_TBL2_LINES    LIKE SY -LOOPC .
 表格控制的行数固定为1000行,如果内表不足一千行,用空行代替,当从屏幕更新数据到内表时,系统会跳过为空的行,所以不用担心这样做会造成内表有很多空行.
 一般情况下,当要求可编辑时,要求预留空行,否则,用TBL2_CHANGE_TC_ATTR控制.
    TBL2 - LINES  1000 .
    CALL  SCREEN  100 .


  监控用户触发的事件
MODULE USER_COMMAND_0100  INPUT .
    CASE OK_CODE .
        WHEN  'EXIT' .
            LEAVE  PROGRAM .
        WHEN  OTHERS .
    ENDCASE .
ENDMODULE .

 当用户更改表格中的数据后,触发该事件
 第一个SP1是内表,第二个SP1是表工作区,这个工作区和SP1表格控制绑定,在流逻辑中指定
 在这里可以实现信息提示,根据之前输入的字段内容,确定后面的字段内容,
MODULE TBL2_MODIFY  INPUT .
    IF SP1 -COUNTRYFR  'US' .
        SP1 -COUNTRYTO  'CHI' .
    ENDIF .

    IF SP1 -COUNTRYFR  'CHI' .
        SP1 -COUNTRYTO  'US' .
    ENDIF .
    MODIFY SP1  FROM SP1  INDEX TBL2 -CURRENT_LINE .
ENDMODULE .


 如果表格不允许空行的存在,则取消此处的注析,系统在显示前都会告知系统要显示的行数.
*&SPWIZARD: OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TBL2_CHANGE_TC_ATTR  OUTPUT .
 DESCRIBE TABLE SP1 LINES TBL2-lines.
ENDMODULE .

*&SPWIZARD: OUTPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: GET LINES OF TABLECONTROL
MODULE TBL2_GET_LINES  OUTPUT .
    G_TBL2_LINES  SY -LOOPC .
ENDMODULE .

*&SPWIZARD: INPUT MODULE FOR TC 'TBL2'. DO NOT CHANGE THIS LINE!
*&SPWIZARD: PROCESS USER COMMAND
MODULE TBL2_USER_COMMAND  INPUT .
    OK_CODE  SY -UCOMM .
    PERFORM USER_OK_TC  USING     'TBL2'
                                                            'SP1'
                                                            'ISSEL'
                                          CHANGING OK_CODE .
    SY -UCOMM  OK_CODE .
ENDMODULE .

*----------------------------------------------------------------------*
  INCLUDE TABLECONTROL_FORMS                                         *
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form  USER_OK_TC 这是系统标准的表格控制代码,相关控件按钮是按以下规定命名的:表格的名称_操作名,如本程序的名称为SP1_INSR,表示插入一行,
*&          DEL:删除
*&          P--:第一页
*&          P-:前一页
*&          P+:下一页
*&          P++:最后一页
*&          L-:左移一页
*&          L--:左边第一页
*&          ......
*&       所以当想实现左移时,只需要在界面中按规定添加按钮,并按相应的规则命名,就可以了.
*&
*&---------------------------------------------------------------------*
  FORM USER_OK_TC  USING    P_TC_NAME  TYPE DYNFNAM
                                                    P_TABLE_NAME
                                                    P_MARK_NAME
                                  CHANGING P_OK            LIKE SY -UCOMM .

*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
      DATA L_OK                            TYPE SY -UCOMM ,
                  L_OFFSET                    TYPE  I .
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

*&SPWIZARD: Table control specific operations                          *
*&SPWIZARD: evaluate TC name and operations                            *
      SEARCH P_OK  FOR P_TC_NAME .
      IF SY -SUBRC  <>  0 .
          EXIT .
      ENDIF .
      L_OFFSET  STRLEN P_TC_NAME  1 .
      L_OK  P_OK+L_OFFSET .
*&SPWIZARD: execute general and TC specific operations                 *
      CASE L_OK .
          WHEN  'INSR'                       "insert row
              PERFORM FCODE_INSERT_ROW  USING    P_TC_NAME
                                                                                  P_TABLE_NAME .
              CLEAR P_OK .

          WHEN  'DEL'                       "delete row
              PERFORM FCODE_DELETE_ROW  USING    P_TC_NAME
                                                                                  P_TABLE_NAME
                                                                                  P_MARK_NAME .
              CLEAR P_OK .

          WHEN  'P--'  OR                      "top of list
                    'P-'   OR                      "previous page
                    'P+'   OR                      "next page
                    'P++'                        "bottom of list
              PERFORM COMPUTE_SCROLLING_IN_TC  USING P_TC_NAME
                                                                                          L_OK .
              CLEAR P_OK .
    WHEN 'L--'.                       "total left
      PERFORM FCODE_TOTAL_LEFT USING P_TC_NAME.
*
    WHEN 'L-'.                        "column left
      PERFORM FCODE_COLUMN_LEFT USING P_TC_NAME.
*
    WHEN 'R+'.                        "column right
      PERFORM FCODE_COLUMN_RIGHT USING P_TC_NAME.
*
    WHEN 'R++'.                       "total right
      PERFORM FCODE_TOTAL_RIGHT USING P_TC_NAME.
*
          WHEN  'MARK'                       "mark all filled lines
              PERFORM FCODE_TC_MARK_LINES  USING P_TC_NAME
                                                                                  P_TABLE_NAME
                                                                                  P_MARK_NAME      .
              CLEAR P_OK .

          WHEN  'DMRK'                       "demark all filled lines
              PERFORM FCODE_TC_DEMARK_LINES  USING P_TC_NAME
                                                                                      P_TABLE_NAME
                                                                                      P_MARK_NAME  .
              CLEAR P_OK .

    WHEN 'SASCEND'   OR
         'SDESCEND'.                  "sort column
      PERFORM FCODE_SORT_TC USING P_TC_NAME
                                  l_ok.

      ENDCASE .

  ENDFORM                               USER_OK_TC

*&---------------------------------------------------------------------*
*&      Form  FCODE_INSERT_ROW                                         *
*&---------------------------------------------------------------------*
  FORM fcode_insert_row
                              USING    P_TC_NAME                      TYPE DYNFNAM
                                                P_TABLE_NAME                          .

*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
      DATA L_LINES_NAME              LIKE FELD -NAME .
      DATA L_SELLINE                    LIKE SY -STEPL .
      DATA L_LASTLINE                  TYPE  I .
      DATA L_LINE                          TYPE  I .
      DATA L_TABLE_NAME              LIKE FELD -NAME .
      FIELD-SYMBOLS <TC>                                  TYPE CXTAB_CONTROL .
      FIELD-SYMBOLS <TABLE>                            TYPE  STANDARD  TABLE .
      FIELD-SYMBOLS <LINES>                            TYPE  I .
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

      ASSIGN  (P_TC_NAME TO <TC> .

*&SPWIZARD: get the table, which belongs to the tc                     *
      CONCATENATE P_TABLE_NAME  '[]'  INTO L_TABLE_NAME "table body
      ASSIGN  (L_TABLE_NAME TO <TABLE>                 "not headerline

*&SPWIZARD: get looplines of TableControl                              *
      CONCATENATE  'G_' P_TC_NAME  '_LINES'  INTO L_LINES_NAME .
      ASSIGN  (L_LINES_NAME TO <LINES> .

*&SPWIZARD: get current line                                           *
      GET  CURSOR  LINE L_SELLINE .
      IF SY -SUBRC  <>  0                    append line to table
          L_SELLINE  <TC> - LINES  1 .
*&SPWIZARD: set top line                                               *
          IF L_SELLINE  <LINES> .
              <TC> -TOP_LINE  L_SELLINE  <LINES>  .
          ELSE .
              <TC> -TOP_LINE  1 .
          ENDIF .
      ELSE                                insert line into table
          L_SELLINE  <TC> -TOP_LINE  L_SELLINE  1 .
          L_LASTLINE  <TC> -TOP_LINE  <LINES>  1 .
      ENDIF .
*&SPWIZARD: set new cursor line                                        *
      L_LINE  L_SELLINE  <TC> -TOP_LINE  1 .

*&SPWIZARD: insert initial line                                        *
      INSERT  INITIAL  LINE  INTO <TABLE>  INDEX L_SELLINE .
      <TC> - LINES  <TC> - LINES  1 .
*&SPWIZARD: set cursor                                                 *
      SET  CURSOR  LINE L_LINE .

  ENDFORM                               FCODE_INSERT_ROW

*&---------------------------------------------------------------------*
*&      Form  FCODE_DELETE_ROW                                         *
*&---------------------------------------------------------------------*
  FORM fcode_delete_row
                              USING    P_TC_NAME                      TYPE DYNFNAM
                                                P_TABLE_NAME
                                                P_MARK_NAME      .

*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
      DATA L_TABLE_NAME              LIKE FELD -NAME .

      FIELD-SYMBOLS <TC>                  TYPE cxtab_control .
      FIELD-SYMBOLS <TABLE>            TYPE  STANDARD  TABLE .
      FIELD-SYMBOLS <WA> .
      FIELD-SYMBOLS <MARK_FIELD> .
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

      ASSIGN  (P_TC_NAME TO <TC> .

*&SPWIZARD: get the table, which belongs to the tc                     *
      CONCATENATE P_TABLE_NAME  '[]'  INTO L_TABLE_NAME "table body
      ASSIGN  (L_TABLE_NAME TO <TABLE>                 "not headerline

*&SPWIZARD: delete marked lines                                        *
      DESCRIBE  TABLE <TABLE>  LINES <TC> - LINES .

      LOOP  AT <TABLE>  ASSIGNING <WA> .

*&SPWIZARD: access to the component 'FLAG' of the table header         *
          ASSIGN  COMPONENT P_MARK_NAME  OF  STRUCTURE <WA>  TO <MARK_FIELD> .

          IF <MARK_FIELD>  'X' .
              DELETE <TABLE>  INDEX SYST -TABIX .
              IF SY -SUBRC  0 .
                  <TC> - LINES  <TC> - LINES  1 .
              ENDIF .
          ENDIF .
      ENDLOOP .

  ENDFORM                               FCODE_DELETE_ROW

*&---------------------------------------------------------------------*
*&      Form  COMPUTE_SCROLLING_IN_TC
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
     -->P_TC_NAME  name of tablecontrol
     -->P_OK       ok code
*----------------------------------------------------------------------*
  FORM COMPUTE_SCROLLING_IN_TC  USING    P_TC_NAME
                                                                              P_OK .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
      DATA L_TC_NEW_TOP_LINE          TYPE  I .
      DATA L_TC_NAME                          LIKE FELD -NAME .
      DATA L_TC_LINES_NAME              LIKE FELD -NAME .
      DATA L_TC_FIELD_NAME              LIKE FELD -NAME .

      FIELD-SYMBOLS <TC>                  TYPE cxtab_control .
      FIELD-SYMBOLS <LINES>            TYPE  I .
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

      ASSIGN  (P_TC_NAME TO <TC> .
*&SPWIZARD: get looplines of TableControl                              *
      CONCATENATE  'G_' P_TC_NAME  '_LINES'  INTO L_TC_LINES_NAME .
      ASSIGN  (L_TC_LINES_NAME TO <LINES> .


*&SPWIZARD: is no line filled?                                         *
      IF <TC> - LINES  0 .
*&SPWIZARD: yes, ...                                                   *
          L_TC_NEW_TOP_LINE  1 .
      ELSE .
*&SPWIZARD: no, ...                                                    *
          CALL  FUNCTION  'SCROLLING_IN_TABLE'
                    EXPORTING
                              ENTRY_ACT                          <TC> -TOP_LINE
                              ENTRY_FROM                        1
                              ENTRY_TO                            <TC> - LINES
                              LAST_PAGE_FULL                'X'
                              LOOPS                                  <LINES>
                              OK_CODE                              P_OK
                              OVERLAPPING                      'X'
                    IMPORTING
                              ENTRY_NEW                          L_TC_NEW_TOP_LINE
                    EXCEPTIONS
             NO_ENTRY_OR_PAGE_ACT  01
             NO_ENTRY_TO           02
             NO_OK_CODE_OR_PAGE_GO 03
                              OTHERS                 0 .
      ENDIF .

*&SPWIZARD: get actual tc and column                                   *
      GET  CURSOR  FIELD L_TC_FIELD_NAME
                            AREA    L_TC_NAME .

      IF SYST -SUBRC  0 .
          IF L_TC_NAME  P_TC_NAME .
*&SPWIZARD: et actual column                                           *
              SET  CURSOR  FIELD L_TC_FIELD_NAME  LINE  1 .
          ENDIF .
      ENDIF .

*&SPWIZARD: set the new top line                                       *
      <TC> -TOP_LINE  L_TC_NEW_TOP_LINE .


  ENDFORM                               COMPUTE_SCROLLING_IN_TC

*&---------------------------------------------------------------------*
*&      Form  FCODE_TC_MARK_LINES
*&---------------------------------------------------------------------*
      marks all TableControl lines
*----------------------------------------------------------------------*
     -->P_TC_NAME  name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_MARK_LINES  USING P_TC_NAME
                                                              P_TABLE_NAME
                                                              P_MARK_NAME .
*&SPWIZARD: EGIN OF LOCAL DATA-----------------------------------------*
    DATA L_TABLE_NAME              LIKE FELD -NAME .

    FIELD-SYMBOLS <TC>                  TYPE cxtab_control .
    FIELD-SYMBOLS <TABLE>            TYPE  STANDARD  TABLE .
    FIELD-SYMBOLS <WA> .
    FIELD-SYMBOLS <MARK_FIELD> .
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

    ASSIGN  (P_TC_NAME TO <TC> .

*&SPWIZARD: get the table, which belongs to the tc                     *
      CONCATENATE P_TABLE_NAME  '[]'  INTO L_TABLE_NAME "table body
      ASSIGN  (L_TABLE_NAME TO <TABLE>                 "not headerline

*&SPWIZARD: mark all filled lines                                      *
    LOOP  AT <TABLE>  ASSIGNING <WA> .

*&SPWIZARD: access to the component 'FLAG' of the table header         *
          ASSIGN  COMPONENT P_MARK_NAME  OF  STRUCTURE <WA>  TO <MARK_FIELD> .

          <MARK_FIELD>  'X' .
    ENDLOOP .
ENDFORM                                           "fcode_tc_mark_lines

*&---------------------------------------------------------------------*
*&      Form  FCODE_TC_DEMARK_LINES
*&---------------------------------------------------------------------*
      demarks all TableControl lines
*----------------------------------------------------------------------*
     -->P_TC_NAME  name of tablecontrol
*----------------------------------------------------------------------*
FORM FCODE_TC_DEMARK_LINES  USING P_TC_NAME
                                                                  P_TABLE_NAME
                                                                  P_MARK_NAME  .
*&SPWIZARD: BEGIN OF LOCAL DATA----------------------------------------*
    DATA L_TABLE_NAME              LIKE FELD -NAME .

    FIELD-SYMBOLS <TC>                  TYPE cxtab_control .
    FIELD-SYMBOLS <TABLE>            TYPE  STANDARD  TABLE .
    FIELD-SYMBOLS <WA> .
    FIELD-SYMBOLS <MARK_FIELD> .
*&SPWIZARD: END OF LOCAL DATA------------------------------------------*

    ASSIGN  (P_TC_NAME TO <TC> .

*&SPWIZARD: get the table, which belongs to the tc                     *
      CONCATENATE P_TABLE_NAME  '[]'  INTO L_TABLE_NAME "table body
      ASSIGN  (L_TABLE_NAME TO <TABLE>                 "not headerline

*&SPWIZARD: demark all filled lines                                    *
    LOOP  AT <TABLE>  ASSIGNING <WA> .

*&SPWIZARD: access to the component 'FLAG' of the table header         *
          ASSIGN  COMPONENT P_MARK_NAME  OF  STRUCTURE <WA>  TO <MARK_FIELD> .

          <MARK_FIELD>  SPACE .
    ENDLOOP .
ENDFORM                                           "fcode_tc_mark_lines
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
      text
*----------------------------------------------------------------------*
MODULE STATUS_0100  OUTPUT .
    SET  PF-STATUS  'STATUS' .
 SET TITLEBAR 'xxx'.

ENDMODULE                  STATUS_0100  OUTPUT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值