ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SAP导入XLS到内表。

SAP导入XLS到内表。

原创 Linux操作系统 作者:100113 时间:2012-06-01 18:34:50 0 删除 编辑
在工作中,我们可能会经常遇到从xls中导数据到系统中的情况,SAP给我们提供了非常方便的方法,只需要调用一个'TEXT_CONVERT_XLS_TO_SAP'这个Function module就可以将xls中的内容导到内表中,用这种方法需要注意的是:首先需要定义一个内表,这个内表的字段顺序要和xls中数据的顺序是一一对应的,即xls中第一列会对应内表的第一个字段,第二列会对应内表中的第二个字段,以此类推。下面是导入xls的完整代码。
 
先定义一个内表,用来存放Xls中的内容和一些相关的变量。
data:g_filefilter TYPE string VALUE 'Excel模版文件|*.xls|*.xlsx',
     g_filetitle  TYPE string VALUE '选择文件',
     g_initdir    TYPE string VALUE 'C:\'.
*     g_total      TYPE i,
*     g_success TYPE i,
*     g_pos       TYPE i,
*     g_rowIndex type i.
data:begin of student OCCURS 0,
  number(4) type n,
  name(20) type c,
  sex(1)  type c,
  addr(30) type c,
 end of student.
 
在屏幕上画一个文本输入框。
selection-screen begin of block blk1 with frame. title text-001.
   parameters p_file type  rlgrap-filename .
selection-screen end of block blk1.
 
给文本输入框加上一个选择框,单击选择框的时候,弹出打开文件对话框。
AT SELECTION-SCREEN on VALUE-REQUEST FOR p_file.
  perform. file_up.
 
form. file_up.
 
DATA:lt_file TYPE filetable WITH HEADER LINE,
           rec TYPE i.
  DATA: l_filter TYPE string.
* 选择上传文件类型
  CONCATENATE cl_gui_frontend_services=>filetype_excel
                          cl_gui_frontend_services=>filetype_all
                 INTO l_filter.
 "弹出打开文件对话框
  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
      window_title            = 'Upload Excel'
*     default_extension       = '.xls'
*     default_filename        =
      file_filter             = l_filter
     "打开文件对话框默认的路径
      initial_directory       = 'C:\'
    CHANGING
      file_table              = lt_file[]
      rc                      = rec
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5.
  IF  rec >= 1.
    "获取上传文件的文件名
    READ TABLE lt_file INDEX 1.
    p_file = lt_file-filename.
  ELSEIF rec = 0.
    CLEAR p_file.
  ELSE.
    "MESSAGE e000 WITH text-e01.
  ENDIF.
 
endform.
 
按F8或点闹钟之后开始进行数据导入。
start-of-selection.
    perform. frm_upload_file using 'STUDENT'.  "内表的名字作为参数。
 
form. frm_upload_file using tabName type c.
 
DATA:li_tab_raw_data TYPE truxs_t_text_data.
  DATA:l_name TYPE string.
  FIELD-SYMBOLS: TYPE STANDARD TABLE.
  CONCATENATE p_name '[]' INTO l_name.
  ASSIGN (l_name) TO .
 "Xls导入内表 最关键的Function
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_line_header        = 'X'
      i_tab_raw_data       = li_tab_raw_data
      i_filename           = p_file            "本地文件的路径
    TABLES
      i_tab_converted_data =
    EXCEPTIONS
      conversion_failed    = 1
      OTHERS               = 2.
  IF sy-subrc <> 0.
    "MESSAGE s000 WITH text-e02.
    STOP.
  ENDIF.
** 删除抬头信息
*  DO 1 TIMES.
*    DELETE INDEX 1.
*  ENDDO.
  IF IS INITIAL.
    "MESSAGE s000 WITH text-e03 DISPLAY LIKE 'E'.
    STOP.
  ENDIF.
 
endform.
 
最后将导入的结果显示出来。
end-of-selection.
   loop at student.
        write:student-number,student-name,student-sex,/.
   endloop.
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23353800/viewspace-731684/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-11-24

  • 博文量
    19
  • 访问量
    51409