需求:

2、资产负债表、利润表导出优化,由于项目公司门店较多,需要增加批量导出功能。按纳税主体维度导出execl文件,输入了几个纳税主体,就生成几个execl文件。

实现:

用程序ZFIR0014XLS  submit  ZFIR0014 ,每次传入一个纳税主体,实现一次导出多个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.

但是测试过程遇到好几个EXCEL 的奇怪错误,Excel 的错误不熟悉,不知道怎么找原因,需要研究

问题:1. 双击打开EXCEL文件 ,闪一下就没反应了,文档没有打开

2.打开 EXCEL文件,第一次能看到数据, 关闭,再一次代开,EXCEL文件中sheet2的 数据没有了

3.报错EXCEL 被我自己的用户打开了,已经锁定

原因:  有两个Excel进程没有关闭, 进程被占用,所以打开任何一个excel文件都会显示  自己正在编辑。

要用到以下语法解决:

EXCEL 导出的函数源码

函数: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() TYPE c,
s2() TYPE c,
msg() TYPE c.
DEFINE insert_excel_row.
call method of
sheets
'ROWS' = range
exporting
# = &.
call method of range 'INSERT'
.
END-OF-DEFINITION.
DEFINE write_excel_cells.
call method of
excel
'Cells' = cells
exporting
# = &
# = &.
set property of cells 'VALUE' = &.
END-OF-DEFINITION. s1 = lines( it_table[] ) .
IF s1 = .
MESSAGE '没有满足条件的记录!' TYPE 'I' .
RAISE no_record.
ENDIF. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage =
text = '正在处理Excel文件......'
EXCEPTIONS
OTHERS = .
* ********打开EXCEL表************
CREATE OBJECT excel 'Excel.Application'.
SET PROPERTY OF excel 'VISIBLE' = .
CALL METHOD OF
excel
'WORKBOOKS' = books.
CALL METHOD OF
books
'OPEN' = book
EXPORTING
# = iv_filename. "本地文件地址和文件名
* 选择Sheets 2
CALL METHOD OF
excel
'Sheets' = sheets
EXPORTING
# = .
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 =
text = msg
EXCEPTIONS
OTHERS = .
insert_excel_row sy-tabix.
write_excel_cells:sy-tabix it_table-zzcode,
sy-tabix it_table-zzitemcn,
sy-tabix it_table-ncbtr,
sy-tabix it_table-qmbtr,
sy-tabix it_table-butxt,
sy-tabix it_table-monat,
sy-tabix it_table-hsldt,
sy-tabix it_table-hsldt_total,
sy-tabix it_table-hsldt_before,
sy-tabix it_table-hsldt_year_total,
sy-tabix it_table-hsldt_before_year,
sy-tabix it_table-attrx1,
sy-tabix it_table-attrx2,
sy-tabix it_table-attrx3,
sy-tabix it_table-attr1,
sy-tabix it_table-attr2,
sy-tabix it_table-attr3,
sy-tabix it_table-attr4,
sy-tabix it_table-attr5,
sy-tabix it_table-attr6,
sy-tabix it_table-attr7,
sy-tabix it_table-attr8,
sy-tabix it_table-attr9,
sy-tabix it_table-attr10,
sy-tabix it_table-attr11,
sy-tabix it_table-attr12 .
ENDLOOP. * 选择Sheets 1
SET PROPERTY OF excel 'VISIBLE' = iv_visible.
CALL METHOD OF
excel
'Sheets' = sheets
EXPORTING
# = .
CALL METHOD OF
sheets
'Select'.
* 激活选择的sheets
CALL METHOD OF
sheets
'ACTIVATE'.
SET PROPERTY OF book 'SAVED' = .
* SET PROPERTY OF excel 'Visible' = 1. FREE OBJECT book. ENDFUNCTION.

修改后代码

  INCLUDE  ole2incl.
