zoukankan      html  css  js  c++  java
  • ABAP 对内表数据下载到EXCEL的几种方法

    1.FM:GUI_DOWNLOAD

     

    这是最基本的方法,对应 CLASS: CL_GUI_FRONTEND_SERVICES 的方法 GUI_DOWNLOAD

    注意参数 FILENAME 以xls 结尾这样在保存时可以保存为 excel.

    示例如下

    data:itab like table of  mara WITH HEADER LINE.

    DATA:BEGIN OF T_FIELDNAMES  OCCURS 0,

            NAME TYPE CHAR20,

         END OF T_FIELDNAMES.

    START-OF-SELECTION.

    select * from mara into table itab up to 10 rows.

          T_FIELDNAMES-NAME = '公司代码'.

          APPEND T_FIELDNAMES.

          T_FIELDNAMES-NAME = '功能范围'.

          APPEND T_FIELDNAMES.

    CALL FUNCTION 'GUI_DOWNLOAD'

      EXPORTING

        filename                        = 'C:1234.xls'

        FILETYPE                        = 'DAT'   

    "这里一般用DAT,如果用ASC则1000-不会显示为-1000,而dat会显示为-1000,如果用DBF则不会有缩进,即字符前面的空格会被除去,而且字符的前导0也会输出。

        CODEPAGE                        = '8404'

      tables

        data_tab                        = ITAB

        FIELDNAMES                      = T_FIELDNAMES

    这个函数虽然说比较简单,但当FILETYP为DAT 和ASC时,在我的2010版EXCEL打开时会弹出如下的对话框(不知道在EXCEL 2003会不会有这样的问题,知道的童鞋可以给个留言):

    内表数据下载到EXCEL的几种方法讨论

    原因: 以DAT和ASC格式存的EXCEL其实是TXT格式,与EXCEL格式不一致。

    2.FM:SAP_CONVERT_TO_XLS_FORMAT

    这个FM功能与GUI_DOWNLOAD类似,不过与EXCEL版本有兼容性的问题,本人在自己的系统上(excel 2010)测试此FM,给出了EXCEL文件格式无效,无法打开,在EXCEL2003暂时没试过。不过,这里还是给出示例:

    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             = itab  “内表

    * CHANGING

    *   I_TAB_CONVERTED_DATA       =

      EXCEPTIONS

        CONVERSION_FAILED          = 1

        OTHERS                     = 2

    3.FM:MS_EXCEL_OLE_STANDARD_DAT

        这个FM不仅仅能把数据传到EXCEL同时也会直接打开EXCEL文件。

       但是这个函数有一个缺点:当要把中文数据导入到EXCEL时就必有登陆中文的GUI运行程序,否则中文就会变成'#'号。

    DATA:BEGIN OF iT_FIELDNAMES  OCCURS 0,

            NAME TYPE CHAR20,

           END OF iT_FIELDNAMES.

     

          iT_FIELDNAMES-NAME = 'Company Code'. 

          APPEND iT_FIELDNAMES.

          iT_FIELDNAMES-NAME = 'Function Area'.

          APPEND iT_FIELDNAMES.

       iT_FIELDNAMES-NAME = '5'. "针对非C、N、D、T类型列的列名,函数有Bug

       APPEND iT_FIELDNAMES.

     

    CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT'

          EXPORTING

             file_name                       = 'C:johnson.XLSX'

    *        CREATE_PIVOT                    = 0

    *        DATA_SHEET_NAME                 = ' '

    *        PIVOT_SHEET_NAME                = ' '

    *        PASSWORD                        = ' '

    *        pASSWORD_OPTION                 = 0

          TABLES

    *        PIVOT_FIELD_TAB                 =

             DATA_TAB                        = itab

             FIELDNAMES                      = it_fieldnames

    *     EXCEPTIONS

    *        FILE_NOT_EXIST                  = 1

    *        FILENAME_EXPECTED               = 2

    *        cOMMUNICATION_ERROR             = 3

    *        oLE_OBJECT_METHOD_ERROR         = 4

    *        OLE_OBJECT_PROPERTY_ERROR       = 5

    *        INVALID_PIVOT_FIELDS            = 6

    *        DOWNLOAD_PROBLEM                = 7

    *        OTHERS                          = 8.

                        

    说明:应用这个FM时要注意的BUG:

    1、Fieldname数据类型会被强制转变为对应列的类型,如果转换失败则Dump

    2、如果连续两次或两次以上以上调用,列名会跑到数据区

     

    还有一个貌似是这个函数前身 EXCEL_OLE_STANDARD_DAT ,实现方法差不多,不过这个函数对某些表会报

    "data can't converted in unicode program" 的错误,所以还是建议采用最新的函数。

    4.FM: XXL_FULL_API

    这个作者还没有用过,不过有个参考示例se38:XXLTTEST

    5.OLE

    这种方式与上面几种比较优点在于能够定制EXCEL格式,不过比较麻烦。

    实现方法google

    6.ABAP2XLSX

    这是一个类包,是一群爱好者开发的一个专门用于将ABAP数据导入到EXCEL的类,包括对齐,合并,字体,着色等的设置,因为是面向对象的,相比OLE方式要简单,编写程序也就比较省力。

    这个方法一般用于需要定制EXCEL格式的情况下使用。

  • 相关阅读:
    chromedriver与chrome各版本及下载地址
    chromedriver和firefox driver的安装过程
    ubuntu python及python IDLE 的安装
    Ubuntu14.04安装及配置mysql5.7.19
    容器集群管理平台的比较
    Android调试神器stetho使用详解和改造
    Vue CLI 3搭建vue+vuex 最全分析
    不会PPT配色没关系,有这些配色网站,也能让你的PPT配色美到极致
    15个超赞的配色网站,建议收藏
    10个超好用的配色网站
  • 原文地址:https://www.cnblogs.com/hone201911/p/12218899.html
Copyright © 2011-2022 走看看