SAP ABAP excel文件模板上传下载

一:事物码smw0

二:上传步骤

程序源码:

l_filename = 'XX.xls'.l_muban = 'z123'.
*&---下载模板PERFORM frm_get_fullpath CHANGING gv_fullpath gv_path gv_name.
*&---路径为空则退出IF gv_fullpath IS INITIAL.MESSAGE '用户取消操作' TYPE 'S'.RETURN.ENDIF.PERFORM frm_down USING gv_fullpath.
*--------------------------------------------------------------------*
*       获取下载到本地的路径
*--------------------------------------------------------------------*
FORM frm_get_fullpath   CHANGING pv_fullpath TYPE stringpv_path     TYPE stringpv_name     TYPE string.
DATA: lv_init_path  TYPE string,lv_init_fname TYPE string,lv_path       TYPE string,lv_filename   TYPE string,lv_fullpath   TYPE string.
*&---初始名称(输出的文件名称)
*  concatenate 'Material_Doc_' SY-DATUM '.xslx' into L_INIT_FNAME.lv_init_fname = l_filename.
* 获取桌面路径CALL METHOD cl_gui_frontend_services=>get_desktop_directoryCHANGINGdesktop_directory    = lv_init_pathEXCEPTIONScntl_error           = 1error_no_gui         = 2not_supported_by_gui = 3OTHERS               = 4.IF sy-subrc <> 0.EXIT.ENDIF.
*&---用户选择名称、路径CALL METHOD cl_gui_frontend_services=>file_save_dialogEXPORTING
*     window_title         = '指定保存文件名'
*     default_extension    = 'DOC'default_file_name    = lv_init_fname
*     FILE_FILTER          = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
*     FILE_FILTER          = CL_GUI_FRONTEND_SERVICES=>FILETYPE_WORDinitial_directory    = lv_init_pathprompt_on_overwrite  = 'X'CHANGINGfilename             = lv_filenamepath                 = lv_pathfullpath             = lv_fullpath
*     USER_ACTION          =
*     FILE_ENCODING        =EXCEPTIONScntl_error           = 1error_no_gui         = 2not_supported_by_gui = 3OTHERS               = 4.IF sy-subrc = 0.pv_fullpath = lv_fullpath.pv_path     = lv_path.ENDIF.
ENDFORM.
*--------------------------------------------------------------------*
*       下载文件
*--------------------------------------------------------------------*
FORM frm_down  USING pr_filename.DATA: lv_objdata     LIKE wwwdatatab,lv_mime        LIKE w3mime,lv_destination LIKE rlgrap-filename,lv_objnam      TYPE string,lv_rc          LIKE sy-subrc,lv_errtxt      TYPE string.
DATA: lv_filename TYPE string,lv_result,lv_subrc    TYPE sy-subrc.
DATA: lv_objid TYPE wwwdatatab-objid .
lv_objid = l_muban.  "上传的模版名称
*&---查找文件是否存在。SELECT SINGLE relid objidFROM wwwdataINTO CORRESPONDING FIELDS OF lv_objdataWHERE srtf2    = 0AND   relid    = 'MI'AND   objid    = lv_objid.
*&---判断模版不存在则报错IF sy-subrc NE 0 OR lv_objdata-objid EQ space.CONCATENATE '模板文件:' lv_objid '不存在,请用TCODE:SMW0进行加载'INTO lv_errtxt.MESSAGE lv_errtxt TYPE 'E'.ENDIF.
lv_filename = pr_filename.
"判断本地地址是否已经存在此文件。CALL METHOD cl_gui_frontend_services=>file_existEXPORTINGfile                 = lv_filenameRECEIVINGresult               = lv_resultEXCEPTIONScntl_error           = 1error_no_gui         = 2wrong_parameter      = 3not_supported_by_gui = 4OTHERS               = 5.IF sy-subrc <> 0.CASE sy-subrc.WHEN 1.WHEN 2.WHEN OTHERS.ENDCASE.ENDIF.
IF lv_result EQ 'X'.  "如果存在则删除原始文件,重新覆盖CALL METHOD cl_gui_frontend_services=>file_deleteEXPORTINGfilename             = lv_filenameCHANGINGrc                   = lv_subrcEXCEPTIONSfile_delete_failed   = 1cntl_error           = 2error_no_gui         = 3file_not_found       = 4access_denied        = 5unknown_error        = 6not_supported_by_gui = 7wrong_parameter      = 8OTHERS               = 9.
IF sy-subrc <> 0.CASE sy-subrc.WHEN 1.WHEN 2.WHEN OTHERS.ENDCASE.ENDIF.
IF lv_subrc <> 0. "如果删除失败,则报错。CONCATENATE '同名EXCEL文件已打开' '请关闭该EXCEL后重试。'INTO lv_errtxt.MESSAGE lv_errtxt TYPE 'E'.ENDIF.ENDIF.
lv_destination   = pr_filename.
*&---下载模版。CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGkey         = lv_objdatadestination = lv_destinationIMPORTINGrc          = lv_rc.IF lv_rc NE 0.CONCATENATE '模板文件' '下载失败' INTO lv_errtxt.MESSAGE lv_errtxt TYPE 'E'.ENDIF.
ENDFORM.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/268067.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python简单网抑云数据采集 JS逆向

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.10 Pycharm 模块使用: requests -> pip install requests execjs -> pip install execjs 爬虫实现基本思路流程: 一. 数据来源分析: 明确需求: 明确采集的网站以及数据内容 网址: https://mu…

