OLE导出EXCEL 问题处理
需求:
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'.
OLE导出EXCEL 问题处理的更多相关文章
- PHP导入导出excel表格图片(转)
写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...
- C#变成数据导入Excel和导出Excel
excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就 ...
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- PHP导入导出Excel方法
看到这篇文章的时候,很是惊讶原作者的耐心,虽然我们在平时用的也 有一些,但没有作者列出来的全,写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xm ...
- 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法
之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...
- 2018年,请不要再使用OLE生成EXCEL文件
输出EXCEL文件是ABAP开发工作中的常见需求,为了学习相关技术,我翻译过一篇文章:使用OLE2对象创建EXCEL文件,并且一度乐在其中. 最近几个月,经过与若干EXCEL打印程序的艰苦斗争,以及对 ...
- 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法
由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...
- HSSF与XSSF导出excel文档
Apache POI Apache POI 是用Java编写的免费开源的跨平台的 Java API,它可以创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文 ...
- PHP导入导出excel表格图片的代码和方法大全
基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...
随机推荐
- ui自动化笔记 selenium_webdriver,ui自动化框架(web)
Selenium学习笔记 selenium webdriver是业界公认ui自动化测试的标准,其封装的api可以对浏览器的任何地方进行操作 selenium2.0和selenium3.0的区别? 3. ...
- 0013SpringBoot处理国际化问题
1.application.properties中指明国际化文件所在路径和文件前缀 2.登录页面用#{}的形式从国际化配置文件中取值 3.编写国际化文件 ----------------------- ...
- 关于https的五大误区
如今,https协议正在被广泛重视和使用.随着今年2月初,谷歌旗下Chrome浏览器宣布将所有http标示为不安全网站,许多网站都争相从http升级到了https.当你打开很多网站时,会发现浏览器左上 ...
- php常量和变量之变量引用
变量引用 变量引用很多老师喜欢来用C语言的指针来去讲解.我们作为有这么多年开发和教学经验的人来说——大多数学习PHP的人来说根本不了解C语言. 使用C语言一指针来讲解变量引用,我们觉得画蛇填足.并且, ...
- 学到了武沛齐讲的Day14完
& 交 | 并 ^ 并-交 --------------------- 格式化 %s 字符串,数字,一切 %.4s 留前面4位 %d 数字 %f 小数保留6位 四舍五入 %0. ...
- MongoDB 查看存储引擎
需要登录到具体的主/从节点查询,mongos查询不到 db.serverStatus() 其中有这个 "storageEngine" : { "name" : ...
- MongoDB 4.0 事务实现解析
MongoDB 4.0 引入的事务功能,支持多文档ACID特性,例如使用 mongo shell 进行事务操作 > s = db.getMongo().startSession() sessio ...
- 后台(一)vue+element-ui (按需加载)
vue init webpack 项目名称 npm install axios //先安装! npm install --save axios vue-ax ...
- 窗口看门狗 WWDG
一,窗口看门狗 二,喂狗注意事项 三,程序设计 1.检查复位状态,有助于观察当前工作的可靠性 /* Check if the system has resumed from WWDG reset ,检 ...
- MySQL5.5安装步骤
原文链接:https://blog.csdn.net/m0_38025207/article/details/80723095 1.首先进入的是安装引导界面 2.然后进入的是类型选择界面,这里有3个类 ...