三步搞定ABAP DOI操作EXCEL

2023-11-19

ABAP可以使用OLE与DOI两种方式实现操作EXCEL。使用OLE时,每个单元格的值和样式都需要写代码实现,特别是对于不规则的格式, 代码量巨大. 而DOI是从服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存。当然,也可以直接创建新的EXCEL文件往里面传递数据并设置格式(这样好像又走回老路了,不是我们要的, OLE与DOI的区别就好像是面向过程与面向对象的区别).

简单来说,DOI操作EXCEL主要有以下几步:

准备工作:上传Excel模板

第一步:下载Excel到本地

第二步:打开Excel文档

第三步: 写入数据

----------------------------------------------------正文-------------------------------------------------------------------------------------

准备工作:上传Excel模板:

1.输入Tcode: smw0 如图所示:
在这里插入图片描述

2.选择二进制数据选择,回车后进入查询界面,包: MI
在这里插入图片描述

3.点击执行:进入显示列表,点击新建图标:
在这里插入图片描述

4.输入对象名称与描述后点击打开文件选择框,选择文件后,会提示选择包,
在这里插入图片描述

好了,可以写代码了(复制可以直接运行,前提是已经上传模板),

REPORT zr04_ole_templet.

DATA:c_export_filename_xls TYPE string VALUE ‘ZRRFQ01_1.XLS’, "导出模板默认文件名 ‘数据导入模板’
c_objid_xls TYPE wwwdatatab-objid VALUE ‘ZRRFQ01_1.XLS’. "存放模板的对象id

DATA: lo_objdata LIKE wwwdatatab, "Excel模板对象
ls_destination LIKE rlgrap-filename ,"下载保存的目标路径
lc_path TYPE string, "存储路径
lc_fullpath TYPE string, "文件完整路径
li_rc LIKE sy-subrc. "返回值

DATA: excel_obj TYPE ole2_object,
book_obj TYPE ole2_object,
sheet_obj TYPE ole2_object,
cell_obj TYPE ole2_object.

START-OF-SELECTION.

第一步: 下载Excel到本地
PERFORM download_xls_template.

第二步:打开Excel文档
PERFORM open_excel.

第三步: 写入数据
PERFORM write_excel.

&---------------------------------------------------------------------
*& Form download_xls_template
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------
FORM download_xls_template.

  • 获取保存路径
    CALL METHOD cl_gui_frontend_services=>get_desktop_directory
    CHANGING
    desktop_directory = lc_path.
    IF lc_path IS INITIAL.
    lc_path = ‘C:\TEMP’.
    ENDIF.
    CONCATENATE lc_path ‘’ c_export_filename_xls INTO lc_fullpath.

  • 检查模板是否存在
    SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata
    WHERE srtf2 = 0 AND relid = ‘MI’ AND objid = c_objid_xls.
    IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
    MESSAGE e000(zpp001) WITH c_export_filename_xls.
    ENDIF.

  • 下载模板
    ls_destination = lc_fullpath.
    CALL FUNCTION ‘DOWNLOAD_WEB_OBJECT’
    EXPORTING
    key = lo_objdata
    destination = ls_destination
    IMPORTING
    rc = li_rc.
    IF li_rc NE 0.
    MESSAGE e001(zpp001) WITH c_export_filename_xls.
    ENDIF.
    ENDFORM. "download_xls_template

&---------------------------------------------------------------------
*& Form open_excel
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------
FORM open_excel.

CREATE OBJECT excel_obj ‘excel.APPLICATION’.
IF sy-subrc NE 0.
MESSAGE ‘EXCEL创建错误’ TYPE ‘S’ DISPLAY LIKE ‘E’.
STOP.
ENDIF.
CALL METHOD OF excel_obj ‘WORKBOOKS’ = book_obj.
SET PROPERTY OF excel_obj ‘VISIBLE’ = 1.
SET PROPERTY OF excel_obj ‘SheetsInNewWorkbook’ = 1.

  • 打开excel文件 , (新建使用:CALL METHOD OF book_obj ‘Add’ = sheet_obj)
    CALL METHOD OF book_obj ‘Open’ = sheet_obj
    EXPORTING #1 = ls_destination.
    CALL METHOD OF sheet_obj ‘ACTIVATE’.
    FREE OBJECT sheet_obj. "OK
    ENDFORM. "open_excel

&---------------------------------------------------------------------
*& Form write_excel
&---------------------------------------------------------------------

  •   text
    

