zoukankan      html  css  js  c++  java
  • 2020.03.01 【ABAP随笔】- Excel批量导出-SAP_CONVERT_TO_XLS_FORMAT

    今天写一下SAP_CONVERT_TO_XLS_FORMAT 批量导出excel的函数

    部分功能代码如下:

    FORM frm_export_excel_1 .
    
      DATA li_filename TYPE rlgrap-filename.
      DATA ls_filename TYPE string.
      li_filename = p_file.
      ls_filename = p_file.
    
      CALL METHOD zcl_document_jxzhu=>download_template_to_frontend
        EXPORTING
          iv_fun           = '2'  "选择FUN的功能
          name_of_template = '物料主数据客制表' 
          iv_filepath      = ls_filename "当IV_FUN = 2时,保存路径iv_filepath必填 这样就不会弹框选择,可以引用函数外部的路径
    *     iv_relid         = 'MI'
          iv_objid         = 'ZMMT001'
        IMPORTING
          rv_filepath      = ls_filename
        EXCEPTIONS
          download_error   = 1
          OTHERS           = 2.
    
      WAIT UP TO 2 SECONDS."确保从服务器下载的模板保存下来,之后再打开输入。
      li_filename = ls_filename.
    
      SELECT * INTO CORRESPONDING FIELDS OF TABLE @lt_zmmt001 FROM zmmt001.
    
      READ TABLE lt_zmmt001 into data(ls_zmmt001) INDEX 1 .
    
      "为了防止格式的问题,使用这个函数的时候,输出最好用char型
      TYPES:BEGIN OF lty_excel,
              matnr TYPE char40,
              id    TYPE char10,
              f1    TYPE char10,
              f2    TYPE char10,
              f3    TYPE char10,
            END OF lty_excel.
      DATA lt_zmmt001_excel TYPE TABLE OF lty_excel.
    
      MOVE-CORRESPONDING lt_zmmt001 TO lt_zmmt001_excel.
    
      INSERT INITIAL LINE INTO lt_zmmt001_excel ASSIGNING FIELD-SYMBOL(<fs1>) INDEX 1.
      DATA tablestructure TYPE REF TO cl_abap_structdescr.
      tablestructure ?= cl_abap_typedescr=>describe_by_data( ls_zmmt001 ).
      LOOP AT tablestructure->components INTO DATA(ls_comps).
        ASSIGN COMPONENT sy-tabix OF STRUCTURE <fs1> TO FIELD-SYMBOL(<fs2>).
        IF sy-subrc EQ 0 .
          <fs2> = ls_comps-name.
        ENDIF.
      ENDLOOP.
    
      CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
        EXPORTING
    *     I_FIELD_SEPERATOR =
          i_line_header     = 'X'
          i_filename        = li_filename
    *     I_APPL_KEEP       = ' '
        TABLES
          i_tab_sap_data    = lt_zmmt001_excel
    * CHANGING
    *     I_TAB_CONVERTED_DATA       =
        EXCEPTIONS
          conversion_failed = 1
          OTHERS            = 2.
    
    ENDFORM.
    这里需要提一下,为了解决输出内容格式的问题:
    1.     先将一个Excel单位格属性设置为文本格式,然后保存下来,用SMW0将EXCEL上传到服务器上
    2.     用zcl_document_jxzhu=>download_template_to_fronten方法来讲模板下载下来

    3.   使用SAP_CONVERT_TO_XLS_FORMAT将内表数据导入到Excel

    关于

    zcl_document_jxzhu=>download_template_to_frontend的方法具体内容:https://www.cnblogs.com/jxzhu/p/12359692.html


    -Tab Zhu 不念过去 不畏将来

     

  • 相关阅读:
    mysql 游标查询
    mysql忘记root密码的解决
    java 两种缓存
    java 实现缓存
    android ndk
    本地计算机上的 MSSQLSERVER 服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务 [解决办法]
    选择WEB开发语言
    linux 查看硬件信息
    java 缓存 谈
    程序员相关
  • 原文地址:https://www.cnblogs.com/jxzhu/p/12392445.html
Copyright © 2011-2022 走看看