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

news2024/11/22 15:38:32

点击蓝字 关注我们

前言

下载指定表内容到指定的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.coloradmin.cn/o/575506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows server 2016 ftp搭建详细教程

一.什么是FTP&#xff1f; FTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议&#xff0c;使得主机间可以共享文件。 接下来我给大家分享快速搭建FTP服务器的方法。 二.安装FTP服务器 1.进入服务器系统打开“服务器管理器”&#xff0c;点击“添加角色和功…

【JavaSE】Java基础语法(二十三):递归与数组的高级操作

文章目录 1. 递归1.1 递归1.2 递归求阶乘 2. 数组的高级操作2.1 二分查找2.2 冒泡排序2.3 快速排序2.4 Arrays (应用) 1. 递归 1.1 递归 递归的介绍 以编程的角度来看&#xff0c;递归指的是方法定义中调用方法本身的现象把一个复杂的问题层层转化为一个与原问题相似的规模较…

C语言2:说心里话

描述 分两次从控制台接收用户的两个输入&#xff1a;第一个内容为“人名”&#xff0c;第一个内容为“心里 话”。 然后将这两个输入内容组成如下句型并输出出来&#xff1a; 1.(人名&#xff09;&#xff0c;I want to say&#xff0c;(心里话 2. 输入输出示例: 输入&#xff…

MybatisPlus SpringCloud Docker RabbitMQ ElasticSearch、Redis高级技术,分布式事务的综合应用

一、配置SpringCloud中的网关 1. nginx搭建 搭建好了启动nginx.exe即可出静态页面图 1.网关搭建 server:port: 10010 spring:application:name: api-gatewaycloud:nacos:server-addr: localhost:8848gateway:routes: #用户服务的路由&#xff1a;什么样的请求&#xff0c;让网…

