因顾问需要,写了个动态下载数据库表数据的程序。

考虑到当文件过大时程序运行极其缓慢甚至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相关推荐

  1. SAP动态下载数据库表字段及文本至EXCEL程序

    闲来无事,写了个小程序给业务顾问用 功能有两个: 1.输入数据库表名称,点击下载模板,将数据库表字段和文本描述用OLE输出至EXCEL: 2.输入表名,将刚刚填充完数据的EXCEL模板选择,执行后将模 ...

  2. 使用Navicat 导出 MySQL 数据库表结构、表数据到Excel表格中

    文章目录 1 摘要 2 数据导出 2.1 导出数据库表结构至Excel 2.2 导出数据库表结构为 SQL 2.3 导出数据库表数据至Excel 3 推荐参考资料 1 摘要 在编写项目设计文档的时候, ...

  3. phpexecl保存mysql_【PHP】将数据库表保存为Excel(PHPExcel)

    今天有一个朋友问了我一个PHP下载数据库表单并保存为Excel的功能问题.下面我就将代码贴出来,大家可以看下.<?php public function exptable($name){ ven ...

  4. java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法

    对于我们来说,java导出数据成excel或其他数据文件,或者下载资源是开发中的家常便饭, 但是在导出的时候,如果点击一个按钮导出几百万条数据,如果不作处理的话很可能会出现一系列的问题. 这里介绍打包 ...

  5. 根据数据库表结构生成Excel表设计——源码设计说明

    根据数据库表结构生成Excel表设计 在系统运维的过程中,很多时候大家都不喜欢改文档,修改了数据库字段后很少同步再更新表设计文档的,这就导致系统运行一段时间后,系统表设计与实际生产跑业务的设计出入很大 ...

  6. SAP Basis DEBUG改表数据权限角色设计

    SAP Basis DEBUG改表数据权限角色设计 项目实践中,因种种原因不得不要通过debug才能解决一些特定的问题,所以就涉及到了debug权限角色的定义了. DEBUG的权限,无非就是: 1)数 ...

  7. python提取数据库数据_Python如何读取MySQL数据库表数据

    本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 ...

  8. oracle写excel文件,ORACLE-将oracle数据库中数据写入excel文件

    ORACLE-将oracle数据库中数据写入excel文件主要实现思路: 1.声明一个纪录,用来存储导出的数据: 2.使用游标取数据到纪录中: 3.使用utl_file将纪录中的数据写入excel文件 ...

  9. 根据数据库表结构生成Excel表设计——工具介绍

    根据数据库表结构生成Excel表设计 最近又接手了一些老系统,库表设计啥的都没有,十来个系统,每个系统都几十张表,一个个的补感觉太难了,合计了一下感觉还是搞个工具比较好. 在系统运维的过程中,很多时候 ...

  10. 帆软报表列表_帆软报表(finereport)读取数据库表数据生成报表

    帆软报表(finereport)读取数据库表数据生成报表 发布时间:2019-01-14 16:48, 浏览次数:856 , 标签: finereport 1.首先是安装帆软报表软件,微软的傻瓜式安装 ...

最新文章

  1. python爬虫跨域_AJAX跨域简单讲解【Python版】
  2. 光盘刻录只允许读取不能拷贝_便携易用,读写强劲:ORICO外置刻录光驱体验
  3. 扶凯:海量视频和用户时代的CDN
  4. SAP CRM IBASE structure的读取逻辑
  5. 【算法竞赛学习】金融风控之贷款违约预测-建模与调参
  6. 保存到数据库乱码mysql_Linux下MySQL保存进去数据为乱码的解决办法
  7. 【iCore4 双核心板_uC/OS-II】例程一:认识 uC/OS-II
  8. Java 线程详解(一)线程的基础
  9. php注册变量函数,PHP变量函数
  10. scala数据类型_Scala数据类型示例教程
  11. Jade模板引擎教程
  12. java运行期类型鉴定
  13. 微信开发者工具配置服务器信息,微信开发者中心如何配置
  14. angular : 自定义组件双向绑定 [(ngModel)]
  15. 前端性能优化指北-关于有些细节和思路
  16. 美拍里的视频要去哪里批量保存到电脑上
  17. Palindrome Pairs
  18. 如何保护SSL证书的私钥安全?
  19. 时间继电器HHS5-B使用方法
  20. 如何制作有星号的条形码

热门文章

  1. mysql在网页上显示乱码_计算机毕设答辩时网页报错怎么办
  2. c语言输入身高计算标准体重_体质测试 | 身高 / 体重测试评分标准及方法
  3. linux xfs文件恢复,Linux 文件恢复(XFS EXT4)
  4. java登录网站_如何使用Java登录网站
  5. python爬虫html、parser_利用python HTMLParser标准库实现一个简单的爬虫
  6. html js加载404_【第 245 期】2020 年,JS 令一个新人沮丧
  7. string类型输入一行字符串,带空格
  8. php编辑jquery弹出窗,jquery实现一个简单好用的弹出框
  9. Nginx系列(4):Web服务器分析(理论上)
  10. 【Iftop】实时监控流量工具