ABAP Create Excel Download button at Selection Screen

ABAP Tips No Comments »

If you want to create Excel download button at selection screen, you can check below method.

TABLES: sscrfields.

INITIALIZATION.

PERFORM init_data.

PERFORM file_download.

*&———————————————————————*
*&      Form  INIT_DATA
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM INIT_DATA .

sscrfields-functxt_01 = text-f01.

ENDFORM.                    ” INIT_DATA
*&———————————————————————*
*&      Form  FILE_DOWNLOAD
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM FILE_DOWNLOAD .

DATA : t_dfname   TYPE rlgrap-filename VALUE ‘C:\’,
t_filename TYPE string.

* download file name
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
program_name  = sy-repid
dynpro_number = sy-dynnr
IMPORTING
file_name     = t_dfname.

* file name
t_filename = t_dfname.

IF t_filename IS INITIAL OR
t_filename = ‘C:\’.
MESSAGE ‘파일 경로를 입력해 주세요.’ TYPE ‘I’.
STOP.
ENDIF.

* download template
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename = t_filename
filetype = ‘DAT’
TABLES
data_tab = <gt_table>.

CALL FUNCTION ‘MS_EXCEL_OLE_STANDARD_DAT’
EXPORTING
file_name                 = t_dfname
TABLES
data_tab                  = <gt_table>
fieldnames                = it_head
EXCEPTIONS
file_not_exist            = 1
filename_expected         = 2
communication_error       = 3
ole_object_method_error   = 4
ole_object_property_error = 5
invalid_pivot_fields      = 6
download_problem          = 7
OTHERS                    = 8.

IF sy-subrc <> 0.
MESSAGE ‘Excel Open Error’ TYPE ‘I’.                   “#EC NOTEXT
STOP.
ENDIF.

ENDFORM.                    ” FILE_DOWNLOAD

SAP中本地文件的upload和download的方法

ABAP Tips No Comments »

无论是upload还是download,首先要确定文件的路径和名字。下面介绍几种使用文件选择框的方法:
-、使用FM F4_FILENAME
call function ‘F4_FILENAME’
importing
file_name = filename.
二、使用FM KD_GET_FILENAME_ON_F4
call function ‘KD_GET_FILENAME_ON_F4′
changing
file_name = p_pcfile.
三、使用FM TB_LIMIT_WS_FILENAME_GET
此FM可以指定默认选择路径,默认文件名,文件的打开目的(MODE,O为读,S为写)以及文件类型等,返回值FILENAME为文件的全路径。
四、使用FM WS_FILENAME_GET
功能同上。例子:
call function ‘WS_FILENAME_GET’
exporting
def_filename     = ‘invoice.txt’
def_path         = ‘c:\windata\’
mask             = ‘,*.TXT.’
mode             = ‘0′
title            = ‘Find the input file’
importing
filename         = t_filename
exceptions
inv_winsys       = 1
no_batch         = 2
selection_cancel = 3
selection_error  = 4
others           = 5.
五、使用Class cl_gui_frontend_services的静态方法file_open_dialog.
此方法功能强大,可以修饰文件选择框,指定默认选择路径,设置文件类型过滤,同时打开多个文件,返回用户操作等,例子:
call method cl_gui_frontend_services=>file_open_dialog
exporting
window_title     = ‘Select File’
default_extension = ‘xls’
file_filter     = cl_gui_frontend_services=>filetype_excel
multiselection   = ‘ ‘

changing
file_table       = it_tab
rc               = gd_subrc.

