需求:

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 问题处理的更多相关文章

  1. PHP导入导出excel表格图片(转)

    写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...

  2. C#变成数据导入Excel和导出Excel

    excel 基础 •整个excel 表格叫工作表:workbook:工作表包含的叫页:sheet:行:row:单元格:cell. •excel 中的电话号码问题,看起来像数字的字符串以半角单引号开头就 ...

  3. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  4. PHP导入导出Excel方法

    看到这篇文章的时候,很是惊讶原作者的耐心,虽然我们在平时用的也 有一些,但没有作者列出来的全,写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xm ...

  5. 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法

    之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...

  6. 2018年,请不要再使用OLE生成EXCEL文件

    输出EXCEL文件是ABAP开发工作中的常见需求,为了学习相关技术,我翻译过一篇文章:使用OLE2对象创建EXCEL文件,并且一度乐在其中. 最近几个月,经过与若干EXCEL打印程序的艰苦斗争,以及对 ...

  7. 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法

    由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...

  8. HSSF与XSSF导出excel文档

    Apache POI Apache POI 是用Java编写的免费开源的跨平台的 Java API,它可以创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文 ...

  9. PHP导入导出excel表格图片的代码和方法大全

    基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...

随机推荐

  1. 容器上使用Docker还是Rocket?为什么不一起用呢?

    在2014年接近尾声时,CoreOS在Docker发布了Rocket,声称Docker的流程模型有着“根本性的缺陷”.虽然CoreOS的创始人Alex Polvi尽量缓和语气,但是他坚持自己的基本观点 ...

  2. burp插件debug

    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community_v2. ...

  3. java UDP 通信:服务端与客服端

    import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import j ...

  4. 11 loader - 配置处理scss文件的loader

    1.装包 cnpm i sass-loader -D peerDependencies WARNING sass-loader@* requires a peer of node-sass@^4.0. ...

  5. Oracle LOB 大对象处理

    LOB类型列主要是用来存储大量数据的数据库字段,最大可以存储4G字节的非结构化数据. 一.LOB数据类型分类 1.按存储数据的类型分: ①字符类型:   CLOB:存储大量 单字节 字符数据.   N ...

  6. fsLayuiPlugin入门使用

    简介 源码下载后,不能直接打开,必须运行在容器下,例如:nginx.tomcat.jetty等容器. 源码中默认配置了nginx容器,可以直接启动nginx访问. 本文主要介绍下载源码后的使用,避免在 ...

  7. GO 文件读取常用的方法

    方式1: 一行一行的方式读取 其中常用的方法就有:ReadString,ReadLine,ReadBytes ReadLine 返回单个行,不包括行尾字节,就是说,返回的内容不包括\n或者\r\n,返 ...

  8. 基于JS的高级脚本语言 Sara

    Sara-基于JS的高级脚本语言 欢迎使用Sara,Sara是一款基于JavaScript的全新的高级脚本语言! Sara不像我们工作室上一款编程语言作品-Ginit一样,他属于更高级的语言 Sara ...

  9. from module_name import var

    ######## a.py ######## aa = "Hello World" ####### b.py ######## from a import aa print aa  ...

  10. 01_Tutorial 1: Serialization 序列化

    1.序列化 1.官方教程 https://q1mi.github.io/Django-REST-framework-documentation/tutorial/1-serialization_zh/ ...