DATA: excel TYPE ole2_object. "Excel Object
DATA: books TYPE ole2_object. "List of workbooks
DATA: sheets TYPE ole2_object. "workbook
DATA: book TYPE ole2_object. "workbook
DATA: cells TYPE ole2_object. "workbook DATA: s1() TYPE c,
s2() TYPE c,
msg() TYPE c. DEFINE write_excel_cells.
CALL METHOD OF
excel
'Cells' = cells
EXPORTING
# = &
# = &.
SET PROPERTY OF cells 'VALUE' = &.
END-OF-DEFINITION. s1 = lines( it_table[] ) .
IF lines( it_table[] ) = .
MESSAGE '没有满足条件的记录!' TYPE 'I' .
RAISE no_record.
ENDIF. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage =
text = '正在处理Excel文件......'
EXCEPTIONS
OTHERS = . CREATE OBJECT excel 'Excel.Application'.
SET PROPERTY OF excel 'VISIBLE' = . CALL METHOD OF excel 'WORKBOOKS' = books. CALL METHOD OF books 'OPEN' = book
EXPORTING
# = iv_filename. "本地文件地址和文件名 CALL METHOD OF excel 'Sheets' = sheets
EXPORTING
# = . * SET PROPERTY OF sheets 'NAME' = '纳税主体'. CALL METHOD OF sheets 'Select'. SORT it_table BY zzcode .
LOOP AT it_table .
s2 = sy-tabix.
CONDENSE: s1,s2.
msg = '正在写入EXCEL:' && s2 && '/' && s1 && '......'.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage =
text = msg
EXCEPTIONS
OTHERS = . write_excel_cells:
s2 it_table-zzcode,
s2 it_table-zzitemcn,
s2 it_table-ncbtr,
s2 it_table-qmbtr,
s2 it_table-butxt,
s2 it_table-monat,
s2 it_table-hsldt,
s2 it_table-hsldt_total,
s2 it_table-hsldt_before,
s2 it_table-hsldt_year_total,
s2 it_table-hsldt_before_year,
s2 it_table-attrx1,
s2 it_table-attrx2,
s2 it_table-attrx3,
s2 it_table-attr1,
s2 it_table-attr2,
s2 it_table-attr3,
s2 it_table-attr4,
s2 it_table-attr5,
s2 it_table-attr6,
s2 it_table-attr7,
s2 it_table-attr8,
s2 it_table-attr9,
s2 it_table-attr10,
s2 it_table-attr11,
s2 it_table-attr12 . ENDLOOP. CALL METHOD OF book 'Save'.
CALL METHOD OF book 'close'.
CALL METHOD OF excel 'quit'.

最新文章

  1. ubuntu 更新重启后 登录后 无法进入图形界面
  2. 反编译工具 使用.NET JustDecompile来反编译你的程序代码
  3. Linux GRUB 2及修改默认启动项
  4. microsoft
  5. sharepoint 2010 在自定义列表的字段上增加功能菜单
  6. JS中的call()和apply()方法理解和使用
  7. 解决WebSocket兼容ie浏览器版本问题
  8. .NET Core RSA 签名和验签(密钥为 16 进制编码)
  9. [PHP] PHP服务器接口SAPI中的结构体
  10. 一个std::sort 自定义比较排序函数 crash的分析过程
  11. class09
  12. 使用cookie时出现“未将对象引用设置到对象实例”
  13. 极端恢复时用到的几个隐藏参数 Oracle hidden corruption recovery parameters
  14. D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线...
  15. xargs实例
  16. layui 图片上传+表单提交+ Spring MVC
  17. PLSQL 问题小记
  18. 解压cpio.gz、zip类型文件
  19. leetcode 235 236 二叉树两个节点的最近公共祖先
  20. SLVA299A : Load Disconnect ( Input to Output Isolation ) for the TPS61040

热门文章

  1. 企业级本地yum源配置方案详解
  2. javaScript基础及初始面向对象
  3. soap协议测试
  4. promise 及 setTimeout 执行顺序
  5. windows使用强大的wget工具
  6. chrome 截取整个网页
  7. P1069 细胞分裂——数学题,质因数分解
  8. Ubuntu 14.04 源
  9. 深入理解WebRTC
  10. OpenFOAM的PISO算法【转载】