文件UPLOAD方法(转成内表):
一、最常用FM的是:GUI_UPLOAD
有同等作用的是CLASS cl_gui_frontend_services的静态方法gui_upload,文件可以按二进制或文本格式上传,数值和日期等依赖于用户的设置。
上传二进制文件时,内表通常定义为只含一个数据类型为X的field,如:
data:begin of itab occurs 0,
raw(255) type X,
end fo itab.
CALL FUNCTION ‘GUI_UPLOAD’
exporting
filetype =  ‘BIN’
filename = ‘C:\DOWNLOAD.BIN’
tables
data_tab = itab.
主要参数:输入有filename 要上传文件的完成路径, filetype 包括’BIN’ ‘DAT’ ‘ASC’等,codepage 以数字编号的字符集,如8400是简体中文
输出有data_tab 储存文件中数据的内表
二、对上传excel数据可用FM TEXT_CONVERT_XLS_TO_SAP
因为输出的I_TAB_CONVERTED_DATA类型为任意的standard table,所以此FM能方便的把excel中内容转化成格式相同的内表中。
field-symbols: <s_table> type standard table.
call function ‘TEXT_CONVERT_XLS_TO_SAP’
exporting
*         I_FIELD_SEPERATOR          =
*         I_LINE_HEADER              =
i_tab_raw_data             = raw_data
i_filename                 = excel_file
tables
i_tab_converted_data       = <s_table>
exceptions
conversion_failed          = 1
others                     = 2.
参数i_tab_raw_data虽为改办field,但好像没什么作用,传入一个空数据也可正常使用。
三、以另外途径上传excel文件:ALSM_EXCEL_TO_INTERNAL_TABLE
call function ‘ALSM_EXCEL_TO_INTERNAL_TABLE’
exporting
filename                = p_file
i_begin_col             = p_scol
i_begin_row             = p_srow
i_end_col               = p_ecol
i_end_row               = p_erow
tables
intern                  = i_intern
exceptions
inconsistent_parameters = 1
upload_ole              = 2
others                  = 3.
此FM可以限制从excel文件中第几行第几列开始,一次上传多少行多少列,但一次上传的最大行数为9999,是由接收数据的内表intern的定义来限制的。
所以如果要上传多于9999行的数据,要编码分批上传实现的。而intern不是直接与excel数据格式相符的内表,是系统定义好的,包含了行号、列号、数据值等,具体的
请参照系统定义,因此要想转成自己定义符合格式的内表,可用下面代码实现:
field-symbols : <$fs>.
data  exception type ref to cx_root.
sort i_intern by row col.
try.
loop at i_intern.
move i_intern-col to index.
assign component index of structure i_table to <$fs>.
move i_intern-value to <$fs>.
at end of row.
append i_table. “user defined internal table to store excel data
clear i_table.
endat.
endloop.
catch cx_root into exception.
message ‘Excel data format is wrong,please check’ type ‘E’.
endtry.

文件DOWNLOAD方法(内表转成文件):
一、最常用FM的是:GUI_UPLOAD
CLASS cl_gui_frontend_services的静态方法gui_upload与此功效相同。重要参数有BIN_FILESIZE FILENAME  FILETYPE APPEND CODEPAGE DATA_TAB等,正确传入这些参数即可满足大多常见的需求。
参数简述:BIN_FILESIZE  当要创建二进制的文件进,必须指定文件长度,但要下载成文本文件时,传入此参数会报 FILESIZE_NIT_ALLOWED 错误的。
FILENAME  要存放文件的完整路径,要保证路径有效并且如果文件存在的话没有被打开,否则会报错。
FILETYPE  ‘ASC’ ASCII格式文件,此参数会受到CODEPAGE, TRUNC_TRAILING_BLANKS, 和 TRUNC_TRAILING_BLANKS_EOL等参数的影响。
‘IBM’ ASCII文件,但只能包含IBM字符集的字符(CODEPAGE = ‘1103′),这种格式的文件通常用在软盘上。
‘DAT’ 具有单元格形式的文本文件,但直接用excel打开的话,文本内容会受单元格格式影响(如自动会去前导零等)。这种文件可直接再用gui_upload上传到SAP程序中。
‘DBF’ dBase格式,对于要用excel打开的数据,此种格式更能保持数据原型,不受excel单元格格式的影响。
‘WK1′ Lotus 1-2-3格式。
‘BIN’ 二进制格式文件,没有格式和字体集的限制。
APPEND ’X'以追加模式写文件,SPACE 当文件已存在时,以覆盖模式写文件。
CODEPAGE 指定写文件时用的字符集
DATA_TAB 内表,包含要下载成文件的数据

另注:当要上传在excel中存放的数据时,要注意sap系统中前导0的问题,解决方法可在excel文件中把0补全(调整单元格格式),或者在使用此类数据前,程序做alpha转换,
使用FM: CONVERSION_EXIT_ALPHA_INPUT, 相反作用的FM: CONVERSION_EXIT_ALPHA_OUTPUT

Via csdn

SAP Table Relations(PDF File Download)

SAP No Comments »

Maybe you have this SAP Table Relations,if you do not have this PDF  file,pls download it.

saptables

SAP Table Relations PDF file Download

SAP ABAP Program-Downloading to Excel

Program No Comments »

Below SAP ABAP program is for Downoading to Excel from SAP ABAP Program Tips.

Read the rest of this entry »

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in