首页 > 编程语言 >【ABAP】下载模板文件进行批导程序

【ABAP】下载模板文件进行批导程序

时间:2023-07-05 11:34:50浏览次数:43  
标签:gt data lv ABAP 批导 file TYPE 模板

日常开发中遇到的批导开发程序,都是通过tcode:SMW0 将模板excel文件上传到服务器

界面上放置下载模板的工具栏按钮,用户使用时下载模板并编辑数据,然后上传文件进行导入处理

程序如下

REPORT zfile_upload.

TABLES: sscrfields.

SELECTION-SCREEN FUNCTION KEY 1.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t01.
  PARAMETERS:p_file TYPE localfile.
SELECTION-SCREEN END OF BLOCK b1.

DATA: gt_files TYPE filetable.
TYPES: BEGIN OF ty_data,
         bukrs     TYPE bukrs,
         vkorg     TYPE vkorg,
         budat     TYPE budat,
         refence   TYPE char10,
         butxt     TYPE char50,
         matnr     TYPE matnr,
         price     TYPE dec18_2,
         new_price TYPE dec18_2,
       END OF ty_data.
TYPES: tty_data TYPE STANDARD TABLE OF ty_data.
DATA: gt_data TYPE tty_data.

INITIALIZATION.
  sscrfields-functxt_01 = '模板文件'.
  sscrfields-functxt_01+40 = icon_document.
  sscrfields-functxt_01+44 = '模板文件'.
  t01 = '文件上传'.
  %_p_file_%_app_%-text = '文件导入'.

AT SELECTION-SCREEN.
  DATA:
    lv_filename TYPE string,
    lv_path     TYPE string,
    lv_fullpath TYPE string,
    l_rc        LIKE sy-subrc,
    l_objdata   TYPE wwwdatatab,
    lv_dest     TYPE localfile.
  CASE sscrfields-ucomm.
    WHEN 'FC01'.
      cl_gui_frontend_services=>file_save_dialog( EXPORTING  window_title              = 'Save the document'
                                                             default_file_name         = 'Document'
                                                             default_extension         = 'xls'
                                                             file_filter               = cl_gui_frontend_services=>filetype_excel
                                                  CHANGING   filename                  = lv_filename
                                                             path                      = lv_path
                                                             fullpath                  = lv_fullpath
                                                  EXCEPTIONS cntl_error                = 1
                                                             error_no_gui              = 2
                                                             invalid_default_file_name = 3
                                                             not_supported_by_gui      = 4
                                                             OTHERS                    = 5 ).


      IF lv_filename IS INITIAL.
        MESSAGE  '已取消下载模板' TYPE 'W'.
      ENDIF.
      SELECT SINGLE relid,objid
      FROM wwwdata
      INTO CORRESPONDING FIELDS OF @l_objdata
      WHERE relid = 'MI'
      AND objid = 'ZSDR0031' .
      lv_dest = lv_fullpath.
      CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
        EXPORTING
          key         = l_objdata
          destination = lv_dest
        IMPORTING
          rc          = l_rc
        CHANGING
          temp        = lv_dest.
  ENDCASE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  "两种方式 F4_FILENAME 或者 cl_gui_frontend_services=>file_open_dialog
  "通过file_open_dialog有更多的个性化参数
*  CALL FUNCTION 'F4_FILENAME'
*    IMPORTING
*      file_name = p_file. "返回文件名
  DATA:lt_files TYPE filetable,
       lv_rc    TYPE i.
  cl_gui_frontend_services=>file_open_dialog( EXPORTING default_extension = 'xls'
                                                        file_filter       = cl_gui_frontend_services=>filetype_excel
                                                        window_title      = '请选择文件'
                                                        multiselection    = abap_false
                                              CHANGING  file_table        = gt_files
                                                        rc                = lv_rc ).
  IF lv_rc = 1.
    p_file = gt_files[ 1 ]-filename.
  ENDIF.

START-OF-SELECTION.
  DATA(lo_excel) = NEW zcl_excel_reader_2007(  )->zif_excel_reader~load_file( i_filename = gt_files[ 1 ]-filename ).
  lo_excel->get_worksheet_by_index( 1 )->get_table( EXPORTING iv_skipped_cols = 1
                                                              iv_skipped_rows = 2
                                                              iv_skip_bottom_empty_rows = abap_true
                                                    IMPORTING et_table = gt_data ).

  cl_demo_output=>display( gt_data ).

 

标签:gt,data,lv,ABAP,批导,file,TYPE,模板
From: https://www.cnblogs.com/Lingcc/p/17528087.html

相关文章

  • FreeMarker【模板引擎】
    一、FreeMarker介绍FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。二、模型图 ......
  • EasyExcel 根据模板复制Sheet并将数据分页填充
    需求指定Excel模板文件,只给一个Sheet每个Sheet填充指定数量的数据,超过指定条数,根据模板Sheet复制并且追加数据准备工作引入easyExcelpom依赖<!--https://mvnrepository.com/artifact/com.alibaba/easyexcel--><dependency><groupId>com.alibaba</group......
  • 【模板分享】我在51CTO博客的第一篇博文
    发文入口:https://blog.51cto.com/activity-first-publish这是我在51CTO博客的第一篇博文。一、自我介绍(不知道怎么介绍?你肯定有求职简历吧?可以参考简历,描述你的技术专长和项目经验!)二、技术分享(可以分享1-3个实用的代码片段,或技术干货。)三、立一个flag!(可以从学习、工作、生活等方面......
  • Solon Web 开发:三、一个简单的 Web 模板项目(或示例)
    演示web程序的常用能力:控制器、请求参数、参数校验、跳转过滤器、全局异常处理静态文件动态模板动态模板公共变量及控制器基类日志Json渲染格式控制模板下载:打包成jar,可以自启动helloworld_web_jar.zip(maven)helloworld_web_jar_gradle.zip(gradle)打包成w......
  • git代码提交 设置日志模板 对用户提交日志注释进行校验
    背景:由于公司项目管理需要,对开发人员的提交日志进行规范性约束。作为兼职的devops工程师,责无旁贷的去吭哧吭哧的研究了。公司主要使用git管理代码,gogs托管。作为领导眼中分分钟解决的问题,在真实上手研究还是需要一些时间成本的(鄙人主职还是研发)。思路:1、利用度娘和biying搜索了......
  • EasyExcel 动态表头模板下载
    List<List<String>>list=newArrayList<List<String>>();List<String>head0=newArrayList<String>();head0.add("VIN");list.add(head0);if("1".equals(type)){......
  • JAVA调用ABAP RFC接口-DEMO
    packagecom.swift.oa;importcom.sap.conn.jco.*;/***@Author:Wriprin*@Date:2022/11/2517:20*@Version1.0*/publicclassGetMaraInfo{publicstaticvoidmain(String[]args)throwsJCoException{//ConfigurationofSAPconnec......
  • 指针模板
    下文所提到的函数的用法:birnary_search:查找某个元素是否出现,return值为boolbinary_search(beg,end,val)查找val,找到为1,否则为0;lower_bound:查找第一个>=某个元素的位置lower_bound(beg,end,val)返回一个迭代器,指向非递减序列中第一个>=val的位置upper_bound:查找第一个>......
  • element-ui弹出框模板
    <el-dialogwidth="650px"append-to-body:show-close="false":modal="false":visible.sync="dialogRegisterVisible"><el-formv-show="!isLogin"ref......
  • element-ui表格模板
    <template><divclass="container"><divclass="breadcrumb"><el-breadcrumbseparator-class="el-icon-arrow-right"><el-breadcrumb-item>个人中心</el-breadcrumb-item>&......