1.FM:GUI_DOWNLOAD

这是最基本的方法,对应 CLASS:CL_GUI_FRONTEND_SERVICES 的方法 GUI_DOWNLOAD

注意参数 FILENAME 以xls结尾这样在保存时可以保存为 excel.

示例如下

data:itab like table of  mara WITH HEADER LINE.

DATA:BEGIN OF T_FIELDNAMES  OCCURS 0,

NAME TYPE CHAR20,

END OF T_FIELDNAMES.

START-OF-SELECTION.

select * from mara into table itab up to 10 rows.

T_FIELDNAMES-NAME = '公司代码'.

APPEND T_FIELDNAMES.

T_FIELDNAMES-NAME = '功能范围'.

APPEND T_FIELDNAMES.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename                        = 'C:\1234.xls'

FILETYPE                        = 'DAT'

"这里一般用DAT,如果用ASC则1000-不会显示为-1000,而dat会显示为-1000,如果用DBF则不会有缩进,即字符前面的空格会被除去,而且字符的前导0也会输出。

CODEPAGE                        = '8404'

tables

data_tab                        = ITAB

FIELDNAMES                      = T_FIELDNAMES

这个函数虽然说比较简单,但当FILETYP为DAT 和ASC时,在我的2010版EXCEL打开时会弹出如下的对话框(不知道在EXCEL 2003会不会有这样的问题,知道的童鞋可以给个留言):

原因: 以DAT和ASC格式存的EXCEL其实是TXT格式,与EXCEL格式不一致。

2.FM:SAP_CONVERT_TO_XLS_FORMAT

这个FM功能与GUI_DOWNLOAD类似,不过与EXCEL版本有兼容性的问题,本人在自己的系统上(excel2010)测试此FM,给出了EXCEL文件格式无效,无法打开,在EXCEL2003暂时没试过。不过,这里还是给出示例:

CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'

EXPORTING

*   I_FIELD_SEPERATOR          =

*   I_LINE_HEADER              =

I_FILENAME                 = p_file  "文件名

*   I_APPL_KEEP                = ' '

TABLES

I_TAB_SAP_DATA             =itab “内表

* CHANGING

*   I_TAB_CONVERTED_DATA       =

EXCEPTIONS

CONVERSION_FAILED          = 1

OTHERS                     = 2

3.FM:MS_EXCEL_OLE_STANDARD_DAT

这个FM不仅仅能把数据传到EXCEL同时也会直接打开EXCEL文件。

但是这个函数有一个缺点:当要把中文数据导入到EXCEL时就必有登陆中文的GUI运行程序,否则中文就会变成'#'号。

DATA:BEGIN OF iT_FIELDNAMES  OCCURS 0,

NAME TYPE CHAR20,

END OF iT_FIELDNAMES.

iT_FIELDNAMES-NAME = 'Company Code'.

APPEND iT_FIELDNAMES.

iT_FIELDNAMES-NAME = 'Function Area'.

APPEND iT_FIELDNAMES.

iT_FIELDNAMES-NAME = '5'. "针对非C、N、D、T类型列的列名,函数有Bug

APPEND iT_FIELDNAMES.

CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT'

EXPORTING

file_name                       = 'C:\johnson.XLSX'

*        CREATE_PIVOT                    = 0

*        DATA_SHEET_NAME                 = ' '

*        PIVOT_SHEET_NAME                = ' '

*        PASSWORD                        = ' '

*        pASSWORD_OPTION                 = 0

TABLES

*        PIVOT_FIELD_TAB                 =

DATA_TAB                        = itab

FIELDNAMES                      =it_fieldnames

*     EXCEPTIONS

*        FILE_NOT_EXIST                  = 1

*        FILENAME_EXPECTED               = 2

*        cOMMUNICATION_ERROR             = 3

*        oLE_OBJECT_METHOD_ERROR         = 4

*        OLE_OBJECT_PROPERTY_ERROR       = 5

*        INVALID_PIVOT_FIELDS            = 6

*       DOWNLOAD_PROBLEM                = 7

*        OTHERS                          = 8.

说明:应用这个FM时要注意的BUG:

1、Fieldname数据类型会被强制转变为对应列的类型,如果转换失败则Dump

2、如果连续两次或两次以上以上调用,列名会跑到数据区

还有一个貌似是这个函数前身 EXCEL_OLE_STANDARD_DAT ,实现方法差不多,不过这个函数对某些表会报

"data can't converted in unicode program"的错误,所以还是建议大家采用最新的函数。

4.FM:XXL_FULL_API

这个作者还没有用过,不过有个参考示例se38:XXLTTEST,有兴趣和需求的童鞋可以去看看。

5.OLE

