zoukankan      html  css  js  c++  java
  • 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
     
     在CODE上查看代码片派生到我的代码片
    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:ZERO2.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
     
     在CODE上查看代码片派生到我的代码片
    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
     
     在CODE上查看代码片派生到我的代码片
    1. TYPE-POOLS: truxs.  
    2.   
    3. DATA: lv_file TYPE rlgrap-filename VALUE 'D:ZERO3.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. 读取文件的结果:

  • 相关阅读:
    Java异常处理机制(转)
    深入探讨 java.lang.ref 包(转)
    一篇不错的讲解Java异常的文章
    Java国际化学习(一)介绍
    Java泛型集合排序(转)
    Java常见异常总结 (转)
    java中的异常处理机制
    深入分析 Java I/O 的工作机制(转)
    java里BufferedReader和Scanner
    JS深入学习知识整理
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6617932.html
Copyright © 2011-2022 走看看