ABAP中添加模板导入和下载功能
模板导入和下载功能
smw0 模板导入
事务码 smw0。
具体步骤:
1.键入事务码smw0后,选择“WebRFC应用程序的二进制数据”选项,并点击选择屏幕的查找按钮。
2.点击选择屏幕的查找按钮后,在第二屏上键入相应的包,并点击执行。(此时也可不填写包名,直接点击执行,在导入时会要求选择导入的包)
3.第三屏上点击创建按钮,在弹出的对话框中添加对象名和对象描述,点击导入。注意:要记住这个对象名,在程序中写下载功能的代码时需要用到这个对象名
4.点击导入按钮后在跳出的窗口中选择双击要导入的文件,会跳出创建对象目录条目的窗口,键入包名,保存即可。
模板下载
上一篇文章已经介绍了如何在选择屏幕添加按钮,我们可以使用此按钮来响应模板下载功能,在此只展示响应模块的模板下载代码。
DATA: ls_wwwdatatab LIKE wwwdatatab,
lt_mime LIKE w3mime OCCURS 10,
lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
window_title TYPE string,
default_file_name TYPE string.
DATA: lv_destination TYPE rlgrap-filename,
lv_subrc TYPE sy-subrc.
CLEAR: ls_wwwdatatab,lt_mime[],lv_filename,lv_path,lv_fullpath,window_title,default_file_name.
ls_wwwdatatab-relid = 'MI'. "IMPORT/EXPORT 数据表中的区域
ls_wwwdatatab-objid = 'ztest_imp'. "这里写入刚刚让记住的模板对象名
ls_wwwdatatab-text = '测试'. "WWWDATA 对象的短文本
window_title = '下载导入模板'.
default_file_name = '测试'.
CALL FUNCTION 'WWWDATA_IMPORT' "#EC *
EXPORTING
key = ls_wwwdatatab
TABLES
mime = lt_mime
EXCEPTIONS
wrong_object_type = 1
import_error = 2
OTHERS = 3.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = window_title
default_extension = 'xlsx'
default_file_name = default_file_name
* file_filter = 'EXCEL'
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
STOP.
ENDIF.
IF lv_fullpath IS NOT INITIAL.
lv_destination = lv_fullpath.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_wwwdatatab
destination = lv_destination
IMPORTING
rc = lv_subrc.
IF lv_subrc <> 0.
MESSAGE '下载失败' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
EXCEL上载功能实现
模板下载下来,写入数据之后,要将excel文件上载到程序里面,下面就来实现:
1.选择屏幕声明导入模板字段
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_path TYPE rlgrap-filename MEMORY ID mr1.
SELECTION-SCREEN END OF BLOCK bk1.
2.选择好需要上载的文件后,点击上载按钮的响应代码
*声明变量
DATA:lv_index TYPE i.
FIELD-SYMBOLS: <f01>.
*内表声明
DATA:lt_itab TYPE zalsmex_tabline OCCURS 0 WITH HEADER LINE.
REFRESH gt_upload.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = '数据上载中,请稍后'.
CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_path
i_begin_col = 1
i_begin_row = 2
i_end_col = 3
i_end_row = 10000 "65525
TABLES
intern = lt_itab
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CHECK NOT lt_itab[] IS INITIAL.
LOOP AT lt_itab.
MOVE:lt_itab-col TO lv_index.
ASSIGN COMPONENT lv_index OF STRUCTURE gs_upload TO <f01>.
MOVE:lt_itab-value TO <f01>.
AT END OF row.
APPEND gs_upload TO gt_upload.
CLEAR gs_upload.
ENDAT.
ENDLOOP.
ENDIF.
IF gt_upload[] IS INITIAL.
MESSAGE '无数据,请检查上载文件' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
post SAP-Garson
原文链接:https://blog.csdn.net/tao273849019/article/details/109611483文章来自于网络,如果侵犯了您的权益,请联系站长删除!