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 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 导出程序的更多相关文章
- 【ABAP系列】SAP ABAP DOI展示EXCEL或WORD
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP DOI展示EX ...
- 导出程序界面(UI)到图片
无意间看到这个需求,查阅了相关文章,有两篇不错的博客给出了解决方案,地址如下: 1.在WPF程序中将控件所呈现的内容保存成图像 2.随心所欲导出你的 UI 界面到 PDF 文件 主要使用的接口: Si ...
- ABAP更改现有程序
语法: READ REPORT <prog> INTO <itab>. INSERT REPORT <prog> FROM <itab>. 假定下列简 ...
- ABAP 加密解密程序
用于对字符串的加密和解密: DATA: o_encryptor TYPE REF TO cl_hard_wired_encryptor, o_cx_encrypt_error TYPE REF TO ...
- 从Ecipse中导出程序至apk
若未有数字证书: 1. 2. 3. 4. 5. 若已有数字证书: 上面的后3步改为
- abap 增强查找小程序
*&---------------------------------------------------------------------* *& Report ZEXIT *& ...
- 从Ecipse中导出程序至apk 分类: H1_ANDROID 2013-10-26 22:17 516人阅读 评论(0) 收藏
若未有数字证书: 1. 2. 3. 4. 5. 若已有数字证书: 上面的后3步改为 版权声明:本文为博主原创文章,未经博主允许不得转载.
- JAVA Eclipse如何导出APK程序
为了最快的导出程序,直接导出未签名的APK 但是大部分手机不允许安装未经签名的程序 导出签名的项目 设置密码,后面的都可以随便设置 这样最后生成的APK就可以直接双击完成安装 ...
- ABAP OO的八大理由
原贴地址:http://scnblogs.techweb.com.cn/abaplv/archives/127.html 几年前SAP BASIS 4.6为ABAP扩展了OO功能,这是很多传统的ABA ...
随机推荐
- 1. node.js环境搭建 第一行代码
一.NodeJs简介 NodeJS官网上的介绍: Node.js is a platform built on Chrome's JavaScript runtime for easily bui ...
- *lucene索引_的删除和更新
[删除] [恢复删除] [强制删除] [优化和合并] [更新索引] 附: 代码: IndexUtil.java: package cn.hk.index; import java.io.File; i ...
- 有上下界的网络流 loj115 loj116 loj 117
参考文章 无源汇有上下界的可行流 有源汇有上下界的最大流 有源汇有上下界的最小流 无源汇有上下界可行流 以 loj115 为例. 剥离出必要边与自由边. #include <iostream&g ...
- zoj 2724 Windows Message Queue
Windows Message Queue Time Limit: 2 Seconds Memory Limit: 65536 KB Message queue is the basic f ...
- 图的最小生成树——Kruskal算法
Kruskal算法 图的最小生成树的算法之一,运用并查集思想来求出最小生成树. 基本思路就是把所有边从小到大排序,依次遍历这些边.如果这条边所连接的两个点在一个连通块里,遍历下一条边,如果不在,就把这 ...
- POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~
Steps Time Limit: 1000MS Memory Limit: 65536K http://poj.org/problem?id=2590 Description One ...
- PTA 02-线性结构2 一元多项式的乘法与加法运算 (20分)
原题地址 https://pta.patest.cn/pta/test/15/exam/4/question/710 5-2 一元多项式的乘法与加法运算 (20分) 设计函数分别求两个一元多项式的 ...
- server中intersect的用法
intersect 就像数学中的交集一样, select nam from tb_table1 intersect select name from tb_table2 查询的是两个数据集的交集 ...
- bzoj 1503[NOI 2004] 郁闷的出纳员
题目大意: 给4种操作 I:添加一个员工工资信息 A:增加所有员工的工资 S:减少所有员工的工资 F:询问工资第k高的员工的工资情况 自己做的第一道splay树的题目,初学找找感觉 #include ...
- 【尺取】HDU Problem Killer
acm.hdu.edu.cn/showproblem.php?pid=5328 [题意] 给定一个长度为n的正整数序列,选出一个连续子序列,这个子序列是等差数列或者等比数列,问这样的连续子序列最长是多 ...