• ABAP导出EXCEL表格


      使用事先做好的模板,上传至SAP,事务码SMW0,

    回到报表开发中,得到保存路径(给用户自己选)

    *选择保存路径
      CALL METHOD cl_gui_frontend_services=>directory_browse
        CHANGING
          selected_folder      = lv_selected_folder
        EXCEPTIONS
          cntl_error           1
          error_no_gui         2
          not_supported_by_gui 3
          OTHERS               4.
      IF sy-subrc <> 0.
      ENDIF.

     定义:

    DATA: go_excel    TYPE ole2_object,
          go_workbook TYPE ole2_object,
          go_sheet    TYPE ole2_object.

    DATA: lv_destination  TYPE rlgrap-filename.
    DATA: ls_key          TYPE wwwdatatab.

    * 首先下载模版
        SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF ls_key WHERE relid 'MI' AND objid 'SMW0中上传模板的对象名称'.
        CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
          EXPORTING
            key         = ls_key
            destination = lv_destination.

    * 打开模版
        CREATE OBJECT go_excel 'EXCEL.APPLICATION'.
        IF sy-subrc NE 0.
        ENDIF.
        SET PROPERTY OF go_excel 'VISIBLE' 1.
        CALL METHOD OF go_excel 'WORKBOOKS' = go_workbook.
        CALL METHOD OF go_workbook 'OPEN'
          EXPORTING
            #1 = lv_destination.
        CALL METHOD OF go_excel 'SHEETS' = go_sheet
            EXPORTING
                #1 1.
        CALL METHOD OF go_sheet 'ACTIVATE'.

     进行填值

    PERFORM fill_range USING 1 gs_head-butxt"公司名称

    PERFORM excel_row_insert USING go_sheet lv_loop2 1 lv_loop2"复制并插入一行

    再填值

    PERFORM fill_range USING lv_loop2 2  gs_output-matnr"
    最后关闭表格

    PERFORM sub_excel_save"关闭

    更改颜色参考 https://www.cnblogs.com/ybinlog/p/13797312.html

    附上PERFORM内容

    *&---------------------------------------------------------------------*
    *& Form SUB_EXCEL_SAVE
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *& -->  p1        text
    *& <--  p2        text
    *&---------------------------------------------------------------------*
    FORM sub_excel_save .
      GET PROPERTY OF go_excel 'ACTIVESHEET' = go_sheet. "获取活动SHEET
      FREE OBJECT go_sheet.
      FREE OBJECT go_workbook.
    
      GET PROPERTY OF go_excel 'ACTIVEWORKBOOK' = go_workbook.
    
    
    *  SET PROPERTY OF go_excel 'VISIBLE' = 0.  "是否显示EXCEL 此处显示不退出
    
      CALL METHOD OF go_workbook 'SAVE'.
      CALL METHOD OF go_excel 'QUIT'.
    
    
      FREE OBJECT go_sheet.
      FREE OBJECT go_workbook.
      FREE OBJECT go_excel.
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form FILL_RANGE
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *      -->P_1      text
    *      -->P_1      text
    *      -->P_GS_HEAD_BUTXT  text
    *&---------------------------------------------------------------------*
    FORM fill_range  USING   VALUE(f_row)
                             VALUE(f_col)
                             VALUE(f_value).
    
      DATA: row     TYPE i,
            col     TYPE i,
            lo_cell TYPE ole2_object.
      row = f_row.
      col = f_col.
      CALL METHOD OF go_excel 'CELLS' = lo_cell
        EXPORTING
        #1 = row
        #2 = col.
      SET PROPERTY OF lo_cell 'VALUE' = f_value.
    
    ENDFORM.
    *&---------------------------------------------------------------------*
    *& Form EXCEL_ROW_INSERT
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *      -->P_GO_SHEET  text
    *      -->P_LV_LOOP2  text
    *      -->P_1      text
    *&---------------------------------------------------------------------*
    FORM excel_row_insert  USING lcobj_sheet
                                lc_row
                                lc_count
                                lv_rowcopy.
      DATA lc_range TYPE ole2_object.
      DATA h_borders  TYPE ole2_object.
      DO lc_count TIMES.
        CALL METHOD OF lcobj_sheet 'ROWS' = lc_range
          EXPORTING #1 = lv_rowcopy.
        CALL METHOD OF lc_range 'COPY'. "COPY第10行插入一个新行
        CALL METHOD OF lcobj_sheet 'ROWS' = lc_range
          EXPORTING #1 = lc_row.
        CALL METHOD OF lc_range 'INSERT'.
        CALL METHOD OF lc_range 'CLEARCONTENTS'. "是否需要清空CELL
      ENDDO.
    ENDFORM.
    View Code

     

  • 相关阅读:
    黑马乐优商城项目总结
    SpringDataJpa学习(3)——SpringDataJpa的多表映射和动态查询
    SpringDataJpa学习(2)——SpringDataJpa的单表使用
    SpringDataJpa学习(1)——Jpa学习
    个人博客06
    个人博客05
    个人博客04
    典型用户和用户场景描述
    个人博客03
    个人博客02
  • 原文地址:https://www.cnblogs.com/chaguoguo/p/14006314.html
Copyright © 2020-2023  润新知