----------------------------------------------------------------------
FORM write_excel.
DATA: it_spfli LIKE spfli OCCURS 10 WITH HEADER LINE.
DATA: h TYPE i. "行号
*取数据
SELECT * FROM spfli INTO TABLE it_spfli UP TO 10 ROWS.

  • 输出Excel表头,自定义格式的列等
    PERFORM fill_cell USING 1 1 1 ‘Flug’(001).
    PERFORM fill_cell USING 1 2 1 ‘Nr’(002).
    PERFORM fill_cell USING 1 3 1 ‘Von’(003).
    PERFORM fill_cell USING 1 4 1 ‘Nach’(004).
    PERFORM fill_cell USING 1 5 1 ‘Zeit’(005).
  • 复制数据到Excel,针对固定格式
    LOOP AT it_spfli.
    h = sy-tabix + 1.
    PERFORM fill_cell USING h 1 0 it_spfli-carrid.
    PERFORM fill_cell USING h 2 0 it_spfli-connid.
    PERFORM fill_cell USING h 3 0 it_spfli-cityfrom.
    PERFORM fill_cell USING h 4 0 it_spfli-cityto.
    PERFORM fill_cell USING h 5 0 it_spfli-deptime.
    ENDLOOP.
    FREE OBJECT cell_obj.
    ENDFORM. "write_excel

&---------------------------------------------------------------------
*& Form FILL_CELL
&---------------------------------------------------------------------

  • row: 行号,
  • col: 列号,
  • bold: 字体是否加粗,0,否,1是.
  • val: 填充值
    ----------------------------------------------------------------------
    FORM fill_cell USING row col bold val.
    CALL METHOD OF excel_obj ‘CELLS’ = cell_obj
    EXPORTING #1 = row #2 = col.
    SET PROPERTY OF cell_obj ‘VALUE’ = val.
    FREE OBJECT cell_obj.
    ENDFORM. "FILL_CELL