这种方式与上面几种比较优点在于能够定制EXCEL格式,不过比较麻烦。

实现方法大家GOOLGE,网上很多前辈的帖子,这里就不详述。

6.ABAP2XLSX

这是一个类包,是一群爱好者开发的一个专门用于将ABAP数据导入到EXCEL的类,包括对齐,合并,字体,着色等的设置,因为是面向对象的,相比OLE方式要简单,所以编写程序也就比较省力了。

这个方法一般用于需要定制EXCEL格式的情况下使用。

有需要的童鞋可以CALL ME,大家交流一下。。。。

Download Excel相关推荐

  1. [node 工具] 用 Node.js 将 bugzilla 上的 bug 列表导入到 excel 表格在线版本之一(server 端)...

    之前写了个 用 Node.js 将 bugzilla 上的 bug 列表导入到 excel 表格里 的 cli 工具虽然可以用,但考虑到一下几点,总觉得需要再做点什么. 界面简陋,我那截图上是在 VS ...

  2. js中excel模板下载

    部分代码: <button class="btn" type="button" id="templateDownload">模板 ...

  3. laravel框架excel扩展包maatwebsite-excel升级3.1版本兼容处理

    maatwebsite/excel2.1版本与3.1版本写法差别有点大,不能同时使用,下面是旧方法升级新方法的调整 单Sheet导入 旧的写法使用新的扩展包导入会报错Call to undefined ...

  4. php导入excel 代码,php excel 导入导出源代码

    导入 require_once './includes/reader.php'; // ExcelFile($filename, $encoding); $data = new Spreadsheet ...

  5. 导出excel,前后台代码示例

    ExcelUtil工具类: package com.leigod.NNN.base.util;import org.apache.poi.hssf.usermodel.*;import javax.s ...

  6. axios实现excel文件下载

    axios实现excel文件下载 功能:点击导出按钮,调用接口请求数据,下载excel文件. 没有token验证时,可以采用点击a标签的方式实现excel下载, <a href="xx ...

  7. PhpSpreadsheet处理Excel 导入、导出并设置样式

    PhpSpreadsheet处理Excel PHPOffice 是一个用来处理办公相关软件的php类库 PhpSpreadsheet 专门处理excle的类库 导出如下: 引入类库 composer ...

  8. php下载excel文件模板文件,PHP下载excel文件变得腐败

    我有一个excel文件,我希望用户能够从我的服务器下载.我在这里看了很多问题,但我找不到正确下载没有腐败的文件的方法.我假设它是标题但我还没有它们的工作组合.这就是我现在所拥有的,在我收到的损坏文件中 ...

  9. C#导入excel到数据库

    这几天又碰到了要导excel数据到数据库中,之前在网上也是找,东拼西凑也是把功能弄出来了,今天写个博客记录下. 首先页面的代码 @using (Html.BeginForm("Browse& ...

最新文章

  1. 亮剑:PHP,我的未来不是梦(4)
  2. 组件通信 $ref
  3. 不做在线电商,或许才是永辉超市的未来
  4. HTML高亮标签<mark></mark>
  5. 在 C++中处理错误
  6. android什么是回调,Android中的回调是什么?
  7. 加密机组会 会议纪要
  8. usb hid 调试软件_开源USB免驱固件升级软件分享
  9. PHP笔记-所有错误统一输出404页面(详细错误日志输出,提高安全性)
  10. 如何腾出计算机内存,win10这几个步骤,瞬间为c盘腾出多G内存
  11. 搞懂Linux零拷贝,DMA
  12. 前端-页面性能调试:Hiper
  13. TypeError: unhashable type: 'list'
  14. 成为JavaGC专家Part I — 深入浅出Java垃圾回收机制
  15. matlab切片操作
  16. 计算机无法打开浏览器,win7电脑打开ie浏览器被提示“该页无法显示”怎么解决...
  17. 遗补:“预防‘磁碟机’病毒”
  18. 2021牛客暑假多校第二场 I题—Penguins
  19. 菠萝V1mini是以太坊唯一的静音机器
  20. java 反应堆模式_Java NIO 反应堆模式

热门文章

  1. HBuilder 无法检测到XCode上的模拟器
  2. 使用doctest单元测试方式培训讲解:Python函数基础
  3. 禁止文字选中 css
  4. python的相对路径导入问题
  5. PHPCMS v9设置文章的审核功能
  6. 在现有项目中使用AspNet Identity 2.0 实战
  7. VS 2010 测试功能学习(八) - RnP与Coded UI测试(继续篇)
  8. Linux搭建lamp(Apache+PHP+Mysql环境)centos7.2版详细教程
  9. phalcon:跟踪sql语句
  10. jquery 的ajax请求示例和注意事项