SAP工具箱 批量下载指定表数据到EXCEL

news/2024/7/21 4:25:14 标签: excel, 数据库

点击蓝字 关注我们

前言

下载指定表内容到指定的EXCEL是一个比较简单的程序.但仔细考虑这个程序,还是可以在细节上找出一些关注点

  • 多表内容同时下载,每个表生成一个文件

  • 多表选择时,先查看表的记录数

  • 大表下载时,拆分下载

  • 拆分到不同的文件中

  • 拆分到同一个文件中的不同的工作表

  • 下载为CSV文件(基于性能考虑)

  • ……

本文主要介绍一个批量下载表内容的工具

缘起

基于项目结束备份关键配置表内容的需求,做过一个批量输出表内容到文件的程序.当时程序比较简陋,仅仅实现了功能,很多细节没有考虑. 后来碰到项目中提出需求:导出大表拆分到多个文件中. 遂起意把当初这个程序完善一下. 补充了很多细节.

程序名

ZBC_DOWN_MUL_TABC  下载指定表的内容到PC指定路径

文末有获取方式

思维导图

通过思维导图,可以大致理解程序的主要功能及模块

aa414a9d4792bac1f9f6f2e7831707d8.png

演示

如下是程序执行的步骤示例

默认显示表条目数,

条目数可以通过HANA表 "PUBLIC"."M_TABLES" 直接快速获取( 该表可以通过NATIVE SQL访问, 或者创建CDS视图访问)

但这个表存的是表中的所有记录数,没有区分集团.会有些歧义.

访问HANA数据库详见链接

无峰,公众号:ABAP 技巧与实战ABAP基础知识 怎么访问HANA数据库中的其它CATALOG的表

a6423fd47cd190cb960049748954080f.png

显示符合查询条件的所有被的相关属性

0f2ebb21c61229750a59c3207d27128b.png

点击 下载表内容到指定路径,显示和下载相关的选项

fb02ac9f0c352347b64d1b3141e56a36.png

点击其它方式,弹出其它方式的选项,同时限制拆分方式(只有ABAP2XLSX方式支持单表内容拆分到一个文件的多个工作表中)

acee7ce5b6c6be958426ef8b41470048.png

5bc5387e6cd8fa6f84d4cb9161ae459c.png

下载后的屏幕呈现 每个表统计下载的文件个数,成功文件个数. 如果下载报错,报错信息记录在消息中.

e75008500f378b479060df8215f66ae1.png

所有文件成功, 设置处理标记 S, 否则设置处理标记 E

da940129959b5cf78e2dd459885378d7.png

文件名样式

文件名命名规则

  • 整体下载  <表名>_<条目数>_<表描述>

  • 拆分下载  <表名>_<条目数>_<文件数>_<文件序号>_<文件中的条目数>_<表描述>

023fe89c08d2e0118e742ee89fa4839f.png

文件内容样式

  • 第一行: 字段名

  • 第二行: <类型>:<长度>:<字段描述>

  • 第三行后是表内容

对于 ABAP2XLSX下载的EXCEL . 使用间隔色显示不同的行. 

其它方式没有间隔色

bc785245448d4b6fd720611da406adbf.png

ABAP2XLSX 方式支持拆分到同一个文件的不同工作表中,样式如下

75f27964382f15334cc14cf0e77f3b84.png

三种方式分析

  • 生成csv文件

性能最好,文件不含样式(逗号分隔的文本文件). 大表只能拆分到不同文件中.

  • 生成xlsx文件(ABAP2XLSX)

性能较好,大表允许拆分到单一文件不同工作表, 但是可能会导致内存空间不足的DUMP .大表最好拆分到不同的文件. 

样式较好看: 间隔色显示,抬头反色显示等. 

  • 生成xlsx文件

(函数SAP_CONVERT_TO_XLS_FORMAT)

性能较差, 如果文件名已经存在,因为函数本身的BUG,会导致DUMP ,并打开临时文件. 影响多表的同时输出.

总结

生成EXCEL文件还有很多其它的方式,但是用了ABAP2XLSX后, 感觉这种方式更简单灵活,结合大数据量用CSV方式,基本可以解决所有数据下载的问题.

这个程序提供源代码分享, 需要的,可以进入公众号菜单获取,或者在公众号输入关键字 下载 获取. 

因为项目中对于引入的ABAP2XLSX做了一些增强调整. 所以该程序不确保安装了ABAP2XLSX的其它系统不会报错. 如果报错, 注释掉相关FORM中的代码 . 使用非ABAP2XLSX下载功能. 

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论


http://www.niftyadmin.cn/n/365205.html

相关文章

chatgpt赋能python:Python改定位:从脚本语言到全栈语言的转变

Python 改定位&#xff1a;从脚本语言到全栈语言的转变 Python 作为一门面向对象的高级编程语言&#xff0c;一直以来被认为是一种脚本语言。但随着时间的推移&#xff0c;Python 逐渐从科学计算和自动化脚本领域出发&#xff0c;逐步地向全栈领域发展。 Python 的脚本语言起…

【ROS】ROS2命令行工具详解

1、简介 ROS1中每个功能都使用ros开头的命令行工具&#xff0c;如&#xff1a;roscore、rosrun等 ROS2中只有一个命令行工具ros2&#xff0c;各个功能模块通过参数子命令来实现 ~$ ros2 -h 用法: ros2 [-h] [--use-python-default-buffering] <command> ……选项:-h, …

Unity中的InitializeOnLoad特性:深入解析与实践

Unity中的InitializeOnLoad特性&#xff1a;深入解析与实践 在Unity开发过程中&#xff0c;我们经常需要在编辑器启动时或脚本重新编译后执行一些操作&#xff0c;例如初始化数据、注册事件等。这时&#xff0c;我们可以使用InitializeOnLoad特性来实现这一需求。本文将详细介…

[数据集][目标检测]目标检测数据集绝缘子缺陷防震锤1688张5类别VOC格式

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;1688 标注数量(xml文件个数)&#xff1a;1688 标注类别数&#xff1a;5 标注类别名称:["flashover",&…

Makefile基础教学(include的使用方法)

文章目录 前言一、include在makefile中的概念介绍二、include使用示例三、include中需要注意的一些操作1. 在include前加-选项2. include触发规则创建了文件会发生什么3. include包含的文件夹存在 总结 前言 本篇文章将讲解include的使用方法&#xff0c;在C语言中使用include…

Linux中_Ubuntu上_安装Windows软件_微信_企业微信_等

文章目录 Ubuntu 20.04 上安装微信&#xff1a;三种方法&#xff1a;1、先安装 wein 5.0 或 5.1 版本&#xff0c;再下载微信的windows安装包&#xff1a;2、先安装 优麒麟版本的 wein &#xff0c;再下载微信的 deb 安装包&#xff1a;3、直接安装网上的 deb 安装包&#xff0…

算法第四版 Algorithms Part 1动态联通性

联通性检测用途 照片中的像素网络中的计算机社交网络中的朋友计算机芯片中的电路元器件数学集合中的元素Fortan程序中的变量复合体系中的金属位 假定已连接等价于 反身的: p与p本身是连接的.对称的: 如果p连接到q,那么q也链接到p传递的: 如果p连接到q并且q连接到r,那么p连接…

【Netty】Netty 编码器(十三)

文章目录 前言一、MessageToByteEncoder 抽象类二、MessageToMessageEncoder 抽象类总结 前言 回顾Netty系列文章&#xff1a; Netty 概述&#xff08;一&#xff09;Netty 架构设计&#xff08;二&#xff09;Netty Channel 概述&#xff08;三&#xff09;Netty ChannelHan…