matinal:SAP ABAP 创建zip压缩文件的功能

博客直接给出代码,但未明确代码所属领域。从标签推测可能涉及Linux运维、前端开发、算法或数据库等信息技术相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接上代码

"excel文档类对象
DATA:lo_excel TYPE REF TO zcl_excel.
TYPES:BEGIN OF s_spfli,
      carrid TYPE spfli-carrid,
      connid TYPE spfli-connid,
      countryfr TYPE spfli-countryfr,
      desc TYPE string,
      END OF s_spfli.
DATA:lt_spfli TYPE TABLE OF s_spfli.
DATA:ls_spfli LIKE LINE OF lt_spfli.
DATA:lt_fcat TYPE lvc_t_fcat.
DATA:ls_fcat TYPE lvc_s_fcat.

START-OF-SELECTION.
  PERFORM f_get_data.
  PERFORM f_create_excel.
  PERFORM f_create_zip.

"获取数据
FORM f_get_data.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_spfli FROM spfli.
  LOOP AT lt_spfli INTO ls_spfli.
    ls_spfli-desc = '测试中文'.
    MODIFY lt_spfli FROM ls_spfli.
  ENDLOOP.
  "构建显示字段
  CLEAR ls_fcat.
  ls_fcat-fieldname = 'CARRID'.
  ls_fcat-reptext = 'Carr.'.
  APPEND ls_fcat TO lt_fcat.
  ls_fcat-fieldname = 'CONNID'.
  ls_fcat-reptext = 'Conn.'.
  APPEND ls_fcat TO lt_fcat.
  ls_fcat-fieldname = 'COUNTRYFR'.
  ls_fcat-reptext = 'Country from'.
  APPEND ls_fcat TO lt_fcat.
  ls_fcat-fieldname = 'DESC'.
  ls_fcat-reptext = '描述'.
  APPEND ls_fcat TO lt_fcat.
ENDFORM.

"创建excel
FORM f_create_excel.
  "excel worksheet类对象
  DATA:lo_worksheet TYPE REF TO zcl_excel_worksheet.
  DATA:lv_col TYPE I.
  DATA:lv_row TYPE I.
  FIELD-SYMBOLS:<fs_val> TYPE ANY.
  TRY.
      "创建excel对象
      CREATE OBJECT lo_excel.
      "获取当前获得worksheet
      lo_worksheet = lo_excel->get_active_worksheet( ).
      "设置worksheet
      lo_worksheet->set_title('sheet1').
      "设置header
      LOOP AT lt_fcat INTO ls_fcat.
        lv_col = sy-tabix.
        lo_worksheet->set_cell(
          ip_column = lv_col
          ip_row = 1
          ip_value = ls_fcat-reptext
        ).
      ENDLOOP.
      "设置值
      LOOP AT lt_spfli INTO ls_spfli.
        lv_row = sy-tabix + 1.
        LOOP AT lt_fcat INTO ls_fcat.
          ASSIGN COMPONENT ls_fcat-fieldname OF STRUCTURE ls_spfli TO <fs_val>.
          lv_col = sy-tabix.
          lo_worksheet->set_cell(
            ip_column = lv_col
            ip_row = lv_row
            ip_value = <fs_val>
          ).
        ENDLOOP.
      ENDLOOP.
    CATCH ZCX_EXCEL.
  ENDTRY.
ENDFORM.

"excel转换为xstring,打包zip
FORM f_create_zip.
  DATA:lo_excel_writer TYPE REF TO zif_excel_writer.
  DATA:lv_xstr TYPE xstring.
  DATA:lt_rawdata TYPE solix_tab.
  "字节数
  DATA:lv_bytecount TYPE I.
  "文件名
  DATA:lv_filename TYPE String VALUE 'test'.
  "文件路径
  DATA:lv_path TYPE String.
  DATA:lv_fullpath TYPE String.
  "zip打包
  DATA:lo_zip TYPE REF TO cl_abap_zip.
  DATA:lv_xstr_zip TYPE xstring.

  "创建lo_excel_writer对象
  CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
  "获取xstring
  lv_xstr = lo_excel_writer->write_file( lo_excel ).
  "创建zip对象
  CREATE OBJECT lo_zip.
  lo_zip->add(
    EXPORTING
      name = 'test1.xlsx'
      content = lv_xstr
  ).
  lo_zip->add(
    EXPORTING
      name = 'test2.xlsx'
      content = lv_xstr
  ).
  lo_zip->save(
    RECEIVING
      zip = lv_xstr_zip
  ).

  lt_rawdata = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_xstr_zip ).
  lv_bytecount = xstrlen( lv_xstr_zip ).

  "路径选择框
  cl_gui_frontend_services=>file_save_dialog(
    EXPORTING
      window_title = '选择路径:'
      default_extension = 'zip'
    CHANGING
      filename = lv_filename
      path = lv_path
      fullpath = lv_fullpath
   ).

  "下载excel
  cl_gui_frontend_services=>gui_download(
    EXPORTING
      bin_filesize = lv_bytecount
      filename = lv_fullpath
      filetype = 'BIN'
    CHANGING
      data_tab = lt_rawdata
  ).
ENDFORM.

### 设置 `.vimrc` 配置文件的示例及参数说明 `.vimrc` 是 Vim 编辑器的核心配置文件,用于定义用户的个性化设置和增强编辑体验。以下是常见的 `.vimrc` 参数及其解释: #### 基础设置 ```vim set number " 显示行号 [^2] set tabstop=4 " 设置 Tab 键宽度为 4 个空格 set shiftwidth=4 " 设置自动缩进时使用的空格数为 4 set expandtab " 将 Tab 替换为空格 set autoindent " 自动继承上一行的缩进方式 set smartindent " 智能缩进支持编程语言特定规则 ``` #### 外观与界面 ```vim syntax on " 启用语法高亮 [^1] colorscheme desert " 设置颜色方案 (desert 只是一个例子) set cursorline " 突出显示当前行 set showcmd " 在状态栏显示输入中的命令 set ruler " 显示光标的当前位置 (行列号) ``` #### 文件操作与保存 ```vim set backup " 创建备份文件 set undofile " 启用撤销历史记录持久化 set directory=~/.vim/swap// " 定义交换文件存储路径 set writebackup " 在覆盖文件前创建临时副本 ``` #### 提升效率的功能 ```vim map <C-s> :w<CR> " 使用 Ctrl+s 快捷键保存文件 [^2] nnoremap <leader>w :w<CR> " 定义快捷键 leader+w 来保存文件 inoremap jj <Esc> " 插入模式下按两次 'j' 返回正常模式 ``` #### 插件管理(可选) 虽然基础版本的 `.vimrc` 不涉及插件管理工具,但如果使用 `Vundle` 或 `Plug`,可以通过以下方式进行扩展: ```vim call plug#begin('~/.vim/plugged') Plug 'scrooloose/nerdtree' Plug 'tpope/vim-fugitive' call plug#end() ``` 以上代码片段展示了如何通过 `.vimrc` 实现基本到高级的配置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值