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 0 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

最新文章

  1. 使用qmake构建程序(有关.pro和.vcproj编译选项对应关系)
  2. 析构函数和Dispose的使用区别
  3. loj 1055(bfs)
  4. 【Tsinghua OJ】隧道(Tunel)问题
  5. 使用go tool pprof分析内存泄漏、CPU消耗
  6. iOS 网络请求NSURLSession
  7. 打包并发布自己的Android应用(eclipse)
  8. 面向对象基础3(class0523)
  9. Qt读取JSON和XML数据
  10. Nginx的HTTP模块
  11. Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property &#39;URIType&#39; of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]
  12. ssh连接异常:read from socket failed connection reset by peer
  13. samba的安装和配置
  14. WordPress主题开发:footer.php
  15. mysql -- this is incompatible with sql_mode=only_full_group_by
  16. Cglib源码分析 invoke和invokeSuper的差别(转)
  17. day11:装饰器
  18. HTTP请求/响应报文结构
  19. MySQL的group_concat()函数合并多行数据
  20. 【Android UI】如何做一个纯粹的Android app UI 设计

热门文章

  1. ssm+activiti+maven
  2. 南阳理工 58 最少步数 (DFS)
  3. 404 Not Found 由来
  4. resultType返回的是集合中的元素类型
  5. BZOJ3027 - [CEOI2004]Sweet
  6. 【贪心】codeforces D. Minimum number of steps
  7. 【收藏】下载Chrome商店插件的方法,万恶的gwd
  8. spring mvc dispatcherServlet
  9. vagrant的学习 之 Yii2
  10. [bzoj2780][Spoj8093]Sevenk Love Oimaster_广义后缀自动机