需求:将alv上面的数据计算到内表中区,然后通过自定义按钮进行下载到csv格式中

附加:现在基本不用csv导出了,但是有些变态需求强行要求,也只好研究出来了,excel与txt导出很简单,那就不多说了。
步骤:
1.copy系统标准的SAP_CONVERT_TO_CSV_FORMAT函数,此函数已经使用不了,命名为ZSAP_CONVERT_TO_CSV_FORMAT,然后进行修改几处;
a.系统标准的TRUXS_T_TEXT_DATA不存在,对于本机gui来说
ZCSV_T为自己修改的类型,用于接收后面函数table里面的值,记得用char4096.
FUNCTION ZSAP_CONVERT_TO_CSV_FORMAT.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(I_FIELD_SEPERATOR) TYPE  CHAR01 DEFAULT ';'
*"     VALUE(I_LINE_HEADER) TYPE  CHAR01 OPTIONAL
*"     VALUE(I_FILENAME) LIKE  RLGRAP-FILENAME OPTIONAL
*"     VALUE(I_APPL_KEEP) TYPE  CHAR01 DEFAULT SPACE
*"  TABLES
*"      I_TAB_SAP_DATA TYPE  STANDARD TABLE
*"  CHANGING
*"     VALUE(I_TAB_CONVERTED_DATA) TYPE  ZCSV_T OPTIONAL
*"  EXCEPTIONS
*"      CONVERSION_FAILED
*"----------------------------------------------------------------------
  CONSTANTS: C_FIELD_SEPARATOR VALUE ','.

DATA:
        L_START_STRING LIKE SY-FDPOS,
        L_END_STRING LIKE SY-FDPOS,
        L_LEN_STRING(6) TYPE N,
        L_EOL_STRING LIKE SY-FDPOS,
        L_START_TARGET_STRING LIKE SY-FDPOS,
        L_END_TARGET_STRING LIKE SY-FDPOS,
        L_LEN_TARGET_STRING(6) TYPE N,
        L_EOL_TARGET_STRING LIKE SY-FDPOS,
        L_CONV_DATA TYPE LINE OF ZCSV_T,
        L_CSV_DATA TYPE LINE OF ZCSV_T.

CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
    EXPORTING
      I_FIELD_SEPERATOR    = C_FIELD_SEPARATOR
      I_LINE_HEADER        = I_LINE_HEADER
      I_FILENAME           = I_FILENAME
    TABLES
      I_TAB_SAP_DATA       = I_TAB_SAP_DATA
    CHANGING
      I_TAB_CONVERTED_DATA = I_TAB_CONVERTED_DATA
    EXCEPTIONS
      CONVERSION_FAILED    = 4.

CHECK SY-SUBRC <> 0.
*  if sy-subrc <> c_rc0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4
          RAISING CONVERSION_FAILED.
*  endif.

DESCRIBE FIELD L_CSV_DATA LENGTH L_LEN_TARGET_STRING
                                     in character mode.
  DESCRIBE FIELD L_CONV_DATA LENGTH L_EOL_STRING
                                     in character mode.
  LOOP AT I_TAB_CONVERTED_DATA INTO L_CONV_DATA.
    L_START_STRING = 1.
    CLEAR: L_CSV_DATA,
           L_START_TARGET_STRING,
           L_END_TARGET_STRING.
    DO.
      SEARCH L_CONV_DATA FOR C_FIELD_SEPARATOR STARTING AT
                                                  L_START_STRING
                                                  ENDING AT
                                                  L_EOL_STRING.
      IF SY-SUBRC <> 0.
        EXIT.
      ENDIF.
      IF SY-SUBRC = 0.
        L_END_STRING = L_START_STRING + SY-FDPOS.
        L_LEN_STRING = L_END_STRING - L_START_STRING + 1.
        L_START_STRING = L_START_STRING - 1.
        L_END_TARGET_STRING = L_END_TARGET_STRING + L_LEN_STRING + 4.
        IF L_END_TARGET_STRING < L_LEN_TARGET_STRING.
          L_CSV_DATA+L_START_TARGET_STRING(3) = '"""'.
          L_START_TARGET_STRING = L_START_TARGET_STRING + 3.
          L_CSV_DATA+L_START_TARGET_STRING(L_LEN_STRING) =
                                      L_CONV_DATA+L_START_STRING.
          L_START_TARGET_STRING = L_START_TARGET_STRING + L_LEN_STRING
                                                        - 1.
          L_CSV_DATA+L_START_TARGET_STRING(1) = '"'.
          L_START_TARGET_STRING = L_START_TARGET_STRING + 1.
          L_CSV_DATA+L_START_TARGET_STRING(1) = ';'.
          L_END_TARGET_STRING = STRLEN( L_CSV_DATA ).
          L_START_TARGET_STRING = L_END_TARGET_STRING.
          L_START_STRING = L_END_STRING + 1.
        ELSE.
          EXIT.
        ENDIF.
      ENDIF.
    ENDDO.
    MODIFY I_TAB_CONVERTED_DATA FROM L_CSV_DATA.
  ENDLOOP.
ENDFUNCTION.

 
2.下面为调用类的方法,为弹出框选择路径、将内表数据通过copy的函数用逗号分隔封装到另一内表中和下载csv文件。
CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      default_extension    = 'CSV'
      default_file_name    = '*'
      file_filter          = 'CSV文件(*.CSV)'
    CHANGING
      filename             = w_filename
      path                 = w_file_path
      fullpath             = w_full_path
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.

IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


  CLEAR it_tabout.
  CALL FUNCTION 'ZSAP_CONVERT_TO_CSV_FORMAT'
