ABAP->内表数据下载到CSV格式(原创转载请注明)
需求:将alv上面的数据计算到内表中区,然后通过自定义按钮进行下载到csv格式中



*"----------------------------------------------------------------------
*"*"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.
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.
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.
ABAP->内表数据下载到CSV格式(原创转载请注明)的更多相关文章
- ABAP内表数据和JSON格式互转
本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...
- ABAP 内表数据 与 Json串 相互转换
内表: A B C IMINGZHA HAIMINGZ AIMINGZH 1 2 3 4 5 6 Json串: [{a: "IMINGZHA", b: "HAIMIN ...
- ABAP内表数据做层次XML输出
*&---------------------------------------------------------------------**& Report Z_BARRY ...
- ABAP 内表 详解
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Abap 内表的语法
ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据 不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的 内表支持循环对每行数据进行操作,也支持整体操作 ...
- REUSE_ALV_GRID_DISPLAY显示ALV,设置可编辑时,与内表数据同步问题
使用function module: REUSE_ALV_GRID_DISPLAY显示ALV,并设置alv某些列可编辑,可是编辑后发现对应的内表数据并没有随之改变.记得需要设置一个参数的值,怎么想也记 ...
- Elasticsearch:如何把Elasticsearch中的数据导出为CSV格式的文件
本教程向您展示如何将数据从Elasticsearch导出到CSV文件. 想象一下,您想要在Excel中打开一些Elasticsearch中的数据,并根据这些数据创建数据透视表. 这只是一个用例,其中将 ...
- 数据可视化:CSV格式,JSON格式
下载CSV格式数据,进行可视化 csv.reader()创建一个与文件有关联的阅读器(reader)对象,reader处理文件中的第一行数据,并将每一项数据都存储在列表中 head_row = nex ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
随机推荐
- 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...
- Java IO 之 FileInputStream & FileOutputStream源码分析
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- 安卓开发笔记——深入Activity
在上一篇文章<安卓开发笔记——重识Activity >中,我们了解了Activity生命周期的执行顺序和一些基本的数据保存操作,但如果只知道这些是对于我们的开发需求来说是远远不够的,今天我 ...
- Win7上Git安装及配置过程
Win7上Git安装及配置过程 文档名称 Win7上Git安装及配置过程 创建时间 2012/8/20 修改时间 2012/8/20 创建人 Baifx 简介(收获) 1.在win7上安装msysgi ...
- React JS 基础知识17条
1. 基础实例 <!DOCTYPE html> <html> <head> <script src="../build/react.js" ...
- 蓝凌表单的表体调用Javascript
应用场景:像请假类表单会在从表输入开始时间.结束时间等字段 需求1:客户希望根据开始.结束时间自动计算小时数 解决方法: 1.主表单增加一行,设三个字段[开始时间合计].[结束时间合计].[开始结束时 ...
- 发布大幅重构优化的 TouchVG 1.0.2
发布大幅重构优化的 TouchVG 1.0.2,支持SVG.多模块扩展结构,欢迎评阅改进.提交pull request. https://github.com/rhcad/touchvg 关于 Tou ...
- selenium webdriver (python) 第三版
感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...
- Ember Charts – 基于 Ember & D3 的图表库
Ember Charts 是一个基于 Ember.js 和 D3.js 的图表库.它包括时间序列.柱状图.饼图.点图,很容易扩展和修改.这些图表组件代表图表交互性和演示的最佳实践,是高度可定制和可扩展 ...
- [Python]同是新手的我,分享一些经验
本来想分享一些知识,但是发现,写着写着,感觉分享一些经验,或许会少让大家走一些弯路,索性就把标题一改. 我不是教给大家些什么,我没有资格,我也是摸着石头过河,我只是本着分享的精神,在这里分享自己的东西 ...