doi输出Excel的demo

35 篇文章 1 订阅

需求是通过doi的方式,输出报表,代码如下。


REPORT ZFIR_015 NO STANDARD PAGE HEADING LINE-SIZE 120 MESSAGE-ID ZFI_01.

INCLUDE ZFIR_015T01.

INCLUDE ZFIR_015S01.

INCLUDE ZFIR_015O01.

INCLUDE ZFIR_015I01.

INCLUDE ZFIR_015F01.

INCLUDE ZFIR_015F02.


*&---------------------------------------------------------------------*
*&      INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.

  PERFORM FRM_INIT.

*&---------------------------------------------------------------------*
*&      START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM FRM_GET_DATA.

*&---------------------------------------------------------------------*
*&      END-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*&      frm_data_show.
*&---------------------------------------------------------------------*

  PERFORM FRM_CALL_SCREEN.
*&---------------------------------------------------------------------*
*& 包含               ZFIR_015T01
*&---------------------------------------------------------------------*
TABLES:FAGLFLEXT,T001.

DATA: GC_DOC_CLASSNAME     TYPE SBDST_CLASSNAME  VALUE 'HRFPM_EXCEL_STANDARD',
      GC_DOC_CLASSTYPE     TYPE SBDST_CLASSTYPE  VALUE 'OT',
      GC_DOC_OBJECT_KEY    TYPE SBDST_OBJECT_KEY VALUE 'ZHA004_21',
      GC_DOCUMENT_NAME(30) TYPE C  VALUE  '固定资产明细表'. " 模板名字.

CONSTANTS: GC_URL_IND TYPE I VALUE 1.

DATA: GV_ITEM_URL(256), " 存放模板的URL .
      GV_INPLACE       TYPE C VALUE 'X',
      GV_NO_FLUSH(1)   TYPE C VALUE 'X',
      GV_UPDATING      TYPE I VALUE '-1'.

DATA: GO_CONTAINER     TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"容器实例
      GO_CONTROL       TYPE REF TO I_OI_CONTAINER_CONTROL, "控制器实例
      GO_DOCUMENT      TYPE REF TO I_OI_DOCUMENT_PROXY,    "文档操作对象
      GV_DOCUMENT_TYPE TYPE SOI_DOCUMENT_TYPE,
      GO_SPREADSHEET   TYPE REF TO I_OI_SPREADSHEET,       "分隔符对象
      GO_ERROR         TYPE REF TO I_OI_ERROR,             "错误信息
      GV_RETCODE       TYPE SOI_RET_STRING,
      GO_ERRORS        TYPE REF TO I_OI_ERROR OCCURS 0 WITH HEADER LINE. "错误信息

DATA: GT_SHEETS TYPE SOI_SHEETS_TABLE,
      GS_SHEET  TYPE SOI_SHEETS.

* Table 定义
DATA: BEGIN OF GS_ALV,
        LINE  TYPE CHAR2,
        ZZ007 TYPE CHAR2,
        COL1  TYPE CHAR50,
        COL2  TYPE ACDOCA-HSL,
        COL3  TYPE ACDOCA-HSL,
        COL4  TYPE ACDOCA-HSL,
        COL5  TYPE ACDOCA-HSL,
        COL6  TYPE ACDOCA-HSL,
        COL7  TYPE ACDOCA-HSL,
        COL8  TYPE ACDOCA-HSL,
        COL9  TYPE ACDOCA-HSL,
        COL10 TYPE ACDOCA-HSL,
        COL11 TYPE ACDOCA-HSL,
        COL12 TYPE ACDOCA-HSL,
      END OF GS_ALV,
      GT_ALV LIKE TABLE OF GS_ALV.

DATA: BEGIN OF GS_RACCT,
        LB    TYPE CHAR2,
        COL   TYPE SY-INDEX,
        RACCT TYPE FAGLFLEXT-RACCT,
      END OF GS_RACCT,
      GT_RACCT LIKE TABLE OF GS_RACCT.
DATA: BEGIN OF GS_FAGL,
        RACCT TYPE FAGLFLEXT-RACCT,
        HSLVT TYPE FAGLFLEXT-HSLVT,
      END OF GS_FAGL,
      GT_FAGL LIKE TABLE OF GS_FAGL.

DATA: BEGIN OF GS_ACDOCA,
        RACCT TYPE ACDOCA-RACCT,
        DRCRK TYPE ACDOCA-DRCRK,
        ZZ007 TYPE ACDOCA-ZZ007,
        HSL   TYPE ACDOCA-HSL,
      END OF GS_ACDOCA,
      GT_ACDOCA LIKE TABLE OF GS_ACDOCA.

RANGES: GR_RACCT FOR ACDOCA-RACCT.

