当前位置: 代码迷 >> Web前端 >> abap webdynpro 导入excel并展示
  详细解决方案

abap webdynpro 导入excel并展示

热度:1185   发布时间:2012-09-01 09:33:02.0
abap webdynpro 导入excel并显示
sdn上有关于将excel如何通过abap webdynpro导入并显示的示例,但是找着去做之后会发现导入并显示出的是乱码。其实本身示例给出的就是按照txt的格式来做的,这其实是由于sap本身对于把excel得来的xstring重新转成string类型的过程无法正确匹配罢了,至今sap没有给出一个很好的解决办法,按照示例代码:
METHOD onactionon_upload .  TYPES :
       BEGIN OF str_itab,
       name(10) TYPE c,
       age(10) TYPE c,
       END OF str_itab.  DATA : t_table1 TYPE STANDARD TABLE OF str_itab,
         i_data TYPE STANDARD TABLE OF string,
         lo_nd_sflight TYPE REF TO if_wd_context_node,
         lo_el_sflight TYPE REF TO if_wd_context_element,
         l_string TYPE string,
         fs_table TYPE str_itab,
         l_xstring TYPE xstring,
         fields TYPE string_table,
         lv_field TYPE string.  
DATA : t_table TYPE if_main=>elements_data_tab,
       data_table TYPE if_main=>elements_data_tab.
* get single attribute  wd_context->get_attribute(   
    EXPORTING  
    name =  `DATASOURCE`   
   IMPORTING    
     value = l_xstring ).
data: conv type ref to cl_abap_conv_in_ce.
    call method cl_abap_conv_in_ce=>create
      exporting
           input = l_xstring
           encoding = 'UTF-8'
           replacement = '?'
          ignore_cerr = abap_true
      receiving
          conv  = conv . 
conv->read( importing data = l_string ).

[color=orange] CALL FUNCTION 'HR_KR_XSTRING_TO_STRING'
    EXPORTING
      in_xstring = l_xstring
    IMPORTING
      out_string = l_string. 废除[/color]
SPLIT l_string  AT cl_abap_char_utilities=>newline INTO TABLE i_data.
* Bind With table Element.  
  LOOP AT i_data INTO l_string.
    SPLIT l_string AT cl_abap_char_utilities=>horizontal_tab INTO TABLE fields.   
  READ TABLE fields INTO lv_field INDEX 1.
    fs_table-name = lv_field.  
  READ TABLE fields INTO lv_field INDEX 2.
    fs_table-age = lv_field.   
  APPEND fs_table TO t_table1.
  ENDLOOP.
  lo_nd_sflight = wd_context->get_child_node( 'DATA_TAB' ).
  lo_nd_sflight->bind_table( t_table1 ).
ENDMETHOD.


DATASOURCE为xstring或string都可以。
废除部分其实无法正确将xstring转化为string。

在测试的时候需要将excel文件先保存为unicode的txt文件,然后再将txt文件保存为utf8格式导入方可。否则非utf8文本文件导入时会将文本所有内容在每一单元格显示。

  相关解决方案