效果图:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三步搞定ABAP DOI操作EXCEL 的相关文章

  • SAP 一句话入门之SD

    SD是Sales and Distribution的简称 在SAP系统中 xff0c 销售与分销模块处在供应链下游 xff0c 关注从客户订单到向客户收款的全过程 SD模块中的Sales好理解 xff0c 而Distribution却容易被
  • SAP接口设计的扩展性考虑

    由于现在的系统和SAP的接口出现了几次变更 xff0c 因此需要对系统进行设计改造 由于系统中和SAP交互的接口不止一处 xff0c 而且也是在不同的时间段进行开发 xff0c 并由不同的人员来完成的 xff0c 因此我在维护升级的过程中
  • SAP HR模块配置假期日历和缺勤类型

    目录 一 配置假期日历 二 配置缺勤信息类型 2 1 定义缺勤类型 2 2 定义缺勤的计算规则 2 3 分配缺勤计算规则到缺勤类型 一 配置假期日历 SAP的HR模块中 xff0c 业务顾问在实施的时候一般会配置未来10年的假期日历 xff
  • rc=20 > Connect to SAP gateway failed

    这种错误 xff0c 我是在一台用户的电脑上碰到的 xff0c 解决方案很简单 xff1a 把Computer Name换成英文 汗了许久
  • SAP MM学习笔记17-在库品目评价中的标准原价 S 和移动平均价格 V

    SAP中有2种价格 标准原价 S 和 移动平均价格 V 1 标准原价 S 2 移动平均价格 V 在MM03 会计1 Tab中 现行评价区域中 有原价管理区分 比如下面这个物料 100 100 它的原价管理区分是 S 它的合计额 就是 标准原
  • SAP ABAP HANA 使用ECLIPSE而不是HANA Studio

    首先是ECLIPSE下载 链接 在这个网页中找到SAP HANA Tools这一块 然后跟着procedure的操作来做 即下图 安装完成后 连接SAP系统 打开Eclipse 点图中的按钮或菜单栏Windows gt Perspectiv
  • 三步搞定ABAP DOI操作EXCEL

    前言 ABAP可以使用OLE与DOI两种方式实现操作EXCEL 使用OLE时 每个单元格的值和样式都需要写代码实现 特别是对于不规则的格式 代码量巨大 而DOI是从服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存 当然 也可
  • REUSE_ALV_FIELDCATALOG_MERGE 自动创建格式(FIELDCAT)

    1 alv需要显示的时候字段太多 或者有现成的结果表的时候可以用函数创建字段的文字描述 fieldcat样式 2 先用函数把结构或者表转换 I STRUCTURE NAME 可以是表也可以结构 如果是定义的结构需要用 like 参考 DAT
  • 网络系统实现技术之IPX与SPX

    IPX SPX Novell NetWare网络 Novell公司为适应网络发展 将主机网络转换为PC网络 开发了Novell NetWare网络系统 该系统中基于客户机 服务器模式 以普通PC机做为客户机 以性能强大的服务器做为服务器 为
  • 新闻分析:解密代号A1S

    本周二SAP董事长特拉普纳 Hasso Plattner 在Software 2007会议上发言时阐述了SAP新的软件设计方法 SAP表示在过去的三年中有3000多名工程师都在运用这种新的软件设计方法在开发代号为A1S的新产品 虽然这一代号
  • SAP 资产屏幕增强(AS01/AS02/AS03)

    导语 最新需要在资产屏幕上增加增强字段 效果图在最后 下面分享一下实现过程 一 在表中增强字段 本次增强的是 资产主数据 gt 源 中的字段 选择储存在ANLU表中 二 创建屏幕 在函数组XAIS中创建屏幕9001 在屏幕上绘制需要增强的字
  • SAP ABAP ME23N 采购订单打印输出

    本人诚心接ABAP远程开发任务 价格公道 有需要的联系我 欢迎个人 甲方爸爸 乙方私信联系 完成的功能是ME23N 点击打印预览 客制化用户自己的打印模板 首先需要先配置打印输出 路径 spro gt 物料管理 gt 采购 gt 消息 gt
  • rc=20 > Connect to SAP gateway failed

    这种错误 我是在一台用户的电脑上碰到的 解决方案很简单 把Computer Name换成英文 汗了许久
  • S/4 Coding block 增加扩张字段与error的解决方法

    在做FICO项目中经常要遇到往标准画面或者标准表追加客户自定义字段 网上也有很多方法 但是都有点不太连贯 今天总结一下初级实施人员也可以掌握的方法分享给大家 1 T CODE OXK3 进入到初期画面里面 我们的扩张对象CI COBL应该是
  • FB02编辑Coding Block字段

    默认情况下FB02是不允许更改coding block的增强字段的 需要实现可编辑需要进行两个步骤 1 实施note 3067143 2 SM30在视图TCOBX中对增强字段添加以下配置 前台效果
  • WMS仓库管理系统与ERP仓储系统的区别与联系

    现代企业越来越重视物流及仓储管理 然而提到WMS仓库管理系统与ERP仓储系统 许多企业管理者依旧是一脸茫然的表情 无法清晰的区别分辨 其实这两款软件在功能上有相似的地方 下面就由沈阳达策带您一看究竟 实际上 ERP仓储系统和WMS仓库管理系
  • ChatGPT懂SAP吗?跟ChatGPT聊完后,我暂时还不担心会被它取代岗位

    我弄了个ChatGPT账号 随便问了一下他SAP的问题 它的回答还是比较有意思的 贴出来跟大家分享一下 问题1 我是 SAP 开发工程师 你有什么可以帮到我 作为一个语言模型 我可以为您提供关于SAP开发的一般性建议 以及关于如何使用SAP
  • SAP创建采购申请的时候供货源信息不完整

    如图所示 原先该物料的对应的供应商的采购信息记录已经维护好 货源清单也已经创建 但是在ME51N创建采购申请的时候发现红色框的供应商是没显示出来的 首先检查货源清单ME01 数据维护完整 然后返回到ME11采购信息记录中发现 有必填项没有维
  • 何谓离散制造

    离散制造 Intermittent Discrete Manufacturing 产品的生产过程通常被分解成很多加工任务来完成 每项任务仅要求企业的一小部分能力和资源 企业一般将功能类似的设备按照空间和行政管理建成一些生产组织 部门 工段或
  • 如何使用 R 搜索 PubMed 或其他数据库

    我最近一直在使用优秀的rplos package https github com ropensci rplos 这使得搜索公共科学图书馆 PLOS API 上托管的论文变得非常容易 我遇到了一个障碍 因为 API 本身似乎缺少一些信息 其

