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. POJ 4118 开餐馆

    Description 北大信息学院的同学小明毕业之后打算创业开餐馆.现在共有n 个地点可供选择.小明打算从中选择合适的位置开设一些餐馆.这 n 个地点排列在同一条直线上.我们用一个整数序列m1, m ...

  2. c和c++如何把一个整数转化为string

    c和c++如何把一个整数转化为string C++: 一.string转int的方式 采用最原始的string, 然后按照十进制的特点进行算术运算得到int,但是这种方式太麻烦,这里不介绍了. 采用标 ...

  3. 实验:iscsi共享存储

    实验名称: iscsi共享存储 实验环境: 我们需要准备一个磁盘,对于这个磁盘我们需要使用,将这个磁盘空间共享给iscsi客户端: 实验需求: 我们这里使用两台服务器来实现iscsi共享存储: 1.指 ...

  4. Python中的*arg和**kwarg

    一个简单的函数 首先我们可以定一个简单的函数, 函数内部只考虑required_arg这一个形参(位置参数) def exmaple(required_arg): print required_arg ...

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

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

  6. C#中为什么不能再方法里定义静态变量(Static)

    c#的静态变量是在对象生成的时候分配内存空间的,而不是函数执行的时候. 如果在函数里定义,那么这个变量就需要在函数执行的时候分配内存空间,这是C#不允许的,至于为什么不允许,个是因为垃圾回收机制的问题 ...

  7. linux service命令解析(重要)

    我们平时都会用service xxx start来启动某个进程,那么它背后究竟执行了什么? 其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/service, ...

  8. CSS属性操作二

    9.float属性 基本浮动规则 先来了解一下block元素和inline元素在文档流中的排列方式. block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元 ...

  9. for-else和wihle-else组合用法

    当for和else组合一起使用的时候,for循环正常执行完毕,会执行else语句,否则,不会执行else语句 for i in range(10): if i == 2: break else: pr ...

  10. SVN 更新后Tomcat 启动时出现问题

    更新了svn后,启动本地的tomcat容器发现启动不了, 检查后发现是配置文件配置出现问题,因为我们的该项目 配置有tomcat与weblogic两种 , 而在我的web.xml中 默认配置的serv ...