zoukankan      html  css  js  c++  java
  • 上传EXCEL和text到SAP内表 ,SAP内表导出EXCEL

    相关文章:http://www.cnblogs.com/caizjian/p/3271757.html     EXCEL 

                     http://www.cnblogs.com/caizjian/archive/2013/04/12/3016284.html   TXT

    *&---------------------------------------------------------------------*
    *& Report  ZTEST_UP_EXCEL
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*
    
    REPORT  ZTEST_UP_EXCEL.
    TYPE-POOLS TRUXS.
    *定义内表
    DATA:BEGIN OF gt_tab OCCURS 0,
         matnr TYPE matnr,        "物料
         maktx TYPE makt-maktx,   "描述
         date  TYPE dats,         "日期
         END OF gt_tab.
    
    *传输的参数
    DATA it_raw TYPE truxs_t_text_data.
    
    *定义输入框,也就是显示的路径
    PARAMETERS p_file TYPE IBIPPARMS-PATH .
    
    *这个只用在批处理这边  后面要紧接着下面的上传文件弹出选择框的函数
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
    
    *上传文件弹出选择框的函数
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
           field_name    = 'P_FILE'
        IMPORTING
          file_name     =   p_file.
    
    START-OF-SELECTION.
    
    CLEAR it_raw.
    
    *上传excel文件的函数
    CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
      EXPORTING
     "   I_FIELD_SEPERATOR          =                 分隔符,默认为tab
     "   I_LINE_HEADER              = 'X'               "X 表示取出表头
        i_tab_raw_data             = it_raw             "传输的参数,没有实际用处 但是必输
        i_filename                 = P_FILE             "文件路径
      TABLES
        i_tab_converted_data       = gt_tab[]           "导入到的内表
    * EXCEPTIONS
    *   CONVERSION_FAILED          = 1
    *   OTHERS                     = 2
              .
    IF sy-subrc <> 0.
    * Implement suitable error handling here
    ENDIF.
    BREAK-POINT.
    
    *=====把内表导出成excel
    CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
      EXPORTING
       I_FIELD_SEPERATOR          = ','
    *   I_LINE_HEADER              =
        i_filename                 =   P_FILE   "导出路径
    *   I_APPL_KEEP                = ' '
      tables
        i_tab_sap_data             = gt_tab[]   "导出内表
    * CHANGING
    *   I_TAB_CONVERTED_DATA       = it_raw
    * EXCEPTIONS
    *   CONVERSION_FAILED          = 1
    *   OTHERS                     = 2
              .
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    注意:

    1.  导出的话最好把字段类型先全部转换成字符型

    2、SAP_CONVERT_TO_XLS_FORMAT只能导出excel 不能导出txt

    3、TEXT_CONVERT_XLS_TO_SAP 既可以导入txt也可以导入excel

    4、TEXT_CONVERT_XLS_TO_SAP 导入excel或者txt的时候,金额或者含有小数类型的话 小于1的两位小数 导入到内表会被自动放大100倍 或者100倍,解决办法有两种
    第一种是把excel中该单元格中的金额转换成文本型(txt类型没法改,只能用第二种方法),不是单元格转换成文本,而是值,转换后单元格左上右有绿色小三角;
    第二种是把上传到的内表该字段定义为字符型,上传后再赋值给另外一张内表。

  • 相关阅读:
    自制的 MPlayer Skin
    mplayer filter 参数及效果
    可拖动的层DIV的完整源代码【转】
    Hibernate的检索方式(一)【转】
    HQL经典语句
    常适用的特效网页代码
    C#优化字符串操作【转】
    Hibernate的检索方式(二)【转】
    内联inline的使用方法【转】
    Hibernate的检索方式(三)【转】
  • 原文地址:https://www.cnblogs.com/caizjian/p/3016192.html
Copyright © 2011-2022 走看看