*  EXPORTING
*    I_FIELD_SEPERATOR    = ';'
*   I_LINE_HEADER        =
*   I_FILENAME           =
*   I_APPL_KEEP          = ' '
    TABLES
      i_tab_sap_data       = lt_worldship
    CHANGING
      i_tab_converted_data = it_tabout
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.
  IF sy-subrc = 0.
  ENDIF.

CALL METHOD cl_gui_frontend_services=>gui_download
              EXPORTING
*                 bin_filesize            =
                filename                = w_filename
**                filetype                = 'DAT'
*                 codepage                = '8404'
*                 ignore_cerr             = ABAP_TRUE
*                 replacement             = '#'
              CHANGING
                data_tab                = it_tabout
              EXCEPTIONS
                file_write_error        = 1
                no_batch                = 2
                gui_refuse_filetransfer = 3
                invalid_type            = 4
                no_authority            = 5
                unknown_error           = 6
                header_not_allowed      = 7
                separator_not_allowed   = 8
                filesize_not_allowed    = 9
                header_too_long         = 10
                dp_error_create         = 11
                dp_error_send           = 12
                dp_error_write          = 13
                unknown_dp_error        = 14
                access_denied           = 15
                dp_out_of_memory        = 16
                disk_full               = 17
                dp_timeout              = 18
                file_not_found          = 19
                dataprovider_exception  = 20
                control_flush_error     = 21
                not_supported_by_gui    = 22
                error_no_gui            = 23
                OTHERS                  = 24.

IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

转载于:https://www.cnblogs.com/sap-vip/p/5591127.html

ABAP-内表数据下载到CSV格式(原创转载请注明)相关推荐

  1. 【转】ABAP内表数据和JSON格式互转

    本程序演示ABAP内表数据如何转为JSON格式, 以及JSON数据如何放入内表. REPORT ZTEST005. DATA : JSON_SER TYPE REF TO CL_TREX_JSON_S ...

  2. ABAP内表数据和JSON格式互转

    本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...

  3. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

  4. SAP ABAP 内表无数据、数据损坏、数据恢复办法。

    在练习数据库表的时候发现查询出来的表没有数据,解决办法如下: 步骤一:T-CODE:SE38 步骤二:执行函数SAPBC_DATA_GENERATOR,直接执行: 步骤三:执行后出现下面的界面,直接执 ...

  5. 上传EXCEL到ABAP内表

    上传EXCEL到ABAP内表 将EXCEL文件上载到内表两种方式: 一.直接将excel数据读入具有相同结构的内表 二.将excel数据读入一个行号,列号,值组成的内表,然后通过指针将数据读到与exc ...

  6. SAP-ABAP 内表数据转换为十六进制字符串并利用服务器转储

    函数:SOTR_SERV_TABLE_TO_STRING SCMS_STRING_TO_XSTRING 类 IF_HTTP_RESPONSE 内表数据转换为16进制存储需要先把表体内容转换成一定的格式 ...

  7. abap内表的操作汇总

    abap内表是abap开发中最常用的工具之一 这里总结一个常用的一些操作,以后可以直接复制使用 1,定义 参考字段定义 DATA:BEGIN OF i_list OCCURS 0 ,   matnr ...

  8. Neo4j 数据导出为 CSV 格式

    主要介绍将 Neo4j 数据库中数据全部导入到 MySQL 数据库中,将 Neo4j 数据导出为 CSV 格式数据,然后再将 CSV 格式数据导入到 MySQL 中. 这里介绍前半部分,即 Neo4j ...

  9. SAP abap内表分类与增删改查操作

    SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...

  10. Function ALV可编辑列修改数据后与与内表数据同步问题

    当我们使用FunctionALV,即"REUSE_ALV_GRID_DISPLAY"显示ALV时,会遇到设置某些列为可编辑状态的情况,可是编辑后发现对应的内表数据并没有随之改变,那 ...

最新文章

  1. BlendMode颜色混合模式枚举值
  2. C#类方法中使用数组参数params关键字的作用
  3. 深度学习与计算机视觉系列(1)_基础介绍
  4. Bootstrap4+MySQL前后端综合实训-Day09-AM【项目功能展示视频、小组汇报PPT、项目介绍】
  5. java-逻辑运算符
  6. 【转】LAMP网站架构方案分析【精辟】
  7. 前端学习(2240):构造Vue的的利器-脚手架vue-cli3
  8. java在创建对象时必须_Java中5种创建对象的方式
  9. 2021年Q2母婴行业季度洞察报告
  10. C++代码审查工具Cppcheck和TscanCode
  11. JavaScript对象的键值对
  12. idea在plugins中搜不到插件MyBatisX
  13. Webstrom取消下划线
  14. 列表元组和字典课后练习
  15. 哈哈日语 五十音图之あ段音
  16. C语言链接mysql数据库实现简易的学生信息增删改查
  17. startuml动态模型工具_StarUML建模工具
  18. ElasticSearch 总结
  19. 网页关键字自动高亮,网页高亮批注,保存网页为单文件--浏览器拓展
  20. oracle数据库表单,Oracle常用数据库系统表单以及SQL的整理

热门文章

  1. spring @Autowired注入map
  2. selenium webdriver中的常用鼠标操作
  3. linux之awk命令获取最后一列
  4. 第一模块:开发基础 第1章 练习及作业
  5. 使用NEWSEQUENTIALID解决GUID聚集索引问题
  6. linux下的screen工具配置(针对 string escape)
  7. [转]ISO镜像工具PowerISO和UltraISO制作ISO光盘镜像教程
  8. 【转】Apache+php+mysql在windows下的安装与配置图解(最新版)
  9. [转]将c#中datagridview中的数据导出到excel中
  10. 曲演杂坛--SQLCMD下执行命令失败但没有任何错误提示的坑