SAP动态下载数据库表数据至EXCEL
因顾问需要,写了个动态下载数据库表数据的程序。
考虑到当文件过大时程序运行极其缓慢甚至DUMP,于是写成按输入的数字确定每个EXCEL存储数据条数,同时文件名除选择屏幕输入前缀外,再补上流水号
下图为选择屏幕
代码如下
*&---------------------------------------------------------------------*
*& Report ZIFR012
*&---------------------------------------------------------------------*
*& 最后修改人 时间 版本
*& 王浩辉(新建) 20220331 DSHK932478
*&---------------------------------------------------------------------*
REPORT zifr012.
DATA:go_datat TYPE REF TO data,
gt_fcat TYPE lvc_t_fcat,
gt_dntab TYPE STANDARD TABLE OF dntab,
gv_eor TYPE char1.
DATA: go_table2 TYPE REF TO cl_abap_tabledescr,
go_struc TYPE REF TO cl_abap_structdescr,
go_table TYPE REF TO cl_abap_tabledescr,
go_data TYPE REF TO data,
gt_comps_wa TYPE abap_compdescr_tab.
DATA:gv_json TYPE string,
gv_json2 TYPE string,
gv_line TYPE i,
gv_line2 TYPE i,
gv_line3 TYPE i,
gv_name TYPE char128.
FIELD-SYMBOLS:<fs_tab> TYPE STANDARD TABLE,
<fs_asy> TYPE STANDARD TABLE.
SELECTION-SCREEN BEGIN OF BLOCK b01.
PARAMETERS:p_tname TYPE tabname OBLIGATORY,
p_name TYPE text40,
p_line TYPE i,
p_linet TYPE i.
SELECTION-SCREEN END OF BLOCK b01.
START-OF-SELECTION.
CALL FUNCTION 'NAMETAB_GET'
EXPORTING
langu = sy-langu
tabname = p_tname
TABLES
nametab = gt_dntab
EXCEPTIONS
no_texts_found = 1.
IF sy-subrc NE 0.
MESSAGE '该表不存在于数据库!' TYPE 'S' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
*根据取出的字段目录生成参考字段目录
LOOP AT gt_dntab ASSIGNING FIELD-SYMBOL(<fs_table>).
APPEND VALUE #( fieldname = <fs_table>-fieldname
ref_table = p_tname
ref_field = <fs_table>-fieldname ) TO gt_fcat.
ENDLOOP.
*内表创建
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fcat
IMPORTING
ep_table = go_datat.
ASSIGN go_datat->* TO <fs_tab>.
"获取传入参数中内表 字段信息
go_table2 ?= cl_abap_typedescr=>describe_by_data( <fs_tab> ).
go_struc ?= go_table2->get_table_line_type( ).
"根据动态结构创建动态内表类型
CALL METHOD cl_abap_tabledescr=>create
EXPORTING
p_line_type = go_struc
RECEIVING
p_result = go_table.
CREATE DATA go_data TYPE HANDLE go_table.
ASSIGN go_data->* TO <fs_asy>.
SELECT * FROM (p_tname) INTO TABLE <fs_tab> UP TO p_linet ROWS..
DESCRIBE TABLE <fs_tab> LINES gv_line.
gv_line2 = p_line.
LOOP AT <fs_tab> ASSIGNING FIELD-SYMBOL(<fs_line>).
gv_line2 = gv_line2 - 1.
gv_line = gv_line - 1.
APPEND <fs_line> TO <fs_asy>.
IF gv_line2 GT 0 AND gv_line NE 0.
CONTINUE.
ELSE.
gv_line2 = p_line.
gv_line3 = gv_line3 + 1.
gv_name = |{ p_name }{ gv_line3 }.xls|.
"下载文件
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
codepage = '8400'
filename = gv_name
filetype = 'DAT'
TABLES
data_tab = <fs_asy>.
CLEAR <fs_asy>.
ENDIF.
ENDLOOP.
SAP动态下载数据库表数据至EXCEL相关推荐
- SAP动态下载数据库表字段及文本至EXCEL程序
闲来无事,写了个小程序给业务顾问用 功能有两个: 1.输入数据库表名称,点击下载模板,将数据库表字段和文本描述用OLE输出至EXCEL: 2.输入表名,将刚刚填充完数据的EXCEL模板选择,执行后将模 ...
- 使用Navicat 导出 MySQL 数据库表结构、表数据到Excel表格中
文章目录 1 摘要 2 数据导出 2.1 导出数据库表结构至Excel 2.2 导出数据库表结构为 SQL 2.3 导出数据库表数据至Excel 3 推荐参考资料 1 摘要 在编写项目设计文档的时候, ...
- phpexecl保存mysql_【PHP】将数据库表保存为Excel(PHPExcel)
今天有一个朋友问了我一个PHP下载数据库表单并保存为Excel的功能问题.下面我就将代码贴出来,大家可以看下.<?php public function exptable($name){ ven ...
- java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法
对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...
- 根据数据库表结构生成Excel表设计——源码设计说明
根据数据库表结构生成Excel表设计 在系统运维的过程中,很多时候大家都不喜欢改文档,修改了数据库字段后很少同步再更新表设计文档的,这就导致系统运行一段时间后,系统表设计与实际生产跑业务的设计出入很大 ...
- SAP Basis DEBUG改表数据权限角色设计
SAP Basis DEBUG改表数据权限角色设计 项目实践中,因种种原因不得不要通过debug才能解决一些特定的问题,所以就涉及到了debug权限角色的定义了. DEBUG的权限,无非就是: 1)数 ...
- python提取数据库数据_Python如何读取MySQL数据库表数据
本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 ...
- oracle写excel文件,ORACLE-将oracle数据库中数据写入excel文件
ORACLE-将oracle数据库中数据写入excel文件主要实现思路: 1.声明一个纪录,用来存储导出的数据: 2.使用游标取数据到纪录中: 3.使用utl_file将纪录中的数据写入excel文件 ...
- 根据数据库表结构生成Excel表设计——工具介绍
根据数据库表结构生成Excel表设计 最近又接手了一些老系统,库表设计啥的都没有,十来个系统,每个系统都几十张表,一个个的补感觉太难了,合计了一下感觉还是搞个工具比较好. 在系统运维的过程中,很多时候 ...
- 帆软报表列表_帆软报表(finereport)读取数据库表数据生成报表
帆软报表(finereport)读取数据库表数据生成报表 发布时间:2019-01-14 16:48, 浏览次数:856 , 标签: finereport 1.首先是安装帆软报表软件,微软的傻瓜式安装 ...
最新文章
- python爬虫跨域_AJAX跨域简单讲解【Python版】
- 光盘刻录只允许读取不能拷贝_便携易用,读写强劲:ORICO外置刻录光驱体验
- 扶凯:海量视频和用户时代的CDN
- SAP CRM IBASE structure的读取逻辑
- 【算法竞赛学习】金融风控之贷款违约预测-建模与调参
- 保存到数据库乱码mysql_Linux下MySQL保存进去数据为乱码的解决办法
- 【iCore4 双核心板_uC/OS-II】例程一:认识 uC/OS-II
- Java 线程详解(一)线程的基础
- php注册变量函数,PHP变量函数
- scala数据类型_Scala数据类型示例教程
- Jade模板引擎教程
- java运行期类型鉴定
- 微信开发者工具配置服务器信息,微信开发者中心如何配置
- angular : 自定义组件双向绑定 [(ngModel)]
- 前端性能优化指北-关于有些细节和思路
- 美拍里的视频要去哪里批量保存到电脑上
- Palindrome Pairs
- 如何保护SSL证书的私钥安全?
- 时间继电器HHS5-B使用方法
- 如何制作有星号的条形码
热门文章
- mysql在网页上显示乱码_计算机毕设答辩时网页报错怎么办
- c语言输入身高计算标准体重_体质测试 | 身高 / 体重测试评分标准及方法
- linux xfs文件恢复,Linux 文件恢复(XFS EXT4)
- java登录网站_如何使用Java登录网站
- python爬虫html、parser_利用python HTMLParser标准库实现一个简单的爬虫
- html js加载404_【第 245 期】2020 年,JS 令一个新人沮丧
- string类型输入一行字符串,带空格
- php编辑jquery弹出窗,jquery实现一个简单好用的弹出框
- Nginx系列(4):Web服务器分析(理论上)
- 【Iftop】实时监控流量工具