1 Introduction
In the sap I need upload data to sap. Now I know two function. One is TXT format and
The other is excel format. GUI_UPLOAD is TXT formart. The other function is ALSM_EXCEL_TO_INTERNAL_TABLE.we can use EXCEL format data.
The differen is field length. The excel function is less lenth 50. The txt function is not limited.
2 usage
GUI_UPLOAD
data: filename type string.
types:begin of ty_up_data,
zslbh like ztfi083b-zslbh , " 实例号
zlcbh like ztfi083b-zlcbh , " 订单编号
vkbur like ztfi083b-vkbur , " 办事处编码
bscmc like ztfi083b-bscmc , " 办事处名称
skunnr like ztfi083b-skunnr , " 受达方
zcpxh like ztfi083b-zcpxh , " 产品型号
cpmc like ztfi083b-cpmc , " 产品名称
cpfx like ztfi083b-cpfx , " 方向
cpys like ztfi083b-cpys , " 颜色
cpgg like ztfi083b-cpgg , " 要货规格
cpsm type string , " 整体说明
zgynm like ztfi083b-zgynm , " 供应商工厂名称
wgynm like ztfi083b-wgynm , " 供应商(卫俗)
bmatnr like ztfi083b-bmatnr , " 新产品编码
bmaktx like ztfi083b-bmaktx , " 新产品名称
menge like ztfi083b-menge , " 订货数量
bkbetr like ztfi083b-bkbetr , " 成本
datbi like ztfi083b-datbi , " 有效期
datna like ztfi083b-datna , " 导入日期
xblnr like ztfi083b-xblnr , " 备注
end of ty_up_data.
data: lw_up_data type ty_up_data,
lt_up_data type standard table of ty_up_data .
at selection-screen on value-request for p_file.
perform frm_getpath changing p_file.
filename = p_file.
call function 'GUI_UPLOAD'
exporting
filename = filename
filetype = 'DAT'
has_field_separator = '#'
tables
data_tab = lt_up_data[]
exceptions
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
others = 17.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
form frm_getpath changing p_file.
*限制文件格式为xls
call function ‘F4_FILENAME’
exporting
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ’ ’
importing
file_name = p_file.
endform.
ALSM_EXCEL_TO_INTERNAL_TABLE
data: filename type rlgrap-filename.
types:begin of ty_up_data,
zslbh like ztfi083b-zslbh , " 实例号
zlcbh like ztfi083b-zlcbh , " 订单编号
vkbur like ztfi083b-vkbur , " 办事处编码
bscmc like ztfi083b-bscmc , " 办事处名称
skunnr like ztfi083b-skunnr , " 受达方
zcpxh like ztfi083b-zcpxh , " 产品型号
cpmc like ztfi083b-cpmc , " 产品名称
cpfx like ztfi083b-cpfx , " 方向
cpys like ztfi083b-cpys , " 颜色
cpgg like ztfi083b-cpgg , " 要货规格
cpsm type string , " 整体说明
zgynm like ztfi083b-zgynm , " 供应商工厂名称
wgynm like ztfi083b-wgynm , " 供应商(卫俗)
bmatnr like ztfi083b-bmatnr , " 新产品编码
bmaktx like ztfi083b-bmaktx , " 新产品名称
menge like ztfi083b-menge , " 订货数量
bkbetr like ztfi083b-bkbetr , " 成本
datbi like ztfi083b-datbi , " 有效期
datna like ztfi083b-datna , " 导入日期
xblnr like ztfi083b-xblnr , " 备注
end of ty_up_data.
data: lw_up_data type ty_up_data,
lt_up_data type standard table of ty_up_data .
data: lt_tab type standard table of zxlsmex_tabline,
ls_tab type zxlsmex_tabline.
field-symbols: <cell> type any.
call function 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
exporting
filename = filename
i_begin_col = 1
i_begin_row = 2
i_end_col = 20
i_end_row = 65536
tables
intern = lt_tab
exceptions
inconsistent_parameters = 1
upload_ole = 2
others = 3.
if sy-subrc <> 0.
if sy-msgty is initial.
message '数据导入,消息类型为空' type 'E'.
else.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endif.
sort lt_tab by row.
loop at lt_tab into ls_tab.
assign component ls_tab-col of structure lw_up_data to <cell>.
<cell> = ls_tab-value.
at end of row.
move-corresponding ls_tab to lw_up_data.
append lw_up_data to lt_up_data.
clear lw_up_data.
endat.
endloop.
form frm_getpath changing p_file.
*限制文件格式为xls
call function 'WS_FILENAME_GET'
exporting
mask = ',EXCEL FILE,*.XLS;*.XLSX;'
mode = 'O' "S为保存,O为打开
importing
filename = filename
exceptions
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
others = 5.
endform.
3 Summary
1.The format file is used by gui_upload.
2. In the field I don’t use blank about ALSM_EXCEL_TO_INTERNAL_TABLE