* 变量定义
*&---------------------------------------------------------------------*
*& 包含               ZFIR_015S01
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK BO1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS: S_BUKRS FOR T001-BUKRS NO-EXTENSION NO INTERVALS OBLIGATORY.
  SELECT-OPTIONS: S_DATUM FOR SY-DATUM NO-EXTENSION NO INTERVALS OBLIGATORY.
SELECTION-SCREEN END OF BLOCK BO1.

AT SELECTION-SCREEN ON S_BUKRS.
  PERFORM CHECK_INPUT_BUKRS.
*&---------------------------------------------------------------------*
*& 包含               ZFIR_015O01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '0100'.
  SET TITLEBAR '0100'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module DISP_EXCEL OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE DISP_EXCEL OUTPUT.
  PERFORM FRM_DISP_EXCEL.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含               ZFIR_015I01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  DATA: LV_CODE TYPE SY-UCOMM.
  CLEAR LV_CODE.
  LV_CODE = SY-UCOMM.
  CASE LV_CODE.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT'.
      LEAVE PROGRAM.
    WHEN 'CANCEL'.
      LEAVE PROGRAM.
    WHEN OTHERS.
  ENDCASE.
  CLEAR LV_CODE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含               ZFIR_015F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form check_input_bukrs
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM CHECK_INPUT_BUKRS .
  IF S_BUKRS[] IS INITIAL.
    MESSAGE E000 WITH TEXT-M01.
  ELSE.
    SELECT SINGLE BUKRS
      FROM T001
      INTO @DATA(LV_BUKRS)
     WHERE BUKRS IN @S_BUKRS.
    IF SY-SUBRC NE 0.
      MESSAGE E000 WITH TEXT-M03.
    ENDIF.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_GET_DATA .

  PERFORM GET_ACDOCA_DATA.

  PERFORM GET_FAGLFLEXT_DATA.

  PERFORM FILL_FIRST_COL.

  PERFORM FILL_DATA.


ENDFORM.

*&---------------------------------------------------------------------*
*& Form FIRST_LINE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> GS_ALV
*&---------------------------------------------------------------------*
FORM FILL_FIRST_COL.
  GS_ALV-LINE = 1.
  GS_ALV-COL1 = '固定资产年初原值'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.

  GS_ALV-LINE = 2.
  GS_ALV-ZZ007 = '01'.
  GS_ALV-COL1 = '购置(从集团外部购入)'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 3.
  GS_ALV-ZZ007 = '02'.
  GS_ALV-COL1 = '年内从集团内部单位购入(发票金额)——列示具体单位名称'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 4.
  GS_ALV-ZZ007 = '03'.
  GS_ALV-COL1 = '年内从集团内部单位购入(运费安装费等其他金额)'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 5.
  GS_ALV-ZZ007 = '04'.
  GS_ALV-COL1 = '在建工程转入'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 6.
  GS_ALV-ZZ007 = '05'.
  GS_ALV-COL1 = '接受捐赠'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 7.
  GS_ALV-ZZ007 = '06'.
  GS_ALV-COL1 = '年内从集团内部单位转入'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 8.
  GS_ALV-ZZ007 = '07'.
  GS_ALV-COL1 = '其他增加'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 9.
  GS_ALV-ZZ007 = '08'.
  GS_ALV-COL1 = '重分类'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 10.
  GS_ALV-ZZ007 = '09'.
  GS_ALV-COL1 = '处置固定资产(向集团外部处置)'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 11.
  GS_ALV-ZZ007 = '10'.
  GS_ALV-COL1 = '年内向集团内部单位出售——列示具体内部单位名称'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 12.
  GS_ALV-ZZ007 = '11'.
  GS_ALV-COL1 = '年内向集团内部单位转出'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 13.
  GS_ALV-ZZ007 = '12'.
  GS_ALV-COL1 = '国产设备退税减少原值金额'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 14.
  GS_ALV-ZZ007 = '13'.
  GS_ALV-COL1 = '其他减少'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.

  GS_ALV-LINE = 15.
  GS_ALV-COL1 = '固定资产期末原值 '.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.

  GS_ALV-LINE = 16.
  GS_ALV-COL1 = '累计折旧年初数'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.

  GS_ALV-LINE = 17.
  GS_ALV-ZZ007 = '13'.
  GS_ALV-COL1 = '年内计提'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 18.
  GS_ALV-ZZ007 = '14'.
  GS_ALV-COL1 = '年内从集团内部单位转入—列示具体内部单位名称'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 19.
  GS_ALV-ZZ007 = '15'.
  GS_ALV-COL1 = '其他增加'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 20.
  GS_ALV-ZZ007 = '16'.
  GS_ALV-COL1 = '重分类'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 21.
  GS_ALV-ZZ007 = '17'.
  GS_ALV-COL1 = '处置固定资产时拨回'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 22.
  GS_ALV-ZZ007 = '18'.
  GS_ALV-COL1 = '年内向集团内部单位出售减少——列示具体内部单位名称'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 23.
  GS_ALV-ZZ007 = '19'.
  GS_ALV-COL1 = '年内向集团内部单位转出减少'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 24.
  GS_ALV-ZZ007 = '20'.
  GS_ALV-COL1 = '国产设备退税减少累计折旧金额'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 25.
  GS_ALV-ZZ007 = '21'.
  GS_ALV-COL1 = '其他减少'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.

  GS_ALV-LINE = 26.
  GS_ALV-COL1 = '累计折旧期末数'.
  APPEND GS_ALV TO GT_ALV.
  GS_ALV-LINE = 27.
  CLEAR GS_ALV.
  GS_ALV-COL1 = '账面净值'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 28.
  GS_ALV-COL1 = '固定资产减值准备'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
  GS_ALV-LINE = 29.
  GS_ALV-COL1 = '账面净值减减值准备后净额'.
  APPEND GS_ALV TO GT_ALV.
  CLEAR GS_ALV.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_INIT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_INIT .
  PERFORM GET_RACCT.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_racct
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM GET_RACCT .
  REFRESH GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '2'.
  GS_RACCT-RACCT = '160101'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '3'.
  GS_RACCT-RACCT = '160102'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '4'.
  GS_RACCT-RACCT = '160103'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '6'.
  GS_RACCT-RACCT = '160104'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '7'.
  GS_RACCT-RACCT = '160105'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '8'.
  GS_RACCT-RACCT = '160106'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '9'.
  GS_RACCT-RACCT = '160107'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '10'.
  GS_RACCT-RACCT = '160108'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'GZ'.  "固定资产
  GS_RACCT-COL = '11'.
  GS_RACCT-RACCT = '160109'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.

  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '2'.
  GS_RACCT-RACCT = '160201'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '3'.
  GS_RACCT-RACCT = '160202'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '4'.
  GS_RACCT-RACCT = '160203'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '6'.
  GS_RACCT-RACCT = '160204'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '7'.
  GS_RACCT-RACCT = '160205'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '8'.
  GS_RACCT-RACCT = '160206'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '9'.
  GS_RACCT-RACCT = '160207'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '10'.
  GS_RACCT-RACCT = '160208'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.
  GS_RACCT-LB  = 'ZJ'.  "固定资产
  GS_RACCT-COL = '11'.
  GS_RACCT-RACCT = '160209'.
  APPEND GS_RACCT TO GT_RACCT.
  CLEAR GS_RACCT.

  LOOP AT GT_RACCT INTO GS_RACCT.
    PERFORM GET_RANGE_RACCT USING GS_RACCT-RACCT.
  ENDLOOP.
  SORT GR_RACCT BY LOW.
  DELETE ADJACENT DUPLICATES FROM GR_RACCT COMPARING LOW.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_RANGE_RACCT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_
