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. Mybatis中实体类属性和数据列之间映射的四种办法

    http://blog.csdn.net/lmy86263/article/details/53150091 Mybatis不像hibernate中那么自动化,通过@Column注解或者直接使用实体类 ...

  2. LeetCode(86) Partition List

    题目 Given a linked list and a value x, partition it such that all nodes less than x come before nodes ...

  3. 【HIHOCODER 1044】题目1 : 状态压缩·一

    描述 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市--那座城市即将举行美食节! 但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票-- ...

  4. .NET如何进行数据库连接

    在.net中连接sql server数据库,需引入System.Data.SqlClient命名空间: 1,最简单的连接方式: SqlConnection conn = new SqlConnecti ...

  5. 使用cURL和用户名和密码?

    问题描述 我想访问一个需要用户名/密码的URL.我想尝试用 curl 来访问它.现在我正在做一些事情: curl http://api.somesite.com/test/blah?something ...

  6. 【贪心+DFS】D. Field expansion

    http://codeforces.com/contest/799/problem/D [题意] 给定长方形的两条边h和w,你可以从给出的n个数字中随意选出一个x,把h或者w乘上x(每个x最多用一次) ...

  7. hdu 3371

    #include<stdio.h> #include<stdlib.h> #define N 501 struct node { int x,y,dis; }road[N*N] ...

  8. hdu4135 Co-prime【容斥原理】

    Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  9. bzoj2190 [SDOI2008]仪仗队 - 筛法 - 欧拉函数

    作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图).    ...

  10. [转]eclipse的android智能提示设置

    以往 我们往往在输入 "." 然后 alt+/ 来进行智能提示,下面这个方法,可以帮你大幅度的提高智能打开 Eclipse -> Window -> Perferenc ...