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. 读取文件的结果:

  • 相关阅读:
    Sprinig.net 双向绑定 Bidirectional data binding and data model management 和 UpdatePanel
    Memcached是什么
    Spring.net 网络示例 codeproject
    jquery.modalbox.show 插件
    UVA 639 Don't Get Rooked
    UVA 539 The Settlers of Catan
    UVA 301 Transportation
    UVA 331 Mapping the Swaps
    UVA 216 Getting in Line
    UVA 10344 23 out of 5
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6617932.html
Copyright © 2011-2022 走看看