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 ...
随机推荐
- 使用Spring MVC统一异常处理
http://blog.csdn.net/ufo2910628/article/details/40399539
- 获得 LayoutInflater 实例的三种方式
在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...
- 精确计算TFS中新增以及更改的代码行数
<configuration> <configSections> <section name="LOCTargets" type="Cons ...
- python 字符串连接
字符串连接 方法1: 用字符串的join方法 a = ['a','b','c','d']content = ''content = ''.join(a)print content 方法2: 用字符串的 ...
- 获得View的真实高度
// 标题 RelativeLayout view = (RelativeLayout) getLayoutInflater().inflate( R.layout.webviewheader, nu ...
- JavaScript备忘录(1)——内置类型
JavaScript有一些内置类型,还有很多常用的内置的方法,本文稍作总结,以备查阅. 值类型 我的理解,值类型是分配在栈上的,而引用类型(当然也包括引用类型内部的值类型)是分配在堆上的.值类型是不可 ...
- 搭建WebRtc环境
0.前言 这次的需求,准备做的是一个类似与QQ视频一样的点对点视频聊天.这几天了解了一些知识后,决定使用HTML5新支持的WebRtc来作为视频通讯.客户端使用支持HTML5浏览器即可.服务器段需要提 ...
- zepto - scrollLeft
<div style="border:1px solid black;width:100px;height:130px;overflow:auto"> The long ...
- HTML5 is Canvas
var cvs = document.getElementById("cvs"); // // 获取上下文环境 var con = cvs.getContext("2d& ...
- 创意欣赏:20幅字体排版(Typography)素描
通常我们都只关注最终的作品,但其实幕后还有很多的过程,其中一个是素描.素描用来表达最初思想观念的原型.有时客户需要一个独特的品牌新LOGO或字体,这时先绘制在纸上是比较方便的,之后扫描到 Photos ...