Emacs之定制化mode line(第一百零二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

第二期:链表经典例题(两数相加,删除链表倒数第N个节点,合并两个有序列表)

每道题后都有解析帮助你分析做题&#xff0c;答案在最下面&#xff0c;关注博主每天持续更新。 PS&#xff1a;每道题解题方法不唯一&#xff0c;欢迎讨论&#xff01; 1.两数相加 题目描述 给你两个非空的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式…

【Vue】二:Vue核心处理---模板语法

文章目录 1.模板语法---插值2.模板语法---指令语法2.1v-once2.2 v-bind2.3 v-model2.4 v-on 3.MVVM4.事件回调函数中的this 1.模板语法—插值 {{可以写什么}} &#xff08;1&#xff09;在data中声明的变量&#xff0c;函数 &#xff08;2&#xff09;常量 &#xff08;3&…

【蓝桥杯省赛真题22】python剩余空间问题 青少年组蓝桥杯比赛python编程省赛真题解析

目录 python剩余空间问题 一、题目要求 1、编程实现 二、解题思路

【JavaEE】锁策略、CAS和synchronized的优化

目录 1、常见的锁策略 1.1、乐观锁 vs 悲观锁 1.2、轻量级锁 vs 重量级锁 1.3、自旋锁 vs 挂起等待锁 1.4、互斥锁 vs 读写锁 1.4.1、读写锁的使用场景&#xff08;适用于"频繁 读&#xff0c;不频繁写"的场景&#xff09; 1.5、可重入锁 vs 不可重入锁 1.…

计算机专业学习的核心是什么?

既然是学习CS&#xff0c;那么在这里&#xff0c;我粗浅的把计算机编程领域的知识分为三个部分&#xff1a; 基础知识 特定领域知识 框架和开发技能 基础知识是指不管从事任何方向的软件工程师都应该掌握的&#xff0c;比如数据结构、算法、操作系统。 特定领域知识就是你…

Python花瓣雨

目录 前言 小海龟 花朵类 移动函数 画花朵 尾声 前言 来啦来啦来啦&#xff0c;小伙伴们快快来领取七彩花瓣雨吧&#xff01;&#xff01; 小海龟 老生常谈啦&#xff0c;在用python画樱花树前&#xff0c;我们先来了解一下turtle吧&#xff01; 小海龟(Turtle)是P…

Java学习路线(13)——Collection集合类:List集合与Set集合

一、集合类体系结构 二、部分Collection类型对象 Collection集合特点 List系列集合是有序、可重复、有索引。 ArrayList&#xff1a;有序、可重复、有索引LinkedList&#xff1a;有序、可重复、有索引 Set系列集合是无序、不重复、无索引。 HashSet&#xff1a;无序、不重复…

0202条件过滤-自动装配原理-springboot2.7.x系列

1前言 在springboot的自动装配过程中&#xff0c;执行完候选配置类导入后&#xff0c;会进行条件过滤。那么在讲解条件过滤前&#xff0c;我们先来了解springboot常用的条件注解&#xff0c;以及它们底层执行原理。 在Spring Boot中&#xff0c;条件&#xff08;Condition&am…

使用qemu模拟CXL.mem设备

CXL可以说是自PCIe技术诞生几十年以来最具变革性的新技术了。可以想象有了CXL以后机箱的边界将被彻底打破&#xff0c;服务器互相使用对方的内存&#xff0c;网卡&#xff0c;GPU 。整个机架甚至跨机架的超级资源池化成为可能&#xff0c;云计算也将进入一个新的时代。 当前In…

C++寄存器优化

在C里面有个有趣的现象&#xff0c;先看代码 #include<iostream> using namespace std; int main() {int const tmp 100; //定义常量tmp tmp不能修改int const* p &tmp; //不能通过指针修改指向的值 int* const q const_cast<int*>(p); //去常属性 可以通过…

【C++11】C++11新增语法特性 右值引用/移动语义/完美转发

C11 右值引用 1 右值引用1.1 左值 、 右值1.2 左值引用 VS 右值引用1.3 谈谈C11引入右值引用的意义1.4 左值引用和右值引用的一些细节问题 2 移动语义3 完美转发4 总结 1 右值引用 1.1 左值 、 右值 在C中所有的值不是左值就是右值。左值是指表达式结束后依然存在的持久化对象…

【JavaSE】Java基础语法(二十二):包装类

文章目录 1. 基本类型包装类2. Integer类3. 自动拆箱和自动装箱4. int和String类型的相互转换 1. 基本类型包装类 基本类型包装类的作用 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据常用的操作之一&#xff1a;用于基本数据类型与字符串之间的…

Goby 漏洞更新|锐捷网络 NBR路由器 webgl.data 信息泄露漏洞

漏洞名称&#xff1a;锐捷网络 NBR路由器 webgl.data 信息泄露漏洞 English Name&#xff1a;Ruijie NBR Router webgl.data information CVSS core: 7.5 影响资产数&#xff1a;204290 漏洞描述&#xff1a; 锐捷网络NBR700G路由器是锐捷网络股份有限公司的一款无线路由设…

口碑超好的挂耳式耳机盘点,这几款蓝牙耳机值得一看!

运动已成为人们业余生活中不可缺少的组成部分&#xff0c;徒步、夜跑、骑行等运动项目受到越来越多的人的喜欢&#xff0c;运动与耳机的搭配也是当代年轻人喜爱的行为方式&#xff0c;在颠簸的运动项目中耳机的稳固性和舒适性是非常主要的&#xff0c;现在新推出的开放式耳机深…

Ps:移除工具

移除工具 Remove Tool是一款简单易用、功能强大的工具&#xff0c;可快速、轻松地清去除图片中的干扰元素或不需要的区域。 快捷键&#xff1a;J 就如同使用画笔工具一样&#xff0c;只要在不需要的对象上涂抹&#xff08;描边&#xff09;即可将其去除。 移动工具基于人工智能…