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

ABAP doi 导出程序的更多相关文章

  1. 【ABAP系列】SAP ABAP DOI展示EXCEL或WORD

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP DOI展示EX ...

  2. 导出程序界面(UI)到图片

    无意间看到这个需求,查阅了相关文章,有两篇不错的博客给出了解决方案,地址如下: 1.在WPF程序中将控件所呈现的内容保存成图像 2.随心所欲导出你的 UI 界面到 PDF 文件 主要使用的接口: Si ...

  3. ABAP更改现有程序

    语法: READ REPORT <prog> INTO <itab>. INSERT REPORT <prog> FROM  <itab>. 假定下列简 ...

  4. ABAP 加密解密程序

    用于对字符串的加密和解密: DATA: o_encryptor TYPE REF TO cl_hard_wired_encryptor, o_cx_encrypt_error TYPE REF TO ...

  5. 从Ecipse中导出程序至apk

    若未有数字证书: 1. 2. 3. 4. 5. 若已有数字证书: 上面的后3步改为

  6. abap 增强查找小程序

    *&---------------------------------------------------------------------* *& Report  ZEXIT *& ...

  7. 从Ecipse中导出程序至apk 分类: H1_ANDROID 2013-10-26 22:17 516人阅读 评论(0) 收藏

    若未有数字证书: 1. 2. 3. 4. 5. 若已有数字证书: 上面的后3步改为 版权声明:本文为博主原创文章,未经博主允许不得转载.

  8. JAVA Eclipse如何导出APK程序

    为了最快的导出程序,直接导出未签名的APK   但是大部分手机不允许安装未经签名的程序   导出签名的项目   设置密码,后面的都可以随便设置   这样最后生成的APK就可以直接双击完成安装     ...

  9. ABAP OO的八大理由

    原贴地址:http://scnblogs.techweb.com.cn/abaplv/archives/127.html 几年前SAP BASIS 4.6为ABAP扩展了OO功能,这是很多传统的ABA ...

随机推荐

  1. 1. node.js环境搭建 第一行代码

    一.NodeJs简介 NodeJS官网上的介绍: Node.js is a platform built on  Chrome's JavaScript runtime  for easily bui ...

  2. *lucene索引_的删除和更新

    [删除] [恢复删除] [强制删除] [优化和合并] [更新索引] 附: 代码: IndexUtil.java: package cn.hk.index; import java.io.File; i ...

  3. 有上下界的网络流 loj115 loj116 loj 117

    参考文章 无源汇有上下界的可行流 有源汇有上下界的最大流 有源汇有上下界的最小流 无源汇有上下界可行流 以 loj115 为例. 剥离出必要边与自由边. #include <iostream&g ...

  4. zoj 2724 Windows Message Queue

    Windows Message Queue Time Limit: 2 Seconds      Memory Limit: 65536 KB Message queue is the basic f ...

  5. 图的最小生成树——Kruskal算法

    Kruskal算法 图的最小生成树的算法之一,运用并查集思想来求出最小生成树. 基本思路就是把所有边从小到大排序,依次遍历这些边.如果这条边所连接的两个点在一个连通块里,遍历下一条边,如果不在,就把这 ...

  6. POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~

    Steps Time Limit: 1000MS   Memory Limit: 65536K       http://poj.org/problem?id=2590 Description One ...

  7. PTA 02-线性结构2 一元多项式的乘法与加法运算 (20分)

    原题地址 https://pta.patest.cn/pta/test/15/exam/4/question/710 5-2 一元多项式的乘法与加法运算   (20分) 设计函数分别求两个一元多项式的 ...

  8. server中intersect的用法

    intersect 就像数学中的交集一样, select nam from  tb_table1 intersect select name from  tb_table2  查询的是两个数据集的交集 ...

  9. bzoj 1503[NOI 2004] 郁闷的出纳员

    题目大意: 给4种操作 I:添加一个员工工资信息 A:增加所有员工的工资 S:减少所有员工的工资 F:询问工资第k高的员工的工资情况 自己做的第一道splay树的题目,初学找找感觉 #include ...

  10. 【尺取】HDU Problem Killer

    acm.hdu.edu.cn/showproblem.php?pid=5328 [题意] 给定一个长度为n的正整数序列,选出一个连续子序列,这个子序列是等差数列或者等比数列,问这样的连续子序列最长是多 ...