*&---------------------------------------------------------------------*
FORM GET_RANGE_RACCT  USING   PV_VALUE.

  DATA: LV_RACCT  TYPE SKB1-SAKNR.
  IF PV_VALUE IS NOT INITIAL.
    CLEAR LV_RACCT.
    LV_RACCT = PV_VALUE && '%'.

    SELECT 'I'   AS SIGN,
           'EQ'  AS OPTION,
           SAKNR AS LOW
      FROM SKB1
  APPENDING CORRESPONDING FIELDS OF TABLE @GR_RACCT
     WHERE BUKRS IN @S_BUKRS
       AND SAKNR LIKE @LV_RACCT.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_ACDOCA_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM GET_ACDOCA_DATA .
  DATA: LT_ACDOCA     LIKE TABLE OF GS_ACDOCA,
        LT_ACDOCA_TEM LIKE TABLE OF GS_ACDOCA.
* 取数
  REFRESH: LT_ACDOCA, GT_ACDOCA.
  SELECT RACCT
         DRCRK
         ZZ007
         HSL
    FROM ACDOCA
    INTO CORRESPONDING FIELDS OF TABLE LT_ACDOCA
   WHERE RBUKRS IN S_BUKRS
     AND GJAHR = S_DATUM-LOW(4)
     AND RACCT IN GR_RACCT
     AND ZZ007 NE ''.

  SORT LT_ACDOCA BY RACCT DRCRK ZZ007.
