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

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM