• ABAP doi 导出程序


    PERFORM FRM_OUTPUT_EXCEL_38 TABLES GT_RESULT USING 'ZHRPA038' LDF_PATH .

    FORM FRM_OUTPUT_EXCEL_38 TABLES PT_EXCEL TYPE STANDARD TABLE
                                        USING PV_TEMPLATE TYPE BDS_PROPVA
                                              PV_FILE     TYPE LOCALFILE.

      DATA:L_IREF_TEMPLATE    TYPE REF TO CL_BDS_DOCUMENT_SET,
           L_OREF_CONTAINER   TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
           L_IREF_CONTROL     TYPE REF TO I_OI_CONTAINER_CONTROL,
           L_IREF_ERROR       TYPE REF TO I_OI_ERROR,
           L_IREF_DOCUMENT    TYPE REF TO I_OI_DOCUMENT_PROXY,
           L_IREF_SPREADSHEET TYPE REF TO I_OI_SPREADSHEET,
           L_RETCODE          TYPE SOI_RET_STRING.

      DATA: LT_SIGNATURE TYPE SBDST_SIGNATURE,
            LW_SIGNATURE TYPE BAPISIGNAT,
            LT_URI       TYPE SBDST_URI,
            LW_URI       TYPE BAPIURI,
            LT_SHEET     TYPE SOI_SHEETS_TABLE,
            L_DOC        TYPE CNTL_HANDLE ,
            L_APL        TYPE OBJ_RECORD ,
            LW_SHEET     TYPE SOI_SHEETS.

      DATA: LT_FIELDS   TYPE STANDARD TABLE OF RFC_FIELDS,
            LS_FIELDS   TYPE RFC_FIELDS,
            LV_LAST_ROW TYPE I,
            LV_LAST_COL TYPE I.
      DATA:      GDF_ERROR  TYPE REF TO I_OI_ERROR,
                 GDS_ERRORS TYPE REF TO I_OI_ERROR OCCURS WITH HEADER LINE.

      DATA:LDF_OBJECTKEY TYPE BAPIBDS01-OBJKEY.
      CALL METHOD C_OI_CONTAINER_CONTROL_CREATOR=>GET_CONTAINER_CONTROL
        IMPORTING
          CONTROL = L_IREF_CONTROL
          RETCODE = L_RETCODE.

      CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

      CALL METHOD L_IREF_CONTROL->INIT_CONTROL
        EXPORTING
          R3_APPLICATION_NAME      = PV_TEMPLATE
          INPLACE_ENABLED          'X'
          INPLACE_SCROLL_DOCUMENTS 'X'
          PARENT                   = L_OREF_CONTAINER
        IMPORTING
          RETCODE                  = L_RETCODE.
      IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
        MESSAGE '保存Excel文件出错' TYPE 'E'.
      ENDIF.
      CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

      CREATE OBJECT L_IREF_TEMPLATE.
      LW_SIGNATURE-PROP_NAME  'BDS_KEYWORD'.
      LW_SIGNATURE-PROP_VALUE = PV_TEMPLATE.
      APPEND LW_SIGNATURE TO LT_SIGNATURE.

      REFRESH LT_URI.
      CLEAR LDF_OBJECTKEY.
      MOVE PV_TEMPLATE TO LDF_OBJECTKEY.
      CALL METHOD L_IREF_TEMPLATE->GET_WITH_URL
        EXPORTING
          CLASSNAME       'SOFFICEINTEGRATION'
          CLASSTYPE       'OT'
          OBJECT_KEY      = LDF_OBJECTKEY
        CHANGING
          URIS            = LT_URI
          SIGNATURE       = LT_SIGNATURE
        EXCEPTIONS
          NOTHING_FOUND   1
          ERROR_KPRO      2
          INTERNAL_ERROR  3
          PARAMETER_ERROR 4
          NOT_AUTHORIZED  5
          NOT_ALLOWED     6.

      CLEAR LW_URI.
      READ TABLE LT_URI INTO LW_URI INDEX 1.
      IF SY-SUBRC <> 0.
        MESSAGE '请检查EXCEL模板不存在或者设置不正确' TYPE 'E'.
      ENDIF.
      CHECK SY-SUBRC 0.

      CALL METHOD L_IREF_CONTROL->GET_DOCUMENT_PROXY
        EXPORTING
          DOCUMENT_TYPE  'Excel.Sheet'
        IMPORTING
          DOCUMENT_PROXY = L_IREF_DOCUMENT
          RETCODE        = L_RETCODE.
      IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
        MESSAGE '保存Excel文件出错' TYPE 'E'.
      ENDIF.
      CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

      CALL METHOD L_IREF_DOCUMENT->OPEN_DOCUMENT
        EXPORTING
          DOCUMENT_URL = LW_URI-URI
          OPEN_INPLACE 'X'
        IMPORTING
          RETCODE      = L_RETCODE.
      IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
        MESSAGE '保存Excel文件出错' TYPE 'E'.
      ENDIF.
      CHECK L_RETCODE = C_OI_ERRORS=>RET_OK.

      FREE L_IREF_ERROR.

      CALL METHOD L_IREF_DOCUMENT->GET_SPREADSHEET_INTERFACE
        IMPORTING
          ERROR           = L_IREF_ERROR
          SHEET_INTERFACE = L_IREF_SPREADSHEET.

      CALL METHOD L_IREF_SPREADSHEET->GET_SHEETS
        IMPORTING
          SHEETS = LT_SHEET
          ERROR  = L_IREF_ERROR.

      CHECK L_IREF_ERROR->ERROR_CODE = C_OI_ERRORS=>RET_OK.

      CLEAR LW_SHEET.


      LV_LAST_ROW LINES( PT_EXCEL ).

      READ TABLE LT_SHEET INTO LW_SHEET INDEX 1.
      CHECK SY-SUBRC 0.

      CALL METHOD L_IREF_SPREADSHEET->SELECT_SHEET
        EXPORTING
          NAME  = LW_SHEET-SHEET_NAME
        IMPORTING
          ERROR = L_IREF_ERROR.


      CHECK L_IREF_ERROR->ERROR_CODE = C_OI_ERRORS=>RET_OK.
      "calculate The columns of Data
      REFRESH LT_FIELDS.
      CALL FUNCTION 'DP_GET_FIELDS_FROM_TABLE'
        TABLES
          DATA   = PT_EXCEL
          FIELDS = LT_FIELDS.


      LV_LAST_COL LINES( LT_FIELDS ).

      CALL METHOD L_IREF_SPREADSHEET->SET_SELECTION
        EXPORTING
          LEFT    1
          TOP     2
          ROWS    = LV_LAST_ROW
          COLUMNS = LV_LAST_COL.

      CALL METHOD L_IREF_SPREADSHEET->INSERT_RANGE
        EXPORTING
          COLUMNS = LV_LAST_COL
          ROWS    = LV_LAST_ROW
          NAME    = PV_TEMPLATE.

      CALL METHOD L_IREF_SPREADSHEET->INSERT_ONE_TABLE
        EXPORTING
          DATA_TABLE   = PT_EXCEL[]
          FIELDS_TABLE = LT_FIELDS
          RANGENAME    = PV_TEMPLATE.



      CALL METHOD L_IREF_DOCUMENT->SAVE_AS
        EXPORTING
          FILE_NAME = PV_FILE.

      CALL METHOD L_IREF_DOCUMENT->RELEASE_DOCUMENT
        IMPORTING
          RETCODE = L_RETCODE.
      IF L_RETCODE <> C_OI_ERRORS=>RET_OK.
        MESSAGE '保存Excel文件出错' TYPE 'E'.
      ELSE.
        MESSAGE 'Excel文件已保存' TYPE 'S'.
      ENDIF.
      FREE: L_IREF_SPREADSHEET,
            L_IREF_DOCUMENT.

      CALL METHOD L_IREF_CONTROL->RELEASE_ALL_DOCUMENTS.
      CALL METHOD L_IREF_CONTROL->DESTROY_CONTROL.
    ENDFORM.                    " FRM_OUTPUT_EXCEL

  • 相关阅读:
    python 爬虫 杂七杂八
    QPS和并发数
    ConcurrentSkipListMap/Set 基于跳表的Map和Set
    ForkJoinPool
    org.springframework.util.FileCopyUtils
    mongodb 基本概念
    mysql 子查询
    ConcurrentHashMap 并发HashMap
    mongodb 查询
    org.springframework.util.ReflectionUtils
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6275025.html
Copyright © 2020-2023  润新知