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

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

*.TXT

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

  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. DATA: lw_luke TYPE ty_luke,
  8. lt_luke TYPE STANDARD TABLE OF ty_luke.
  9. DATA: lv_file TYPE string VALUE 'D:\ZZERO2.TXT'.
  10. CALL FUNCTION 'GUI_UPLOAD'
  11. EXPORTING
  12. filename            = lv_file
  13. filetype            = 'ASC'
  14. has_field_separator = 'X'
  15. TABLES
  16. data_tab            = lt_luke
  17. EXCEPTIONS
  18. file_open_error     = 1
  19. file_read_error     = 2
  20. OTHERS              = 3.
  21. IF sy-subrc <> 0.
  22. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  23. *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  24. ENDIF.
  25. BREAK-POINT ID z_zero_test.

2. 这是upload的文件

3. 读取文件的结果

*CSV

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

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

2. 常用FM: KCD_CSV_FILE_TO_INTERN_CONVERT

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

3. Upload的文件

4. 读取文件的结果:

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

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

把文件改成如下图所示:

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

*.XLS

1. 常用FM: TEXT_CONVERT_XLS_TO_SAP

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

2. Upload的文件

3. 读取文件的结果:

最新文章

  1. 设计模式--观察者模式初探和java Observable模式
  2. PHP框架模板原理
  3. mysql 导出select语句结果到excel文件等
  4. 接口或者http请求测试工具--chrome plug
  5. NOIP 考前 计算几何练习
  6. Python基础(11)--面向对象1
  7. bzoj 2661: [BeiJing wc2012]连连看
  8. excel动态去重和动态排序
  9. 方形图片转动并转换成圆形CSS特效
  10. HDU 5521 Meeting
  11. PHP命令注入笔记
  12. capwap学习笔记——初识capwap(三)(转)
  13. Java 学习笔记 (一) If 语句
  14. Java中的String,StringBuilder,StringBuffer
  15. 一起学爬虫——urllib库常用方法用法总结
  16. python argparse sys.argv
  17. 20171104xlVBA各人各科进退
  18. UWP 多语言的三个概念
  19. 唐雎(jū)不辱使命
  20. Eclipse 2017最佳20个插件

热门文章

  1. 基于WPF系统框架设计(7)-TextBox/PasswordBox在ViewModel中支持回车命令
  2. iOS开发 总结几种传值--extern,NSUserDefaults,Delegate
  3. Android JNI&amp;NDK编程小结及建议
  4. 【mybatis】从一个错误,看mybatis中的#和$的区别
  5. wmware下载地址
  6. dedecms 调用父栏目下的所有子栏目
  7. 使用virtualenv, uwsgi, nginx来布署django
  8. 清空catalina.out报错Permission denied
  9. 【温故知新】——BABYLON.js学习之路&#183;前辈经验(二)
  10. 【Web API系列教程】1.2 — Web API 2中的Action Results