【ABAP】 EXCEL模板导入

本文详细介绍使用ABAP编程语言进行文件选择、打开对话框、判断文件存在性、上传Excel文件内容并将其转换为内表的过程。通过示例代码展示了如何利用cl_gui_frontend_services类的多种方法实现文件操作。

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

用rlgrap-filename定义文件选择框的类型

parameters: fidata like rlgrap-filename default 'C:\FIDATA.XLS' obligatory.

用 cl_gui_frontend_services类中的file_open_dialog 打开文件对话框

form file_f4 using file.
  data:
    lt_filetable type filetable,
    lf_rc        type i.
  call method cl_gui_frontend_services=>file_open_dialog
    exporting
      multiselection          = abap_false
    changing
      file_table              = lt_filetable
      rc                      = lf_rc
    exceptions
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      others                  = 5.

  if sy-subrc <> 0.
    message id sy-msgid type 'S' number sy-msgno
               display like 'E'
               with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    exit.
  endif.

* Number of selected filed must be equal to one.
  check lf_rc = 1.

* Access selected file
  data:
    ls_file type file_table.

  read table lt_filetable into ls_file index 1.
  check sy-subrc = 0.
  file = ls_file-filename.
endform.         

用 cl_gui_frontend_services类中的file_exist 判断文件是否存在

form file_check.
  data: file type string.
  data: result.
  clear result.
  file = fidata.
  call method cl_gui_frontend_services=>file_exist
    exporting
      file                 = file
    receiving
      result               = result
    exceptions
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      others               = 5.
  if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
               with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.

  if result eq space.
    message 'File not exist ' type 'E' display like 'S'.
  endif.
endform.                  

用函数ALSM_EXCEL_TO_INTERNAL_TABLE上传EXCEL文件内容,l_tab存放表的内容

  call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    exporting
      filename    = fidata
      i_begin_col = 1
      i_begin_row = 1
      i_end_col   = 26
      i_end_row   = n_col
    tables
      intern      = l_tab.

定义l_tab为alsmex_tabline类型的内表

data:l_tab  like  alsmex_tabline occurs 0 with header  line.

用row和col控制字段上传至内表,完整代码如下

form frm_upload .
  data: i type i.
  data j type i.
  data l_count type i value 1.
  data:l_tab  like  alsmex_tabline occurs 0 with header  line.

  i = 2.

  call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    exporting
      filename    = fidata
      i_begin_col = 1
      i_begin_row = 1
      i_end_col   = 26
      i_end_row   = n_col
    tables
      intern      = l_tab.


  sort l_tab by row.
  loop at l_tab.
    at new row.
      l_count = l_count + 1.
    endat.
  endloop.

  while i <= 1000.
    j = i - 1.
    loop at l_tab where row = j .
      case l_tab-col.
        when 1.
          t_upload-field = l_tab-value.
        when 2.
          t_upload-field1 = l_tab-value.
        when 3.
          t_upload-field2 = l_tab-value.
        when 4.
          t_upload-field3 = l_tab-value.
        when 5.
          t_upload-field4 = l_tab-value.
        when 6.
          t_upload-field5 = l_tab-value.
        when 7.
          t_upload-field6 = l_tab-value.
        when 8.
          t_upload-field7 = l_tab-value.
        when 9.
          t_upload-field8 = l_tab-value.
        when 10.
          t_upload-field9 = l_tab-value.
        when 11.
          t_upload-field10 = l_tab-value.
        when 12.
          t_upload-field11 = l_tab-value.
        when 13.
          t_upload-field12 = l_tab-value.
        when 14.
          t_upload-field13 = l_tab-value.
        when 15.
          t_upload-field14 = l_tab-value.
        when 16.
          t_upload-field15 = l_tab-value.
        when 17.
          t_upload-field16 = l_tab-value.
        when 18.
          t_upload-field17 = l_tab-value.
        when 19.
          t_upload-field18 = l_tab-value.
        when 20.
          t_upload-field19 = l_tab-value.
        when 21.
          t_upload-field20 = l_tab-value.
        when 22.
          t_upload-field21 = l_tab-value.
        when 23.
          t_upload-field22 = l_tab-value.
        when 24.
          t_upload-field23 = l_tab-value.
        when 25.
          t_upload-field24 = l_tab-value.
        when 26.
          t_upload-field25 = l_tab-value.
      endcase.
    endloop.
    append t_upload.
    clear t_upload.
    i = i + 1.
  endwhile.
  i_upload[] = t_upload[].
  if l_tab is initial.
    message i001(zdev).
    exit.
  endif.
endform.   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值