随机推荐

  • python中最常用的三大数据提取方法(1)----jsonpath

    1 jsonpath是python最常用提取数据的方法之一 jsonpath用于对json格式的数据进行提取 可以理解为对字典中value值的提取 用来解析多层嵌套的json数据 JsonPath 是一种信息抽取类库 是从JSON文档中抽取
  • 网络三定律:摩尔定律、吉尔德定律和迈特卡夫定律

    网络三定律 摩尔定律 吉尔德定律和迈特卡夫定律 拓展 1 网络论坛三大定律 2 影响世界的三大定律
  • 复杂交通环境感知

    作者 黄浴 编辑 计算机视觉深度学习和自动驾驶 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 后台回复 领域综述 获取自动驾驶感知定位融合近80篇综述论文 近年来 计算机
  • TIA博途中如何为IO设备分配设备名称

    TIA博途中如何为IO设备分配设备名称 Robot PLC 自动化学院 CSDN博客
  • React 引入ant-design开发指南

    使用create react app搭建react开发环 创建react脚手架 create react app react antd demo 进入react antd demo cd react antd demo 运行react an
  • MYSQL中索引与主键的区别

    MYSQL中索引与主键的区别 索引 索引好比是一本书的目录 可以快速的通过页码找到你需要的那一页 惟一地标识一行 主键 做为数据库表唯一行标识 作为一个可以被外键有效引用的对象 索引是一种特殊的文件 InnoDB数据表上的索引是表空间的一个
  • Unity中的重载和重写

    Unity中的重载和重写 一 重载 二 重写 三 重载和重写的区别 一 重载 重载 两个必须一个可以 参数名必须相同 参数列表必须不同 返回值类型可以不同 代码示例 using System Collections using System
  • Linux 磁盘命令工具 比df更好用

    对于分析磁盘使用情况 有两个非常好用的命令 du 和 df 简单来说 这两个命令的作用是这样的 du 命令 它是英文单词 disk usage 的简写 主要用于查看文件与目录占用多少磁盘空间 df 命令 它是英文单词 disk free 的
  • python爬取证券之星网站

    周末无聊 找点乐子 coding utf 8 import requests from bs4 import BeautifulSoup import random import time 抓取所需内容 user agent Mozilla
  • 安卓逆向学习-Crack01 学习记录

    Crack01 学习记录 要感谢京峰教育 资料下载 https download csdn net download m0 47210241 85053839 利用jadx gui打开 分析代码 package com zhy editVi
  • nodejs封装api

    安装了nodeJs 执行 安装淘宝镜像 npm install g cnpm registry https registry npm taobao org 安装 yarn 我使用这个 淘宝镜像总是莫名其妙各种bug npm install
  • aix安装 php,CNESA

    aix安装samba服务器可以使用两种方式安装 一种是使用rpm包进行安装 一种是使用源码编译安装 一 使用samba的rpm包进行安装 1 下载samba的rpm包 下载地址为http www bullfreeware com searc
  • C++笔记--线程间共享数据

    当线程在访问共享数据的时候 必须制定一些规矩 用来限定线程可访问的数据位 还有 一个线程更新了共享数据 需要对其他线程进行通知 从易用性的角度 同一进程中的多个线程进行数据共享 错误的共享数据使用是产生并发bug的一个主要原因 当涉及到共享
  • 为什么训练集用fit_transform()而测试集用transform()及sklearn.feature_extraction.text.CountVectorizer API详解

    真正讲明白的 https blog csdn net yyhhlancelot article details 85097656 API https scikit learn org stable modules generated skl
  • mysql+mybatis 批量插入与批量更新

    首先批量更新需要增加 数据库的链接必须加上但是数据库连接必须加上 allowMultiQueries true 属性 不然会报错 You have an error in your SQL syntax check the manual t
  • 各种源码下载地址(目前只有ffmpeg和nginx,libcurl,RapidJSON 文档)

    各种源码下载地址 目前只有ffmpeg和nginx libcurl RapidJSON 文档 ffmpeg源码下载地址 http ffmpeg org download html releases nginx源码下载地址 http hg n
  • H5监听移动端物理/浏览器返回键

    JavaScript没有监听物理返回键的API 所以只能使用 popstate 事件监听 工具类如下 export function handleBrowserGoBack back console log back pushHistory
  • 论文阅读——基于深度学习智能垃圾分类

    B Fu S Li J Wei Q Li Q Wang and J Tu A Novel Intelligent Garbage Classification System Based on Deep Learning and an Emb
  • su命令切换用户输入密码后,提示:鉴定故障

    在终端通过su命令切换用户输入密码后 提示 鉴定故障 这是因为在安装linux系统时未设置root用户密码造成的 需要重新设置密码后再切换用户 具体操作命令如下 设置root用户密码 sudo passwd root 切换用户 su
  • 三步搞定ABAP DOI操作EXCEL

    ABAP可以使用OLE与DOI两种方式实现操作EXCEL 使用OLE时 每个单元格的值和样式都需要写代码实现 特别是对于不规则的格式 代码量巨大 而DOI是从服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存 当然 也可以直接