* 求和
  LOOP AT GT_RACCT INTO GS_RACCT.
    REFRESH: LT_ACDOCA_TEM.
    LT_ACDOCA_TEM[] = LT_ACDOCA[].
    DELETE LT_ACDOCA_TEM WHERE RACCT(6) NE GS_RACCT-RACCT.
    LOOP AT LT_ACDOCA_TEM INTO DATA(LS_ACDOCA).
      DATA(LS_ACDOCA_TEM) = LS_ACDOCA.
      AT END OF ZZ007.
        SUM.
        CLEAR GS_ACDOCA.
        GS_ACDOCA-RACCT = GS_RACCT-RACCT.
        GS_ACDOCA-DRCRK = LS_ACDOCA_TEM-DRCRK.
        GS_ACDOCA-ZZ007 = LS_ACDOCA_TEM-ZZ007.
        GS_ACDOCA-HSL   = LS_ACDOCA-HSL.
        APPEND GS_ACDOCA TO GT_ACDOCA.
        CLEAR GS_ACDOCA.
      ENDAT.
      CLEAR:LS_ACDOCA_TEM, LS_ACDOCA.
    ENDLOOP.
    CLEAR GS_RACCT.
  ENDLOOP.

  SORT GT_ACDOCA BY RACCT DRCRK ZZ007.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FILL_DATA .
  DATA: LT_ALV_NEW LIKE TABLE OF GS_ALV.
  LOOP AT GT_ALV INTO GS_ALV.
    CASE GS_ALV-LINE .
      WHEN '1'.
        PERFORM CALCULATE_FAGLFLEXT_HSLVT_GZ.
      WHEN '16'.
        PERFORM CALCULATE_FAGLFLEXT_HSLVT_ZJ.
      WHEN '27'.

      WHEN '28'.

      WHEN '29'.

      WHEN '15' OR '26'.
      WHEN OTHERS.
        PERFORM CALCUL_ACDOCA USING GS_ALV-ZZ007.
    ENDCASE.
    MODIFY GT_ALV FROM GS_ALV.
    CLEAR GS_ALV.
  ENDLOOP.

  REFRESH LT_ALV_NEW.
  CLEAR GS_ALV.
  READ TABLE GT_ALV INTO GS_ALV WITH KEY LINE = '15'.
  IF SY-SUBRC = 0.
    DATA(LV_TABIX) = SY-TABIX.
    DATA(LT_ALV) = GT_ALV[].
    LOOP AT LT_ALV INTO DATA(LS_ALV) WHERE LINE >= 1 AND LINE <= 14.
      LS_ALV-LINE = GS_ALV-LINE.
      LS_ALV-ZZ007 = GS_ALV-ZZ007.
      LS_ALV-COL1  = GS_ALV-COL1.
      COLLECT LS_ALV INTO LT_ALV_NEW.
    ENDLOOP.

    IF LT_ALV_NEW IS NOT INITIAL.
      READ TABLE LT_ALV_NEW INTO DATA(LS_ALV_NEW) INDEX 1.
      IF SY-SUBRC = 0.
        MOVE-CORRESPONDING LS_ALV_NEW TO GS_ALV.
        MODIFY GT_ALV FROM GS_ALV INDEX LV_TABIX.
      ENDIF.
    ENDIF.
  ENDIF.




ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALCULATE_FAGLFLEXT_HSLVT_GZ
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM CALCULATE_FAGLFLEXT_HSLVT_GZ .
  DATA: LV_FIELD TYPE CHAR30.
  FIELD-SYMBOLS <FS_FIELD>.

  DATA(LT_RACCT) = GT_RACCT[].
  DELETE LT_RACCT WHERE LB = 'ZJ'.

  SORT GT_FAGL BY RACCT.

  LOOP AT LT_RACCT INTO GS_RACCT.
    CLEAR LV_FIELD.
    UNASSIGN <FS_FIELD>.
    LV_FIELD = 'COL' && GS_RACCT-COL.
    ASSIGN COMPONENT LV_FIELD OF STRUCTURE GS_ALV TO <FS_FIELD>.
    CLEAR GS_FAGL.
    READ TABLE GT_FAGL INTO GS_FAGL WITH KEY RACCT = GS_RACCT-RACCT
                                             BINARY SEARCH.
    IF SY-SUBRC = 0.
      DATA(LV_HSLVT) = GS_FAGL-HSLVT.
      IF <FS_FIELD> IS ASSIGNED.
        MOVE LV_HSLVT TO <FS_FIELD>.
      ENDIF.
    ENDIF.
    CLEAR GS_RACCT.
  ENDLOOP.
  GS_ALV-COL5 = GS_ALV-COL2 + GS_ALV-COL3 + GS_ALV-COL4.
  GS_ALV-COL12 = GS_ALV-COL5 + GS_ALV-COL6 + GS_ALV-COL7 +
                 GS_ALV-COL8 + GS_ALV-COL9 + GS_ALV-COL10 +
                 GS_ALV-COL11.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_FAGLFLEXT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM GET_FAGLFLEXT_DATA .
  DATA: LT_FAGL     LIKE TABLE OF GS_FAGL,
        LT_FAGL_TEM LIKE TABLE OF GS_FAGL.

  REFRESH: GT_FAGL,LT_FAGL.
* 取数
  SELECT RACCT
         HSLVT
    FROM FAGLFLEXT
    INTO CORRESPONDING FIELDS OF TABLE LT_FAGL
   WHERE RBUKRS IN S_BUKRS
     AND RYEAR  =  S_DATUM-LOW(4)
     AND RACCT  IN GR_RACCT.
