SAP下载Excel可通过OLE技术实现,但由于OLE的下载速度较慢,对于数据量大的时候影响用户体验,所以最新使用DOI技术。

DOI主要使用了接口I_OI_DOCUMENT_PROXY和I_OI_SPREADSHEET,但由于SAP封装的类方法有限,有些特殊要求无法满足,好在DOI底层其实也是使用了OLE对象,所以我们可以获取OLE对象实现SAP未封装的功能,譬如复制sheet、设置列宽等等。

DOI获取OLE对象可调用接口I_OI_DOCUMENT_PROXY的方法GET_DOCUMENT_HANDLE得到HANDLE-OBJ。然后获取HANDLE-OBJ的Application属性即为Office应用对象,获取Office应用对象的ActiveWorkbook属性即为Excel对象。

核心代码如下:

  CALL METHOD gr_document->get_document_handleIMPORTINGerror  = lr_errorhandle = lr_handle.CALL METHOD lr_error->raise_messageEXPORTINGtype = 'E'.GET PROPERTY OF lr_handle-obj 'Application' = lr_excel.GET PROPERTY OF lr_excel 'ActiveWorkbook' = lr_workbook.

示例功能:复制模板Sheet并根据需求复制对应列

*&---------------------------------------------------------------------*
*& Form frm_add_sheet
*&---------------------------------------------------------------------*
*& 增加Sheet
*&---------------------------------------------------------------------*
*& --> IV_KTEXT_COL          科室列数
*& <-- CV_NAME               Sheet名
*&---------------------------------------------------------------------*
FORM frm_add_sheet USING iv_ktext_col TYPE iCHANGING cv_name      TYPE char50.DATA: lr_error    TYPE REF TO i_oi_error,lr_handle   TYPE cntl_handle,lr_excel    TYPE ole2_object,lr_workbook TYPE ole2_object,lr_sheet    TYPE ole2_object,lr_range    TYPE ole2_object.CALL METHOD gr_document->get_document_handleIMPORTINGerror  = lr_errorhandle = lr_handle.CALL METHOD lr_error->raise_messageEXPORTINGtype = 'E'.GET PROPERTY OF lr_handle-obj 'Application' = lr_excel.GET PROPERTY OF lr_excel 'ActiveWorkbook' = lr_workbook.IF cv_name = TEXT-t02.
*   重命名汇总SheetIF g_first_day = g_last_day.cv_name = g_first_day.ELSE.cv_name = g_first_day && '-' && g_last_day.ENDIF.CALL METHOD OF lr_workbook 'Sheets' = lr_sheetEXPORTING#1 = 1.SET PROPERTY OF lr_sheet 'Name' = cv_name.ELSE.
*   复制模板SheetCALL METHOD OF lr_workbook 'Sheets' = lr_sheetEXPORTING#1 = 1.CALL METHOD OF lr_sheet 'Copy'EXPORTING#1 = lr_sheet.SET PROPERTY OF lr_sheet 'Name' = cv_name.ENDIF.CALL METHOD OF lr_sheet 'Select'.* 科室分列导出IF gv_expand IS NOT INITIAL.
*   新增科室列DO iv_ktext_col - 1 TIMES.
*     复制科室列CALL METHOD OF lr_excel 'Columns' = lr_rangeEXPORTING#1 = 6.CALL METHOD OF lr_range 'Select'.CALL METHOD OF lr_range 'Copy'.CALL METHOD OF lr_range 'Insert'.ENDDO.ENDIF.FREE lr_handle.FREE lr_excel.FREE lr_workbook.ENDFORM.