Nacos热更新(动态获取配置)

写在前面&#xff1a;各位看到此博客的小伙伴&#xff0c;如有不对的地方请及时通过私信我或者评论此博客的方式指出&#xff0c;以免误人子弟。多谢&#xff01;如果我的博客对你有帮助&#xff0c;欢迎进行评论✏️✏️、点赞&#x1f44d;&#x1f44d;、收藏⭐️⭐️&#…

【Hadoop_05】NN、2NN以及DataNode的工作机制

1、NameNode和SecondaryNameNode1.1 NN和2NN工作机制1.2 Fsimage和Edits解析1.3 CheckPoint时间设置 2、DataNode2.1 DataNode工作机制2.2 数据完整性2.3 掉线时限参数设置 1、NameNode和SecondaryNameNode 1.1 NN和2NN工作机制 思考&#xff1a;NameNode中的元数据是存储在哪…

python实战教学之python版“张万森,好久不见”

前言 WINTER IS COMING 最近《一闪一闪亮星星》的电影在火热预售中&#xff0c;家人们抢到票了嘛&#xff0c;前两天小编写了一篇“张万森&#xff0c;下雪了”的文章后&#xff0c;收到了不少小伙伴的反馈&#xff1a;“代码的运行结果只有文字&#xff0c;没有雪花啊”&#…

一文了解什么是Selenium自动化测试?

一、Selenium是什么&#xff1f; 用官网的一句话来讲&#xff1a;Selenium automates browsers. Thats it&#xff01;简单来讲&#xff0c;Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作浏览器一样。支持的浏…

react Hooks(useEffect)实现原理 - 简单理解

useEffect 语法&#xff1a; useEffect(setup, dependencies?) 含义: useEffect 是一个 React Hook&#xff0c;它允许你 将组件与外部系统同步。 useEffect 源码简单理解 一、mountEffect 和 upadateEffect useEffect 与其它 hooks 一样分为 mountEffect 和 upadateEffec…

springboot整合swagger

1&#xff09;简介&#xff1a; 作为后端开放人员&#xff0c;最烦的事就是自己写接口文档和别人没有写接口文档&#xff0c;不管是前端还是后端开发&#xff0c;多多少少都会被接口文档所折磨&#xff0c;前端会抱怨后端没有及时更新接口文档&#xff0c;而后端又会觉得编写接…

【C++】类与对象(下)

本文目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 2. static成员2.1 概念2.2 特性 3. 友元3.1 友元函数3.2 友元类 4. 内部类5. 匿名对象6. 拷贝对象时的一些编译器优化7. 再次理解类和对象 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&am…

配电箱安全检查

配电箱怎么检查&#xff0c;如何识破电箱安全隐患&#xff1f; &#xff08;1&#xff09;一物一码&#xff1a;每个配电箱都有独一无二标识二维码&#xff0c;巡检人员到达现场扫码即可填写巡检记录&#xff0c;查看配电箱的参数、负责人、操作规则等信息&#xff1b; &#x…

(新手必看)自定义数据传输通信协议+STM32代码详解

前言 本篇博客主要学习和了解一些单片机协议的格式&#xff0c;在对传输大数据或者要求准确性的时候&#xff0c;都需要通过协议来发送接收&#xff0c;下面通过了解协议的基本构成和代码来分析和实现协议的发送和接收。本篇博客大部分是自己收集和整理&#xff0c;如有侵权请联…

MyBatisPlus简介

1 简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 2、特性 无侵入 只做增强不做改变&#xff0c;引入它不会对现有工程产生影响&#xff0c;如丝般顺滑…

淡化了技术指标 还能做现货黄金交易?

技术指标是分析和预测现货黄金走势的其中一种方法&#xff0c;普通投资者多数依赖技术指标为自己的交易做判断。然而&#xff0c;近几年有一种观点认为&#xff0c;我们应该淡化技术指标&#xff0c;少使用或者不用技术分析来服务我们的交易。这个观点引起了不少投资者的思考&a…