* 求和
  LOOP AT GT_RACCT INTO GS_RACCT.
    REFRESH: LT_FAGL_TEM.
    LT_FAGL_TEM[] = LT_FAGL[].
    DELETE LT_FAGL_TEM WHERE RACCT(6) NE GS_RACCT-RACCT.
    LOOP AT LT_FAGL_TEM INTO DATA(LS_FAGL).
      LS_FAGL-RACCT =  GS_RACCT-RACCT.
      COLLECT LS_FAGL INTO GT_FAGL.
      CLEAR LS_FAGL.
    ENDLOOP.
    CLEAR GS_RACCT.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALCUL_ACDOCA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM CALCUL_ACDOCA USING PV_ZZ007.

  DATA: LV_FIELD TYPE CHAR30.
  FIELD-SYMBOLS <FS_FIELD>.

  DATA(LT_RACCT) = GT_RACCT[].
  DELETE LT_RACCT WHERE LB = 'ZJ'.

  LOOP AT LT_RACCT INTO GS_RACCT.
    CLEAR LV_FIELD.
    UNASSIGN <FS_FIELD>.
    LV_FIELD = 'COL' && GS_RACCT-COL.
    ASSIGN COMPONENT LV_FIELD OF STRUCTURE GS_ALV TO <FS_FIELD>.
    CLEAR GS_ACDOCA.
    READ TABLE GT_ACDOCA INTO GS_ACDOCA WITH KEY RACCT = GS_RACCT-RACCT
                                                 DRCRK = 'S'
                                                 ZZ007 = PV_ZZ007
                                                 BINARY SEARCH.
    IF SY-SUBRC = 0.
      DATA(LV_HSL) = GS_ACDOCA-HSL.
      IF <FS_FIELD> IS ASSIGNED.
        MOVE LV_HSL TO <FS_FIELD>.
      ENDIF.
    ENDIF.
    CLEAR GS_RACCT.
  ENDLOOP.
  GS_ALV-COL5 = GS_ALV-COL2 + GS_ALV-COL3 + GS_ALV-COL4.
  GS_ALV-COL12 = GS_ALV-COL5 + GS_ALV-COL6 + GS_ALV-COL7 +
                 GS_ALV-COL8 + GS_ALV-COL9 + GS_ALV-COL10 +
                 GS_ALV-COL11.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALCULATE_FAGLFLEXT_HSLVT_zj
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM CALCULATE_FAGLFLEXT_HSLVT_ZJ .
  DATA: LV_FIELD TYPE CHAR30.
  FIELD-SYMBOLS <FS_FIELD>.

  DATA(LT_RACCT) = GT_RACCT[].
  DELETE LT_RACCT WHERE LB = 'GZ'.

  SORT GT_FAGL BY RACCT.

  LOOP AT LT_RACCT INTO GS_RACCT.
    CLEAR LV_FIELD.
    UNASSIGN <FS_FIELD>.
    LV_FIELD = 'GS_ALV-COL' && GS_RACCT-COL.
    ASSIGN LV_FIELD TO <FS_FIELD>.
    CLEAR GS_FAGL.
    READ TABLE GT_FAGL INTO GS_FAGL WITH KEY RACCT = GS_RACCT-RACCT
                                             BINARY SEARCH.
    IF SY-SUBRC = 0.
      DATA(LV_HSLVT) = GS_FAGL-HSLVT.
      IF <FS_FIELD> IS ASSIGNED.
        MOVE LV_HSLVT TO <FS_FIELD>.
      ENDIF.
    ENDIF.
    CLEAR GS_RACCT.
  ENDLOOP.
  GS_ALV-COL5 = GS_ALV-COL2 + GS_ALV-COL3 + GS_ALV-COL4.
  GS_ALV-COL12 = GS_ALV-COL5 + GS_ALV-COL6 + GS_ALV-COL7 +
                 GS_ALV-COL8 + GS_ALV-COL9 + GS_ALV-COL10 +
                 GS_ALV-COL11.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CALL_SCREEN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_CALL_SCREEN .
  CALL SCREEN 100 .
ENDFORM.
*&---------------------------------------------------------------------*
*& 包含               ZFIR_015F02
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form DISP_EXCEL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_DISP_EXCEL .
  PERFORM FRM_CREATE_BASIC_OBJECT .

  PERFORM SELECT_SHEET.

  PERFORM FRM_OUTPUT_EXCEL.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CREATE_BASIC_OBJECT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_CREATE_BASIC_OBJECT .
  DATA: L_APP_NAME(200).
  DATA: LO_BDS_INSTANCE     TYPE REF TO CL_BDS_DOCUMENT_SET.
  DATA: LT_DOC_SIGNATURE  TYPE SBDST_SIGNATURE,
        LS_DOC_SIGNATURE  LIKE LINE OF LT_DOC_SIGNATURE,
        LT_DOC_COMPONENTS TYPE SBDST_COMPONENTS,
        LT_DOC_URIS       TYPE SBDST_URI,
        LS_DOC_URIS       LIKE LINE OF LT_DOC_URIS.

  STATICS:L_INITIALIZED TYPE C.
