Export EXCEL OLE Problem

 

demand:

2, balance sheet, income statement export optimization, as more stores in the project company, the need to increase bulk export function. Press export tax payer dimension execl file, enter a few taxable entity, it generates several execl file.

 

achieve:

Program submit ZFIR0014 ZFIR0014XLS, each time passing a taxable entity, to achieve a more export EXCEL

 

  SORT lt_nszt BY znsztbm.
  DELETE ADJACENT DUPLICATES FROM lt_nszt COMPARING znsztbm.
  LOOP AT lt_nszt.
    CLEAR:rt_nszt[].
    rt_nszt = VALUE #( ( sign = 'I' option = 'EQ'   low = lt_nszt-znsztbm high = '' ) ).
    SUBMIT zfir0014 WITH p_bukrs IN p_bukrs
                    WITH p_tpaye IN rt_nszt
                    WITH p_gjahr IN p_gjahr
                    WITH p_monat = p_monat AND RETURN.
*                    WITH p_rg1   = ''
*                    WITH p_rg2   = 'X'
*                    WITH repfile = repfile
  ENDLOOP.

But the testing process encountered several EXCEL strange error, Excel errors are not familiar with, do not know how to find a cause, we need to study

Problem: 1. Double-click to open the EXCEL file, flashed no response, the document does not open

2. Open the EXCEL file, for the first time to see the data, close, and open again, EXCEL file data is gone sheet2

 

3. EXCEL error by my own user opened, has been locked

 

EXCEL exported function source  

 函数:Z_SAVE_INITABLE_TO_EXCEL

FUNCTION Z_SAVE_INITABLE_TO_EXCEL.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IV_TYPES) TYPE  CHAR1
*"     VALUE(IV_VISIBLE) TYPE  I DEFAULT 1
*"     REFERENCE(IV_FILENAME)
*"  TABLES
*"      IT_TABLE STRUCTURE  ZFAGL_EXCEL
*"  EXCEPTIONS
*"      NO_RECORD
*"----------------------------------------------------------------------


  INCLUDE  ole2incl.
  DATA: excel TYPE  ole2_object.   "Excel Object
  DATA: books TYPE ole2_object.    "List of workbooks
  DATA: range TYPE ole2_object.
  DATA: book TYPE ole2_object.     "workbook
  DATA: worksheets TYPE ole2_object.     "workbook
  DATA: sheets TYPE ole2_object.     "workbook
  DATA: cells TYPE ole2_object.     "workbook
  DATA: s1(10) TYPE c,
        s2(10) TYPE c,
        msg(100) TYPE c.
  DEFINE insert_excel_row.
    call method of
    sheets
    'ROWS' = range
    exporting
      #1     = &1.
    call method of range 'INSERT'
    .
  END-OF-DEFINITION.
  DEFINE write_excel_cells.
    call method of
    excel
    'Cells' = cells
    exporting
      #1      = &1
      #2      = &2.
    set property of cells 'VALUE' = &3.
  END-OF-DEFINITION.


  s1 = lines( it_table[] ) .
  IF s1 = 0.
    MESSAGE '没有满足条件的记录!' TYPE 'I' .
    RAISE no_record.
  ENDIF.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
  EXPORTING
    percentage = 0
    text       = '正在处理Excel文件......'
  EXCEPTIONS
    OTHERS     = 1.
*  ********打开EXCEL表************
  CREATE OBJECT excel 'Excel.Application'.
  SET PROPERTY OF excel 'VISIBLE' = 0.
  CALL METHOD OF
  excel
  'WORKBOOKS' = books.
  CALL METHOD OF
  books
  'OPEN' = book
  EXPORTING
    #1     = iv_filename.  "本地文件地址和文件名
*  选择Sheets 2
  CALL METHOD OF
  excel
  'Sheets' = sheets
  EXPORTING
    #1       = 2.
  CALL METHOD OF
  sheets
  'Select'.
*  激活选择的sheets
*  CALL METHOD OF
*      SHEETS
*      'ACTIVATE'.
*  把内表数据写入到 sheet2 中。

  SORT it_table BY zzcode DESCENDING.
  LOOP AT it_table.
    s2 = sy-tabix.
    CONDENSE: s1,s2.
    CONCATENATE  '正在写入EXCEL:' s2 '/' s1  '......' INTO msg.
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = 2
      text       = msg
    EXCEPTIONS
      OTHERS     = 1.
    insert_excel_row sy-tabix.
    write_excel_cells:sy-tabix 1 it_table-zzcode,
    sy-tabix 2 it_table-zzitemcn,
    sy-tabix 3 it_table-ncbtr,
    sy-tabix 4 it_table-qmbtr,
    sy-tabix 5 it_table-butxt,
    sy-tabix 6 it_table-monat,
    sy-tabix 7 it_table-hsldt,
    sy-tabix 8 it_table-hsldt_total,
    sy-tabix 9 it_table-hsldt_before,
    sy-tabix 10 it_table-hsldt_year_total,
    sy-tabix 11 it_table-hsldt_before_year,
    sy-tabix 12 it_table-attrx1,
    sy-tabix 13 it_table-attrx2,
    sy-tabix 14 it_table-attrx3,
    sy-tabix 15 it_table-attr1,
    sy-tabix 16 it_table-attr2,
    sy-tabix 17 it_table-attr3,
    sy-tabix 18 it_table-attr4,
    sy-tabix 19 it_table-attr5,
    sy-tabix 20 it_table-attr6,
    sy-tabix 21 it_table-attr7,
    sy-tabix 22 it_table-attr8,
    sy-tabix 23 it_table-attr9,
    sy-tabix 24 it_table-attr10,
    sy-tabix 25 it_table-attr11,
    sy-tabix 26 it_table-attr12 .
  ENDLOOP.

*  选择Sheets 1
  SET PROPERTY OF excel 'VISIBLE' = iv_visible.
  CALL METHOD OF
  excel
  'Sheets' = sheets
  EXPORTING
    #1       = 1.
  CALL METHOD OF
  sheets
  'Select'.
*  激活选择的sheets
  CALL METHOD OF
  sheets
  'ACTIVATE'.
  SET PROPERTY OF book 'SAVED' = 0.
*  SET PROPERTY OF excel 'Visible' = 1.

  FREE OBJECT book.



ENDFUNCTION.
View Code

 

Guess you like

Origin www.cnblogs.com/rainysblog/p/11289651.html