SWM0学习笔记 模板文件的上传和下载
来源:互联网 发布:cmd打开端口的命令 编辑:程序博客网 时间:2024/05/01 05:46
SWM0上传模板文件到服务器和使用程序下载服务器上的模板文件代码
凭自己所学,记录下来的,如果有不对的地方请多多谅解和指导哈,各位大牛们。
1. 输入事务smw0码
选择下面的二进制,回车
2.填入包得名称,就是开发类,不写为本地保存,点执行按钮
3.点新建按钮,输入模板的名称和描述
点导入按钮,然后选择你要导入的文件模板(模板是自己定义好了的)
4.退出,再次进入到第3步的时候,就可以看到你新建的模板了
如果你的模板改了,想要覆盖他的话。选择他点如下按钮(导入按钮)
Se11到wwwdata数据库表里查看下,你的模板是否存在(检查下而已,呵呵)
好了,这里就可以把模板文件上传到服务器了!!
下面,我们写段代码,来把模板文件下载到本地来。
p_objid模板文件的名称 zhanghz.xls
fp_dest 文件的路径
FORM download_excel_template USING p_objid LIKE wwwdatatab-objid fp_dest LIKE sapb-sappfad.
DATA: lo_objdata LIKE wwwdatatab,
ls_errtxt(40) TYPE c,
li_rc LIKE sy-subrc,
ls_destination LIKE rlgrap-filename.
SELECT SINGLE relid objid
FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata
WHERE srtf2 = 0 AND relid = 'MI' AND objid = p_objid.
********检查表wwwdata中是否存在所指定的模板文件
IF sy-subrc NE 0 OR lo_objdata-objid EQ space."如果不存在,则给出错误提示
CONCATENATE '模板文件' p_objid '不存在' INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'I'.
ENDIF.
ls_destination = fp_dest. "保存路径
*******如果存在,调用DOWNLOAD_WEB_OBJECT 函数下载模板到路径下,从服务器上下载模板文件
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = li_rc.
IF li_rc NE 0.
CONCATENATE '模板文件:' p_objid '下载失败' INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'E'.
ELSE.
CONCATENATE '模板文件下载成功' p_objid INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'S'.
ENDIF.
ENDFORM. "download_excel_template
下面贴出我自己写的一个代码模板,留着以后自己用到的时候直接copy
*&---------------------------------------------------------------------*
*& Report ZHR0014
*&
*&---------------------------------------------------------------------*
*&create by zhanghz 2011.10.14
*&2003 直落转班导入报表
*&下载模板文件的另一形式
*&此程序可作为smw0上传模板文件的时候,下载服务器模板文件的程序
*&---------------------------------------------------------------------*
REPORT zhr0014.
********业务数据的定义------------
TABLES: t100.
DATA: BEGIN OF i_list OCCURS 0,
pernr LIKE pa0002-pernr,"人员编号
begda LIKE pa2003-begda,"开始日期
endda LIKE pa2003-endda,"结束日期
tprog LIKE pa2003-tprog,"日工作计划
END OF i_list.
DATA: bdcdata1 LIKE bdcdata OCCURS 0 WITH HEADER LINE,"定义BDC内表
msgtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,"定义消息内表
l_mstring(480). "消息字符串
***---------------------------------------------------------
**********模板数据定义*****************************************************
TABLES: sscrfields.
TYPE-POOLS : tpit.
DATA : it_errtab TYPE tpit_t_errdoc WITH HEADER LINE,
it_fldtab TYPE tpit_t_fname WITH HEADER LINE,
it_buztab TYPE tpit_t_buztab WITH HEADER LINE.
DATA: filetable TYPE filetable,
rc TYPE i.
FIELD-SYMBOLS: <fs> TYPE ANY.
DATA: f_path LIKE rlgrap-filename.
DATA: file_path TYPE rlgrap-filename.
DATA: e_text TYPE string.
DATA: itab LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF v_tab OCCURS 10,
filename TYPE text100,
END OF v_tab.
DATA: g_code TYPE sscrfields-ucomm. "FUNCTION CODE
******************************************************************************
**********选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-001.
PARAMETERS: p_file(100) MODIF ID sc1 TYPE c .
SELECTION-SCREEN END OF BLOCK b01.
SELECTION-SCREEN PUSHBUTTON 2(9) p_butt2 USER-COMMAND pb02.
*********
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM objclsf4.
AT SELECTION-SCREEN.
g_code = sscrfields-ucomm.
PERFORM user_command USING g_code.
INITIALIZATION.
p_butt2 = '下载模板'.
START-OF-SELECTION.
IF f_path IS NOT INITIAL.
PERFORM sub_upload_data_xls.
ELSE .
IF p_file IS NOT INITIAL.
f_path = p_file.
PERFORM sub_upload_data_xls.
ELSE.
MESSAGE e996(zfi) WITH f_path .
ENDIF.
ENDIF.
****-----------------模板数据定义结束------------------------
***------------------业务方法处理-------------------------------
PERFORM sub_update.
PERFORM sub_writeout_log.
***-------------------业务方法处理结束--------------------------
*&---------------------------------------------------------------------*
*& Form sub_update
*&---------------------------------------------------------------------*
* text 循环导入BDC数据
*----------------------------------------------------------------------*
FORM sub_update.
LOOP AT i_list.
PERFORM bdc_dynpro USING 'SAPMP50A' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=INS'.
PERFORM bdc_field USING 'RP50G-PERNR'
i_list-pernr.
PERFORM bdc_field USING 'RP50G-TIMR6'
''.
PERFORM bdc_field USING 'RP50G-TIMR1'
'X'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RP50G-CHOIC'.
PERFORM bdc_field USING 'RP50G-CHOIC'
'2003'.
PERFORM bdc_dynpro USING 'MP200000' '2100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P2003-TPROG'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=UPD'.
PERFORM bdc_field USING 'P2003-BEGDA'
i_list-begda.
PERFORM bdc_field USING 'P2003-ENDDA'
i_list-endda.
PERFORM bdc_field USING 'P2003-VTART'
'Z1'."i_list-VTART.
PERFORM bdc_field USING 'P2003-TPROG'
i_list-tprog.
CALL TRANSACTION 'PA30' USING bdcdata1 MODE 'N' MESSAGES INTO msgtab.
CLEAR bdcdata1[]."注意清空
ENDLOOP.
ENDFORM. "sub_update
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->UCOMM text
*----------------------------------------------------------------------*
FORM user_command USING ucomm LIKE sy-ucomm.
CASE ucomm.
WHEN 'PB02'.
PERFORM save_the_path_and_download.
* PERFORM down_load_template USING file_path.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form save_the_path
*&---------------------------------------------------------------------*
* text 保存文件路径
*----------------------------------------------------------------------*
FORM save_the_path_and_download .
DATA: rc TYPE string,
rc1 TYPE string,
rc2 TYPE string.
DATA: fname LIKE wwwdatatab-objid,"模板的名称
fp_dest LIKE sapb-sappfad."模板路径
****Call the file save dialog only showing XML
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
* WINDOW_TITLE =
default_extension = '*.xls'
default_file_name = '转班模板' "下载excel模板的文件名
file_filter = 'xls (*.xls)|*.xls|'
* INITIAL_DIRECTORY =
CHANGING
filename = rc
path = rc1
fullpath = rc2 "文件的路径
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
OTHERS = 3
.
file_path = rc2."模板的路径
fname = 'ZDOWNLOAD.XLS'. "服务器模板文件名称
fp_dest = file_path.
IF rc2 = space.
MESSAGE e001(zxy) WITH e_text. "不能打开excel文件
EXIT.
ENDIF.
IF sy-subrc = 0.
PERFORM download_excel_template USING fname fp_dest ."该函数针对smw0上传的模板进行下载
ENDIF.
ENDFORM. " save_the_path
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_EXCEL_TEMPLATE
*&---------------------------------------------------------------------*
* text 下载服务器上的excel文件
*----------------------------------------------------------------------*
* -->FP_OBJID text
* -->FP_DEST text
* -->ENDFORM text
*----------------------------------------------------------------------*
FORM download_excel_template USING p_objid LIKE wwwdatatab-objid fp_dest LIKE sapb-sappfad.
DATA: lo_objdata LIKE wwwdatatab,
ls_errtxt(40) TYPE c,
li_rc LIKE sy-subrc,
ls_destination LIKE rlgrap-filename.
SELECT SINGLE relid objid
FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata
WHERE srtf2 = 0 AND relid = 'MI' AND objid = p_objid.
********检查表wwwdata中是否存在所指定的模板文件
IF sy-subrc NE 0 OR lo_objdata-objid EQ space."如果不存在,则给出错误提示
CONCATENATE '模板文件' p_objid '不存在' INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'I'.
ENDIF.
ls_destination = fp_dest. "保存路径
*******如果存在,调用DOWNLOAD_WEB_OBJECT 函数下载模板到路径下,从服务器上下载模板文件
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = li_rc.
IF li_rc NE 0.
CONCATENATE '模板文件:' p_objid '下载失败' INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'E'.
ELSE.
CONCATENATE '模板文件下载成功' p_objid INTO ls_errtxt.
MESSAGE ls_errtxt TYPE 'S'.
ENDIF.
ENDFORM. "download_excel_template
*&---------------------------------------------------------------------*
*& Form objclsf4
*&---------------------------------------------------------------------*
* text 文件打开对话框
*----------------------------------------------------------------------*
FORM objclsf4 .
CLEAR filetable.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
* WINDOW_TITLE =
default_extension = '*.XLS|*.XLSX'
* DEFAULT_FILENAME =
file_filter = 'XLS (*.XLS)|*.XLS|XLSX (*.XLSX)|*.XLSX'
* INITIAL_DIRECTORY =
CHANGING
file_table = filetable
rc = rc
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
OTHERS = 3
.
READ TABLE filetable INDEX 1 ASSIGNING <fs>.
IF sy-subrc = 0.
p_file = <fs>.
UNASSIGN <fs>.
ENDIF.
IF NOT p_file IS INITIAL.
f_path = p_file.
ENDIF.
ENDFORM. " objclsf4
*&---------------------------------------------------------------------*
*& Form sub_upload_data_xls
*&---------------------------------------------------------------------*
* text 读取excel文件
*----------------------------------------------------------------------*
FORM sub_upload_data_xls.
DATA: i TYPE i , "开始的行
j TYPE i , "一共多少列
k TYPE i ,
row TYPE i.
DATA: max_row TYPE i.
i = 2.
j = 5.
max_row = 2000. "导入excel最大的行
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = f_path "excel文件路径
i_begin_col = 1 "开始的列数
i_begin_row = i "开始的行数
i_end_col = j "读取到的列数
i_end_row = max_row "读取到的行数
TABLES
intern = itab "存储的内表
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE e990(zfi) WITH f_path.
ELSE.
MESSAGE s999(zfi) WITH f_path '成功'.
ENDIF.
DESCRIBE TABLE itab LINES row.
READ TABLE itab INDEX row.
row = itab-row.
CLEAR itab.
*重置i的值,类似FOR循环
i = 1.
WHILE i <= row.
LOOP AT itab WHERE row = i.
CASE itab-col.
WHEN 1.
i_list-pernr = itab-value.
WHEN 2.
i_list-begda = itab-value.
WHEN 3.
i_list-endda = itab-value.
WHEN 4.
i_list-tprog = itab-value.
ENDCASE.
ENDLOOP.
APPEND i_list.
CLEAR i_list.
i = i + 1.
ENDWHILE. "读取全部EXCEL数
ENDFORM. "sub_upload_data_xls
*&---------------------------------------------------------------------*
*& Form sub_writeout_log
*&---------------------------------------------------------------------*
* text BDC写消息
*----------------------------------------------------------------------*
FORM sub_writeout_log.
WRITE : / '消息类型', 20 '消息内容'.
LOOP AT msgtab.
SELECT SINGLE * FROM t100 WHERE sprsl = msgtab-msgspra
AND arbgb = msgtab-msgid
AND msgnr = msgtab-msgnr.
IF sy-subrc = 0.
l_mstring = t100-text.
IF l_mstring CS '&1'.
REPLACE '&1' WITH msgtab-msgv1 INTO l_mstring.
REPLACE '&2' WITH msgtab-msgv2 INTO l_mstring.
REPLACE '&3' WITH msgtab-msgv3 INTO l_mstring.
REPLACE '&4' WITH msgtab-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH msgtab-msgv1 INTO l_mstring.
REPLACE '&' WITH msgtab-msgv2 INTO l_mstring.
REPLACE '&' WITH msgtab-msgv3 INTO l_mstring.
REPLACE '&' WITH msgtab-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
WRITE: / msgtab-msgtyp, 20 l_mstring.
ELSE.
WRITE: / msgtab.
ENDIF.
ENDLOOP.
ENDFORM. "sub_writeout_log
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* text BDC 2个重要的form
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata1.
bdcdata1-program = program.
bdcdata1-dynpro = dynpro.
bdcdata1-dynbegin = 'X'.
APPEND bdcdata1.
ENDFORM. "bdc_dynpro
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* text BDC 2个重要的form
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata1.
bdcdata1-fnam = fnam.
bdcdata1-fval = fval.
APPEND bdcdata1.
ENDFORM. "bdc_field
- SWM0学习笔记 模板文件的上传和下载
- 文件的上传和下载---学习笔记
- 文件的上传和下载---学习笔记
- Struts2学习笔记13:Struts2的文件上传和下载
- 学习笔记之 文件的上传和下载代码
- springMVC学习笔记---文件的上传和下载
- se78 上传图片(logo使用)/SWM0上传文件
- Javaweb 学习笔记之文件上传和下载-01
- Android学习笔记039之文件上传和下载
- Struts2.x 学习笔记 之 文件上传和下载
- Android学习笔记三十九之文件上传和下载
- Struts2学习笔记14:Struts2的文件上传和下载【续】
- Struts2学习笔记15:Struts2的文件上传和下载【续】二
- Struts2学习笔记16:Struts2的文件上传和下载【续】三
- struts2 学习笔记(三)——文件的上传和下载
- Struts2学习笔记之文件的上传与下载
- Struts2学习笔记之文件的上传与下载
- php学习笔记(十)文件的上传与下载
- 用SqlCommandBuilder 实现批量更新
- 代码整洁之道--阅读笔记
- linux 启动过程详解
- 关于发送邮件的一些东西
- 查看某个表被谁占用的SQL语句
- SWM0学习笔记 模板文件的上传和下载
- Android Audio代码分析22 - AudioEffect::getEnabled函数
- 新概念英语 Lesson 21
- 为窗体添加菜单
- 数据库查询优化
- Fastboot
- hadoop实战之伪分布式模式
- python 文件传输服务器端(带界面)
- 如何在三个月内获得三年的工作经验