* get the SAP DOI interface references.
* this work has just to be done once !

  CHECK L_INITIALIZED IS INITIAL.
* first get the SAP DOI i_oi_container_control interface
  CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL
    IMPORTING
      CONTROL = GO_CONTROL
      ERROR   = GO_ERROR.
* check no errors occured
  CALL METHOD GO_ERROR->RAISE_MESSAGE
    EXPORTING
      TYPE = 'E'.

  L_APP_NAME = SY-REPID.

* initialize the SAP DOI Container, tell it to run in the container
* specified above and tell it to run Excel in-place
  CALL METHOD GO_CONTROL->INIT_CONTROL
    EXPORTING
      R3_APPLICATION_NAME      = L_APP_NAME
      INPLACE_ENABLED          = 'X'
      INPLACE_SCROLL_DOCUMENTS = 'X'
      PARENT                   = CL_GUI_CONTAINER=>SCREEN0 "container
      REGISTER_ON_CLOSE_EVENT  = 'X'
      REGISTER_ON_CUSTOM_EVENT = 'X'
      NO_FLUSH                 = 'X'
    IMPORTING
      ERROR                    = GO_ERRORS.
* save error object in collection
  APPEND GO_ERRORS.

* predefined excel doc. was saved in R/3
* business document service: OAOR
* here we get the URL according to its information.
  CLEAR GV_ITEM_URL.

  GV_DOCUMENT_TYPE = 'EXCEL.SHEET'.
  LS_DOC_SIGNATURE-PROP_NAME = 'BDS_KEYWORD'.
  LS_DOC_SIGNATURE-PROP_VALUE = GC_DOCUMENT_NAME .

  APPEND LS_DOC_SIGNATURE TO LT_DOC_SIGNATURE.

  CREATE OBJECT LO_BDS_INSTANCE.

  CALL METHOD LO_BDS_INSTANCE->GET_INFO
    EXPORTING
      CLASSNAME  = GC_DOC_CLASSNAME
      CLASSTYPE  = GC_DOC_CLASSTYPE
      OBJECT_KEY = GC_DOC_OBJECT_KEY
    CHANGING
      COMPONENTS = LT_DOC_COMPONENTS
      SIGNATURE  = LT_DOC_SIGNATURE.

  CALL METHOD LO_BDS_INSTANCE->GET_WITH_URL
    EXPORTING
      CLASSNAME  = GC_DOC_CLASSNAME
      CLASSTYPE  = GC_DOC_CLASSTYPE
      OBJECT_KEY = GC_DOC_OBJECT_KEY
    CHANGING
      URIS       = LT_DOC_URIS
      SIGNATURE  = LT_DOC_SIGNATURE.
  FREE LO_BDS_INSTANCE.

  READ TABLE LT_DOC_URIS INTO LS_DOC_URIS INDEX GC_URL_IND.

  GV_ITEM_URL = LS_DOC_URIS-URI.

* ask the SAP DOI container for a i_oi_document_proxy for Excel
  CALL METHOD GO_CONTROL->GET_DOCUMENT_PROXY
    EXPORTING
      DOCUMENT_TYPE  = GV_DOCUMENT_TYPE
*     REGISTER_CONTAINER = 'X'
    IMPORTING
      DOCUMENT_PROXY = GO_DOCUMENT
      ERROR          = GO_ERROR.
  APPEND GO_ERRORS.

* open a document saved in business document service.
  CALL METHOD GO_DOCUMENT->OPEN_DOCUMENT
    EXPORTING
      OPEN_INPLACE = GV_INPLACE
      DOCUMENT_URL = GV_ITEM_URL.
* check if our document proxy can serve a spreadsheet interface

  DATA: HAS TYPE I.
  CALL METHOD GO_DOCUMENT->HAS_SPREADSHEET_INTERFACE
    IMPORTING
      IS_AVAILABLE = HAS.
  APPEND GO_ERRORS.

  IF NOT HAS IS INITIAL.
    CALL METHOD GO_DOCUMENT->GET_SPREADSHEET_INTERFACE
