ABAP upload file(*.txt *.csv *.xls)

Posted Rainystuday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP upload file(*.txt *.csv *.xls)相关的知识,希望对你有一定的参考价值。

转自:http://blog.csdn.net/jy00873757/article/details/8534492

 

在SAP我们经常会用到*.txt, *.csv, *.xls三种文件格式

*.TXT

1. 一般用GUI_UPLOAD来处理, 请看下面的例子:

 

[plain] view plain copy
 
 技术分享技术分享
  1. TYPES: BEGIN OF ty_luke,  
  2.   key1 TYPE zluke-key1,  
  3.   year1 TYPE zluke-year1,  
  4.   month1 TYPE zluke-month1,  
  5.   test TYPE zluke-test,  
  6.   END OF ty_luke.  
  7.   
  8. DATA: lw_luke TYPE ty_luke,  
  9.       lt_luke TYPE STANDARD TABLE OF ty_luke.  
  10.   
  11. DATA: lv_file TYPE string VALUE ‘D:\ZZERO2.TXT‘.  
  12.   
  13. CALL FUNCTION ‘GUI_UPLOAD‘  
  14.   EXPORTING  
  15.     filename            = lv_file  
  16.     filetype            = ‘ASC‘  
  17.     has_field_separator = ‘X‘  
  18.   TABLES  
  19.     data_tab            = lt_luke  
  20.   EXCEPTIONS  
  21.     file_open_error     = 1  
  22.     file_read_error     = 2  
  23.     OTHERS              = 3.  
  24.   
  25. IF sy-subrc <> 0.  
  26. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO  
  27. *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.  
  28. ENDIF.  
  29.   
  30. BREAK-POINT ID z_zero_test.  

 

 

2. 这是upload的文件

技术分享

 

3. 读取文件的结果

技术分享

 

*CSV

 

1. 首先CSV是不能处理中文的, 请看下面截图:

技术分享

当我保存这个文件后再打开, 字已经变了

技术分享

2. 常用FM: KCD_CSV_FILE_TO_INTERN_CONVERT

 

[plain] view plain copy
 
 技术分享技术分享
  1. TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.  
  2.   
  3. DATA: lv_file TYPE rlgrap-filename VALUE ‘D:\UPLOAD.CSV‘.  
  4.   
  5. TYPES: BEGIN OF kcde_intern_struc.  
  6.         INCLUDE STRUCTURE  kcde_cells.  
  7. *        row   type kcde_row_col,  
  8. *        col   type kcde_row_col,  
  9. *        value type kcde_intern_value,  
  10. TYPES: END OF kcde_intern_struc.  
  11.   
  12. TYPES: BEGIN OF ty_file,  
  13.   zfld1(4) TYPE c,  
  14.   zfld2(5) TYPE c,  
  15.   zfld3(6) TYPE c,  
  16.   END OF ty_file.  
  17.   
  18. DATA:lv_raw TYPE truxs_t_text_data.  
  19.   
  20. DATA: lt_file TYPE STANDARD TABLE OF ty_file,  
  21.       ls_file TYPE ty_file.  
  22.   
  23. DATA: lt_temp TYPE STANDARD TABLE OF kcde_intern_struc,  
  24.       ls_temp TYPE kcde_intern_struc.  
  25.   
  26. FIELD-SYMBOLS: <fs_file>.  
  27.   
  28. DATA: lv_index TYPE i.  
  29.   
  30. CALL FUNCTION ‘KCD_CSV_FILE_TO_INTERN_CONVERT‘  
  31.   EXPORTING  
  32.     i_filename      = lv_file  
  33.     i_separator     = ‘,‘  
  34.   TABLES  
  35.     e_intern        = lt_temp  
  36.   EXCEPTIONS  
  37.     upload_csv      = 1  
  38.     upload_filetype = 2  
  39.     OTHERS          = 3.  
  40.   
  41. IF sy-subrc = 0.  
  42.   
  43.   CLEAR: ls_temp, ls_file.  
  44.   LOOP AT lt_temp INTO ls_temp.  
  45.     CLEAR: lv_index.  
  46.     lv_index = ls_temp-col.  
  47.     ASSIGN COMPONENT lv_index OF STRUCTURE ls_file TO <fs_file>.  
  48.     IF sy-subrc = 0.  
  49.       <fs_file> = ls_temp-value.  
  50.     ENDIF.  
  51.     AT END OF row.  
  52.       APPEND ls_file TO lt_file.  
  53.       CLEAR ls_file.  
  54.     ENDAT.  
  55.     CLEAR ls_temp.  
  56.   ENDLOOP.  
  57.   
  58. ENDIF.  
  59.   
  60. BREAK-POINT.  



 

 

3. Upload的文件

技术分享

 

4. 读取文件的结果:

技术分享

 

5. 加上我后面那段逻辑处理, 就能得到最后的结果

技术分享

 

6. 注意: 这个FM不能处理",

把文件改成如下图所示:

技术分享

再运行程序, 程序就会dump, 想知道为什么, 自己debug一下吧

 

*.XLS

 

1. 常用FM: TEXT_CONVERT_XLS_TO_SAP

 

[plain] view plain copy
 
 技术分享技术分享
  1. TYPE-POOLS: truxs.  
  2.   
  3. DATA: lv_file TYPE rlgrap-filename VALUE ‘D:\ZZERO3.XLS‘.  
  4.   
  5. TYPES: BEGIN OF ty_data,  
  6.   key(3)   TYPE c,  
  7.   year(4)  TYPE c,  
  8.   month(2) TYPE c,  
  9.   test(4)  TYPE c,  
  10.   END OF ty_data.  
  11.   
  12. DATA: lv_raw TYPE truxs_t_text_data.  
  13. DATA: lw_data TYPE ty_data,  
  14.       lt_data TYPE STANDARD TABLE OF ty_data.  
  15.   
  16. CALL FUNCTION ‘TEXT_CONVERT_XLS_TO_SAP‘  
  17.   EXPORTING  
  18. *   I_FIELD_SEPERATOR          =  
  19. *   I_LINE_HEADER              =  
  20.     i_tab_raw_data             = lv_raw  
  21.     i_filename                 = lv_file  
  22.   TABLES  
  23.     i_tab_converted_data       = lt_data  
  24.  EXCEPTIONS  
  25.    conversion_failed          = 1  
  26.    OTHERS                     = 2  
  27.           .  
  28. IF sy-subrc <> 0.  
  29.   MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno  
  30.           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.  
  31. ENDIF.  

 

 

 

2. Upload的文件

技术分享

 

3. 读取文件的结果:

技术分享





以上是关于ABAP upload file(*.txt *.csv *.xls)的主要内容,如果未能解决你的问题,请参考以下文章

JQuery File Upload preview File Type 允许所有文件类型

ABAP下载txt文件

安装 ANSYS19.0 最后一步 Add a License File 出现 Did not upload file - Error

java读取txt文件内容

abap 定义变量 like、type、for的区别

abap插入TAB键问题?????