登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

原来为了你

我的人生就是要一次次的超越

 
 
 

日志

 
 
 
 

EXCEL文件上传与下载  

2011-07-08 15:35:40|  分类: ABAP文件操作 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

*----------------------- 上传 Example 1 ----------------------------------

 
假设有数据在excel中如下:
 sname     sno   sex
 
孙晓磊     001   
 
周杰伦     002   
 
阿猫       003   
 
阿狗       004   

DATAgt_data TYPE alsmex_tabline OCCURS WITH HEADER LINE.
TYPESBEGIN OF ty_itab,
        sname
(10),
        sno
(10),
        sex
(3),
       
END OF ty_itab.
DATAwa    TYPE ty_itab,
      itab  
TYPE TABLE OF ty_itab."定义的这个内表结构要与excel表完全一样

PARAMETERSp_file LIKE rlgrap-filename OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  
CALL FUNCTION 'WS_FILENAME_GET'
    
EXPORTING
      
mask             ',Excel Files,*.xls,All Files,*.*.'(101)
      
title            '选择文件'(100)
    
IMPORTING
      filename         
p_file
    
EXCEPTIONS
      inv_winsys       
1
      no_batch         
2
      selection_cancel 
3
      selection_error  
4
      
OTHERS           5.
  
IF sy-subrc <> AND sy-subrc <> 3.
    
MESSAGE e100(zdevWITH '选择文件出错!'(007).
  
ENDIF.


START
-OF-SELECTION.
  
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    
EXPORTING
      filename    
p_file
      i_begin_col 
'1'
      i_begin_row 
'1'
      i_end_col   
'50'
      i_end_row   
'5000'
    
TABLES
      intern      
gt_data.
  
SORT gt_data BY row col value.

*---整理到内表数据
  
LOOP AT gt_data.
    
CASE gt_data-col.
      
WHEN 1.
        wa
-sname gt_data-value.
      
WHEN 2.
        wa
-sno gt_data-value.
      
WHEN 3.
        wa
-sex gt_data-value.
        
APPEND wa TO itab."对于这个例子,excel表有3,append要加在最后一列.
        
CLEAR wa.
    
ENDCASE.
  
ENDLOOP.

  
LOOP AT itab INTO wa.
    
WRITE:/ wa-sname,wa-sno,wa-sex.
    
ULINE.
  
ENDLOOP.

*----------------------- 上传 Example 2 ----------------------------------
  
TYPE-POOLStruxs.
  
TYPESBEGIN OF t_datatab,"只记录excel文件的前四列
        col1
(30)    TYPE c,
        col2
(30)    TYPE c,
        col3
(30)    TYPE c,
        col4
(30)    TYPE c,
        
END OF t_datatab.
  
DATAit_datatab TYPE STANDARD TABLE OF t_datatab,
        wa_datatab 
TYPE t_datatab.
  
DATAit_raw TYPE truxs_t_text_data.
  
PARAMETERSp_file TYPE  rlgrap-filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  
CALL FUNCTION 'F4_FILENAME'
    
EXPORTING
      field_name 
'P_FILE'
    
IMPORTING
      file_name  
p_file.

START
-OF-SELECTION.
  
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    
EXPORTING
      i_line_header        
'X'           "带表头的,占一行,这一行不会读到内表
      i_tab_raw_data       
it_raw        "WORK TABLE
      i_filename           
p_file        "读这个文件时要保证它没有被打开
    
TABLES
      i_tab_converted_data 
it_datatab[]   "ACTUAL DATA
    
EXCEPTIONS
      conversion_failed    
1
      
OTHERS               2.
  
IF sy-subrc <> 0.
    
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  
ENDIF.
  
LOOP AT it_datatab INTO wa_datatab.
    
CONDENSE wa_datatab.
    
WRITE:/ wa_datatab-col1,
            wa_datatab
-col2,
            wa_datatab
-col3,
            wa_datatab
-col4.
  
ENDLOOP.

*----------------------- 下载 Example ----------------------------------
TYPE-POOLSabap.
DATAfullpath    TYPE string,
      filename    
TYPE string,
      path        
TYPE string,
      user_action 
TYPE i,
      
encoding    TYPE abap_encoding.


PARAMETERSp_file TYPE string DEFAULT 'C:\ABC.xls'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  
CALL METHOD cl_gui_frontend_services=>file_save_dialog
    
EXPORTING
      window_title      
'下载到本地文件'
      default_extension 
'XLS'           "缺省文件类型
      default_file_name 
'默认文件名称'
      file_filter       
'文本文件(*.TXT)|*.TXT|Excel 文件 (*.XLS)|*.XLS;*.XLSX|所有文件 (*.*)|*.*|'
      with_encoding     
'X'
      initial_directory 
'C:\'
    
CHANGING
      filename          
filename    "获得用户输入文件名
      path              
path        "获得用户所选路径
      fullpath          
fullpath    "路径加文件名
      user_action       
user_action
      file_encoding     
encoding.

  
IF sy-subrc <> OR user_action <> cl_gui_frontend_services=>action_ok.
    
EXIT.
  
ENDIF.

  
DATAitab TYPE STANDARD TABLE OF spfli WITH DEFAULT KEY.
  
SELECT FROM spfli INTO TABLE itab.

  
DATA filename2 TYPE rlgrap-filename.
  filename2 
fullpath.

  
CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
    
EXPORTING
      i_field_seperator 
'X'         "字段分隔开
      i_filename        
filename2
    
TABLES
      i_tab_sap_data    
itab.

  评论这张
 
阅读(605)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018