*     EXPORTING no_flush        = no_flush
      IMPORTING
        SHEET_INTERFACE = GO_SPREADSHEET.
    APPEND GO_ERRORS.
  ENDIF.

  LOOP AT GO_ERRORS.
    CALL METHOD GO_ERRORS->RAISE_MESSAGE
      EXPORTING
        TYPE = 'E'.
  ENDLOOP.

  FREE GO_ERRORS.

  L_INITIALIZED = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SELECT_SHEET
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM SELECT_SHEET .
  CALL METHOD GO_SPREADSHEET->GET_SHEETS
    EXPORTING
      NO_FLUSH = ''
      UPDATING = GV_UPDATING
    IMPORTING
      SHEETS   = GT_SHEETS
      ERROR    = GO_ERROR
      RETCODE  = GV_RETCODE.

  CALL METHOD GO_ERROR->RAISE_MESSAGE
    EXPORTING
      TYPE = 'E'.

  READ TABLE GT_SHEETS INTO GS_SHEET INDEX 1.

  CALL METHOD GO_SPREADSHEET->SELECT_SHEET
    EXPORTING
      NAME     = GS_SHEET-SHEET_NAME
      NO_FLUSH = ''
    IMPORTING
      ERROR    = GO_ERROR.

  CALL METHOD GO_ERROR->RAISE_MESSAGE
    EXPORTING
      TYPE = 'E'.

  CALL METHOD GO_SPREADSHEET->GET_ACTIVE_SHEET
    EXPORTING
      NO_FLUSH  = ''
    IMPORTING
      SHEETNAME = GS_SHEET-SHEET_NAME
      ERROR     = GO_ERROR
      RETCODE   = GV_RETCODE.

  CALL METHOD GO_ERROR->RAISE_MESSAGE
    EXPORTING
      TYPE = 'E'.

  LOOP AT GO_ERRORS.
    CALL METHOD GO_ERRORS->RAISE_MESSAGE
      EXPORTING
        TYPE = 'E'.
  ENDLOOP.

  FREE GO_ERRORS.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_OUTPUT_EXCEL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FRM_OUTPUT_EXCEL .
  DATA: LV_BUTXT TYPE C LENGTH 256,
        LV_VALUE TYPE C LENGTH 256.
  DATA: LV_ROW  TYPE I,
        LV_COL  TYPE I,
        LV_COL1 TYPE CHAR2.
  DATA: LV_LINES TYPE I.
  DATA: LV_FIELD TYPE CHAR30.
  FIELD-SYMBOLS <FS_FIELD>.

  DATA:LS_RANGE       TYPE SOI_RANGE_ITEM,
       LT_RANGE       TYPE TABLE OF SOI_RANGE_ITEM, "为SET_RANGE_DATA方法标明填充数据的范围名及其行列数
       LS_CONTENT     TYPE SOI_GENERIC_ITEM,
       LT_CONTENT     TYPE TABLE OF SOI_GENERIC_ITEM, "为SET_RANGE_DATA方法提供填充数据
       LS_FORMATTABLE TYPE  SOI_FORMAT_ITEM, "设置范围格式
       LT_FORMATTABLE TYPE TABLE OF SOI_FORMAT_ITEM. "设置范围格式

  FIELD-SYMBOLS:<FS_FILED>,
                <FS_CONTENT_FIELD>.
*  DATA: LV_VALUE TYPE SOI_GENERIC_ITEM-VALUE.

  SELECT SINGLE BUTXT
    INTO LV_BUTXT
    FROM T001
   WHERE BUKRS IN S_BUKRS .

  LV_BUTXT =  '编制单位:' && LV_BUTXT.
  CONDENSE LV_BUTXT NO-GAPS .
  LV_BUTXT = LV_BUTXT && '  所属期间: ' && S_DATUM-LOW+0(4) &&
            '年' &&  S_DATUM-LOW+4(2) && '月'.
  PERFORM FRM_FILL_CELL USING 3 1 LV_BUTXT .

  LV_ROW = 4.