SAP 下载EXCEL DOI使用OLE功能(DOI获取OLE对象)相关推荐

  1. SAP 下载excel提示 请和系统管理员联系.缺少下列模板:sap_sm.xls

    一.运行程序:BCALV_BDS_IMPORT_SAP_TEMPLATE,在Client000 Copy一个. 二.运行Tcode OAER,参数为: Class name: ALVLAYOUTTEM ...

  2. Delphi 的绘图功能[5] - 获取 Canvas 对象

    在窗体上添加 Panel1.PaintBox1 和 Button1, 代码如下: procedure TForm1.Button1Click(Sender: TObject); varcvs: TCa ...

  3. SAP ABAP EXCEL 下载模板并导入(数据批导)

    SAP ABAP EXCEL 下载模板并导入(数据批导) 文章目录 SAP ABAP EXCEL 下载模板并导入(数据批导) 前言 上传 EXCEL 模板 下载 EXCEL 模板 定义屏幕 初始化设置 ...

  4. java导出功能无法下载excel

    java导出功能无法下载excel 开始使用ajax请求,项目不报错,但是浏览器也没有Excel文件下载,查找代码好久都没有解决 原因:Ajax请求只是个"字符型"的请求,即请求的 ...

  5. 前端下载excel文件功能的三种方法

    1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...

  6. java下载excel实现合并单元格功能

    在下载excel中偶尔会出现需要合并单元格的情况再导出,代码如下: // 1.创建工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 标题合并单元格设 ...

  7. SAP UI5 应用开发教程之一百零二 - SAP UI5 应用的打印(Print)功能实现详解试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  8. Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)

    Excel的导入V2优化版 有些时候文件上传这一步骤由前端来处理,只将上传后的 URL 传输给后端(可以参考上一文中的图片上传功能),也就是导入请求中并不会直接处理 MultipartFile 对象, ...

  9. django下载excel,使用django-excel插件

    django下载Excel,使用django-excel插件 由于目前的资料多是使用pandas或xlwt库实现的.其实没有那么的麻烦,因为django有相对应的插件django-excel. 该插件 ...

最新文章

  1. 电脑硬件检测_好用的电脑硬件型号有哪些_江西南昌顺同谦科技|电脑||笔记本|...
  2. systemctl与mysql多实例_mysql mariadb 多版本多实例 开机启动
  3. 《操作系统》CPU如何区分正在运行的是内核程序or应用程序?
  4. VS2013出现“无法找到“xxx.exe”的调试信息,或者调试信息不匹配”错误解决方案
  5. 使用matlab画半透明椭圆
  6. macOS修改Homebrew镜像
  7. SQL:PostgreSQL设置自增序列
  8. 基于J2EE规范的中间件——EJB开发实例2
  9. 三段式状态机的写法总结
  10. matlab版深度学习入门之旅----体验过后的个人记录
  11. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.23
  12. python3 selenium xpath 下载斗鱼颜值主播头像 入门demo
  13. c语言实验报告总结通用版,C语言实训心得体会
  14. web学生网页设计作业源码——国际足联世界杯(HTML+CSS)
  15. Microsoft 提供的 USB 驱动程序
  16. 计算机专业是不是天坑专业,工科中的三大“天坑”专业,就业前景不太乐观,入坑需谨慎!...
  17. pdcp层的作用_LTE协议栈总体架构、PDCP层及RLC层概述
  18. 大二Web课程设计 HTML+CSS制作苹果商城网站 Apple商城 8个页面
  19. 如何删除鼠标右键的显示的快捷键或功能?
  20. vue数据更新,页面不更新

热门文章

  1. 高级软件工程必做作业2.视频剪辑软件调研——抖音、快手、vue
  2. Android悬浮窗播放视频
  3. 三年硕士五年博,霜染青丝纹上额
  4. ijkplayer在Android 12不能播放,闪退
  5. Python使用scatter函数绘制点在线的上层
  6. 谈谈运维工程师培训哪家好?
  7. Photoshop如何转换点文字为段落文本自动换行(PS)
  8. “醉眼”看Oracle ERP和SAP ERP种种异同
  9. 软件测试——测一只笔
  10. 短期内从一个外行变成了解行业的人