*  LOOP AT GT_ALV INTO GS_ALV.
*    LV_ROW = LV_ROW + 1.
*    LV_COL = 1.
*    DO 11 TIMES.
*      LV_COL = LV_COL + 1.
*      CLEAR LV_FIELD.
*      LV_FIELD = 'COL' && LV_COL.
*      CONDENSE LV_FIELD NO-GAPS.
*      ASSIGN COMPONENT LV_FIELD OF STRUCTURE GS_ALV TO <FS_FIELD>.
*      CLEAR: LV_VALUE.
*      MOVE <FS_FIELD> TO LV_VALUE.
*      CONDENSE LV_VALUE NO-GAPS.
*      PERFORM FRM_FILL_CELL USING LV_ROW LV_COL LV_VALUE .
*    ENDDO.
*    CLEAR: GS_ALV,LV_COL.
*    UNASSIGN <FS_FIELD>.
*  ENDLOOP.

  DESCRIBE TABLE GT_ALV LINES LV_LINES."填充数据行数

  CALL METHOD GO_SPREADSHEET->INSERT_RANGE_DIM
    EXPORTING
      NO_FLUSH = 'X'
      NAME     = 'RANGE1'
      LEFT     = 2
      TOP      = 5
      ROWS     = LV_LINES
      COLUMNS  = 11.
  LT_RANGE = VALUE #( ( NAME = 'RANGE1' ROWS = LV_LINES COLUMNS = '11' ) ).

  LOOP AT GT_ALV INTO GS_ALV.
    DATA(LV_COUNT_ROW) = SY-TABIX.
    DO 14 TIMES.
      DATA(LV_COLUMN) = SY-INDEX.

      ASSIGN COMPONENT SY-INDEX OF STRUCTURE GS_ALV TO <FS_FILED>.
      LS_CONTENT-ROW = LV_COUNT_ROW.
      IF SY-INDEX >= 4.
        LV_COLUMN = LV_COLUMN - 3.
        LS_CONTENT-COLUMN = LV_COLUMN.
        LS_CONTENT-VALUE = <FS_FILED>.
        APPEND LS_CONTENT TO LT_CONTENT.
      ENDIF.
      CLEAR LS_CONTENT.
    ENDDO.
    CLEAR GS_ALV.
  ENDLOOP.
  "填充数据
  CALL METHOD GO_SPREADSHEET->SET_RANGES_DATA
    EXPORTING
      NO_FLUSH = 'X'
      RANGES   = LT_RANGE
      CONTENTS = LT_CONTENT.

  "设置范围字体格式
  LT_FORMATTABLE = VALUE #( ( NAME = 'RANGE1' SIZE = 11 ALIGN = 1 ) )."RANGE1字体大小11 水平居中
  CALL METHOD GO_SPREADSHEET->SET_RANGES_FORMAT
    EXPORTING
      FORMATTABLE = LT_FORMATTABLE
      NO_FLUSH    = 'X'.
  "设置范围边框格式
  CALL METHOD GO_SPREADSHEET->SET_FRAME
    EXPORTING
      RANGENAME = 'RANGE1'
      TYP       = '127'
      COLOR     = 1.
  "设置列自动优化
  CALL METHOD GO_SPREADSHEET->FIT_WIDEST
    EXPORTING
      NO_FLUSH = 'X'
      NAME     = SPACE.

  "更改SHEET名称
  CALL METHOD GO_SPREADSHEET->SET_SHEET_NAME
    EXPORTING
      NEWNAME  = '固定资产明细表及折旧表'
      OLDNAME  = 'Sheet1'
      NO_FLUSH = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_FILL_CELL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> P_2
*&      --> P_1
*&      --> LV_VALUE
*&---------------------------------------------------------------------*
FORM FRM_FILL_CELL  USING    P_TOP   TYPE I
                             P_LEFT  TYPE I
                             P_VALUE TYPE SOI_GENERIC_ITEM-VALUE.

  CHECK P_VALUE IS NOT INITIAL .

  DATA: L_COLUMNS_NUMBER TYPE I,
        L_ROWS_NUMBER    TYPE I.
  DATA: LO_ERROR    TYPE REF TO I_OI_ERROR.

  DATA: LS_RANGEITEM TYPE SOI_RANGE_ITEM.
  DATA: LT_RANGES    TYPE SOI_RANGE_LIST.

  DATA: LT_CONTENTS TYPE SOI_GENERIC_TABLE,
        LS_CONTENTS TYPE SOI_GENERIC_ITEM.

  L_COLUMNS_NUMBER = 1.
  L_ROWS_NUMBER = 1.

  CALL METHOD GO_SPREADSHEET->INSERT_RANGE_DIM
    EXPORTING
      NAME     = 'CELL'
      NO_FLUSH = ''
      TOP      = P_TOP
      LEFT     = P_LEFT
      ROWS     = L_ROWS_NUMBER
      COLUMNS  = L_COLUMNS_NUMBER
    IMPORTING
      ERROR    = LO_ERROR.

  CALL METHOD LO_ERROR->RAISE_MESSAGE
    EXPORTING
      TYPE = 'E'.

  LS_RANGEITEM-NAME = 'CELL'.
  LS_RANGEITEM-COLUMNS = L_COLUMNS_NUMBER.
  LS_RANGEITEM-ROWS = L_ROWS_NUMBER.
  APPEND LS_RANGEITEM TO LT_RANGES.

  LS_CONTENTS-COLUMN = L_COLUMNS_NUMBER.
  LS_CONTENTS-ROW    = L_ROWS_NUMBER.
  LS_CONTENTS-VALUE = P_VALUE.
  APPEND LS_CONTENTS TO LT_CONTENTS.

  CALL METHOD GO_SPREADSHEET->SET_RANGES_DATA
    EXPORTING
      RANGES   = LT_RANGES
      CONTENTS = LT_CONTENTS
      NO_FLUSH = ''
    IMPORTING
      ERROR    = LO_ERROR.

  CALL METHOD LO_ERROR->RAISE_MESSAGE
    EXPORTING
      TYPE = 'E'.

ENDFORM.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值