SAP ABAP基础语法-Excel上传(十)

EXCEL BDS模板上传及赋值

上传模板事务代码:OAER

l  功能代码:向EXCEL模板中写入数据示例代码如下

REPORT  ZEXCEL_DOI.
“doi type pools
TYPE-POOLS: soi.
*SAP Desktop Office Integration Interfaces
DATA: container TYPE REF TO cl_gui_custom_container,control TYPE REF TO i_oi_container_control,document TYPE REF TO i_oi_document_proxy,spreadsheet TYPE REF TO i_oi_spreadsheet,error TYPE REF TO i_oi_error,errors TYPE REF TO i_oi_error OCCURS 0 WITH HEADER LINE.
*dynpro fields
CONTROLS: exceldata TYPE TABLEVIEW USING SCREEN 0100.
DATA: tablename(10),ok_code(15),save_ok(15),row(4),column(4),data(39).
*spreadsheet interface structures of the selected R/3 table
DATA: cellitem TYPE soi_generic_item,rangeitem TYPE soi_range_item,ranges TYPE soi_range_list,excel_input TYPE soi_generic_table,excel_input_wa TYPE soi_generic_item,initialized(1),retcode TYPE soi_ret_string.
*screen fields
SET SCREEN 100.
INCLUDE ZEXCEL_DOI_STATUS_0100O01.
*&———————————————————————*
*&      Module  USER_COMMAND_0100  INPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE USER_COMMAND_0100 INPUT.save_ok = ok_code.CLEAR ok_code.CASE save_ok.WHEN ‘BACK’.SET SCREEN 0.WHEN ‘OUTPUT’.DATA: fields_table TYPE TABLE OF rfc_fields,tabname TYPE x030l-tabname,ret TYPE i VALUE 0.CHECK NOT tablename IS INITIAL.tabname = tablename.DATA: dref TYPE REF TO data,dref_it TYPE REF TO data,len_table TYPE i,len_excel_len TYPE i.FIELD-SYMBOLS: <tablewa> TYPE any,<it_table> TYPE any table.CATCH SYSTEM-EXCEPTIONS create_data_unknown_type = 1OTHERS = 2.CREATE DATA dref TYPE (tabname).CREATE DATA dref_it TYPE TABLE OF (tabname).ENDCATCH.IF sy-subrc <> 0.EXIT.ENDIF.ASSIGN: dref->* TO <tablewa>,dref_it->* TO <it_table>.DATA: count TYPE i.CLEAR count.DATA: BEGIN OF la_row,row TYPE c LENGTH 500,END OF la_row,excel_table LIKE TABLE OF la_row,myrow TYPE c LENGTH 500.REFRESH excel_table.SELECT * INTO TABLE <it_table>FROM (tabname).“create an excel range for dataDATA: rows_number TYPE i,columns_number TYPE i.CALL FUNCTION ‘RFC_GET_STRUCTURE_DEFINITION’EXPORTINGtabname          = tabnameTABLESfields           = fields_tableEXCEPTIONStable_not_active = 1OTHERS           = 2.DESCRIBE TABLE fields_table LINES columns_number.DESCRIBE TABLE <it_table> LINES rows_number.CALL METHOD spreadsheet->insert_range_dimEXPORTING name = ‘SAP_Table’top  = ‘2′left = ‘2′rows = rows_numberno_flush = ‘X’columns = columns_numberIMPORTING error = errors.APPEND errors.CALL METHOD spreadsheet->set_colorEXPORTING rangename = ‘SAP_Table’back = ‘50′front = ‘2′no_flush = ‘X’IMPORTING error = errors.APPEND errors.“Create range for commentsCALL METHOD spreadsheet->insert_range_dimEXPORTING name = ‘SAP_Comments’top  = ‘2′left = ‘1′rows = rows_numberno_flush = ‘X’columns = 1IMPORTING error = errors.APPEND errors.CALL METHOD spreadsheet->set_colorEXPORTING rangename = ‘SAP_Comments’back = ‘25′front = ‘2′no_flush = ‘X’IMPORTING error = errors.APPEND errors.DATA: title TYPE c LENGTH 30.REFRESH:ranges,excel_input.rangeitem-name = ‘SAP_Comments’.rangeitem-columns = 1.rangeitem-rows = 1.APPEND rangeitem TO ranges.excel_input_wa-column = 1.excel_input_wa-row = 1.CONCATENATE ‘R/3 table’ tabname ‘- comments’ INTO titleSEPARATED BY space.excel_input_wa-value = title.APPEND excel_input_wa TO excel_input.CALL METHOD spreadsheet->set_ranges_dataEXPORTING ranges = rangescontents = excel_inputIMPORTING error = errors.APPEND errors.“transfer R/3 table data into excel rangeCALL METHOD spreadsheet->insert_one_tableEXPORTING data_table = <it_table>ddic_name  = tabnamerangename  = ‘SAP_Table’no_flush   = ‘X’wholetable = ‘X’IMPORTING error = errors.APPEND errors.“protect the R/3 data against inputCALL METHOD spreadsheet->fit_widestEXPORTING name = spaceno_flush = ‘X’.CALL METHOD spreadsheet->protect_rangeEXPORTING name = ‘SAP_Table’protect = ‘X’no_flush = ‘X’IMPORTING error = errors.APPEND errors.“no flush automation queueCALL METHOD control->set_focusEXPORTING no_flush = ‘ ’IMPORTING error = errors.APPEND errors.LOOP AT errors.CALL METHOD errors->raise_messageEXPORTING type = ‘E’.ENDLOOP.FREE errors.REFRESH:excel_input,ranges.CLEAR :excel_input_wa,rangeitem.ENDCASE.
ENDMODULE.                 “ USER_COMMAND_0100  INPUT
*&———————————————————————*
*&      Module  CREATE_BASIC_OBJECTS  OUTPUT
*&———————————————————————*
*       text
*———————————————————————-*
MODULE CREATE_BASIC_OBJECTS OUTPUT.CHECK initialized IS INITIAL.“first get doi i_oi_container_control interfaceCALL METHOD c_oi_container_control_creator=>get_container_controlIMPORTING control = controlerror   = error.“check no errors occuredCALL METHOD error->raise_message EXPORTING type = ‘E’.“create a control container as defined in dynpro 0100CREATE OBJECT containerEXPORTING container_name = ‘CONTAINER’.“initialize the SAP DOI container,tell it to run in the container“specified above and tell it to run excel inplaceCALL METHOD control->init_controlEXPORTING r3_application_name = ‘R/3 Basis’inplace_enabled = ”inplace_scroll_documents = ”parent = containerregister_on_close_event = ‘X’register_on_custom_event = ‘X’no_flush = ‘X’IMPORTING error = errors.
* save error object in collectionAPPEND errors.
* ask the SAP DOI container for a i_oi_document_proxy for ExelCALL METHOD control->get_document_proxyEXPORTING document_type = ‘Excel.Sheet’no_flush = ‘X’IMPORTING document_proxy = documenterror = errors.
*and then create a new Excel SheetCALL METHOD document->create_documentEXPORTING open_inplace = ”document_title = ‘R/3 table contents in Excel’no_flush = ‘X’IMPORTING error = errors.APPEND errors.
* check if our document proxy can serve a spread sheet interfaceDATA: has TYPE i.CALL METHOD document->has_spreadsheet_interfaceEXPORTING no_flush = ‘X’IMPORTING is_available = haserror = errors.APPEND errors.CALL METHOD document->get_spreadsheet_interfaceEXPORTING no_flush = ‘ ’IMPORTING sheet_interface = spreadsheeterror = errors.APPEND errors.
* now loop through error collection because
* Get_spreadsheet_interface flushed and synchronized
* the automation queue !LOOP AT errors.CALL METHOD errors->raise_messageEXPORTING  type     = ‘E’.ENDLOOP.initialized = ‘X’.
ENDMODULE.                 “ CREATE_BASIC_OBJECTS  OUTPUT
l  打开excel模板示例代码如下:METHODS: open_excel_template IMPORTING                              im_clsnam TYPE sbdst_classname                                         im_clstyp TYPE sbdst_classtype                                   im_objkey TYPE sbdst_object_key                                  im_desc   TYPE char255,   “打开报表模板
*———————————————-*
* METHOD open_excel_template                   *
* 打开excel模板
*———————————————-*METHOD open_excel_template.DATA: locint_signature   TYPE sbdst_signature,locint_uris        TYPE sbdst_uri,locwa_signature    LIKE LINE OF locint_signature,locwa_uris         LIKE LINE OF locint_uris.
*   Create object for cl_bds_document_setCREATE OBJECT r_document.
*   Get Document with URLlocwa_signature-prop_name  = ‘DESCRIPTION’.
*   Description of the table template in OAORlocwa_signature-prop_value = im_desc.APPEND locwa_signature TO locint_signature.CALL METHOD r_document->get_with_urlEXPORTINGclassname       = im_clsnamclasstype       = im_clstypobject_key      = im_objkeyCHANGINGuris            = locint_urissignature       = locint_signatureEXCEPTIONSnothing_found   = 1error_kpro      = 2internal_error  = 3parameter_error = 4not_authorized  = 5not_allowed     = 6.IF sy-subrc NE 0.MESSAGE ‘Error Retrieving Document’ TYPE ‘E’.ENDIF.
*   Create container controlCALL METHOD c_oi_container_control_creator=>get_container_controlIMPORTINGcontrol = r_controlerror   = r_error.IF r_error->has_failed = ‘X’.CALL METHOD c_oi_errors=>raise_messageEXPORTINGtype = ‘E’.ENDIF.
* Initialize Custom ControlCREATE OBJECT r_containerEXPORTINGcontainer_name = ‘TAB_EXCEL’. “Custom Control NameCALL METHOD r_control->init_controlEXPORTINGr3_application_name      = ‘EXCEL INPLACE BDS’inplace_enabled          = abap_falseinplace_scroll_documents = abap_trueparent                   = r_containerIMPORTINGerror                    = r_error.IF r_error->has_failed = ‘X’.CALL METHOD c_oi_errors=>raise_messageEXPORTINGtype = ‘E’.ENDIF.
* Create object for cl_bds_document_setCREATE OBJECT r_document.READ TABLE locint_uris INTO locwa_uris INDEX 1.CALL METHOD r_control->get_document_proxyEXPORTINGdocument_type  = ‘Excel.Sheet’IMPORTINGdocument_proxy = r_proxyerror          = r_error.IF r_error->has_failed = ‘X’.CALL METHOD c_oi_errors=>raise_messageEXPORTINGtype = ‘E’.ENDIF.
*   Open DocumentCALL METHOD r_proxy->open_documentEXPORTINGdocument_url     = locwa_uris-uriopen_inplace     = abap_falseprotect_document = abap_false “Protect Document initiallyIMPORTINGerror            = r_error.IF r_error->has_failed = ‘X’.CALL METHOD c_oi_errors=>raise_messageEXPORTINGtype = ‘E’.ENDIF.
*   Get Excel InterfaceCALL METHOD r_proxy->get_spreadsheet_interfaceIMPORTINGsheet_interface = r_excelerror           = r_error.IF r_error->has_failed = ‘X’.CALL METHOD c_oi_errors=>raise_messageEXPORTINGtype = ‘E’.ENDIF.CALL METHOD r_proxy->get_spreadsheet_interfaceIMPORTINGsheet_interface = r_handle.ENDMETHOD.
ENDCLASS.
l  逐个CELL输入数据的示例代码如下:fill_cell IMPORTING im_x TYPE iim_y TYPE iim_value TYPE char255,      “填充单元格
———————————————-*
* METHOD fill_cell                             *
* 向excel的单元格中插入数据
*———————————————-*METHOD fill_cell.DATA: lv_columns TYPE i,lv_rows TYPE i.lv_columns = 1.lv_rows = 1.CALL METHOD r_handle->insert_range_dimEXPORTINGNAME = ‘cell’NO_FLUSH = ‘X’TOP = im_xLEFT = im_yROWS = lv_rowsCOLUMNS = lv_columnsIMPORTINGerror = r_error.DATA: lt_ran TYPE soi_range_list,lt_cont TYPE soi_generic_table,la_ran LIKE LINE OF lt_ran,la_cont LIKE LINE OF lt_cont.la_ran-name = ‘cell’.la_ran-columns = lv_columns.la_ran-rows = lv_rows.APPEND la_ran TO lt_ran.la_cont-column = 1.la_cont-row = 1.la_cont-value = im_value.APPEND la_cont TO lt_cont.CALL METHOD r_handle->set_ranges_dataEXPORTING ranges = lt_rancontents = lt_contIMPORTINGerror = r_error.CALL METHOD r_handle->fit_widestEXPORTINGname  = spaceno_flush = ‘X’.ENDMETHOD.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/186385.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL_Learn08(坐标系统与3D空间)

目录 1. 概述 2. 局部空间 3. 世界空间 4. 观察空间 5. 剪裁空间 6. 初入3D 7. 3D旋转 8. 多个正方体 9. 观察视角 1. 概述 OpenGL希望在每次顶点着色器运行后&#xff0c;我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说&#x…

uniapp使用vue

uniapp集成了Vuex&#xff0c;&#xff0c;并不需要安装vuex 定义自己的vuex vuex中独立命名空间&#xff1a; 可以在模块中使用 namespaced 属性&#xff0c;设置为 true&#xff0c;&#xff0c;这样做的好处是&#xff0c;&#xff0c;不同模块之间的state&#xff0c;mut…

istio 学习笔记

参考&#xff1a;istio简介和基础组件原理&#xff08;服务网格Service Mesh&#xff09;-CSDN博客 Istio 微服务框架 服务治理。 Istio的关键功能: HTTP/1.1&#xff0c;HTTP/2&#xff0c;gRPC和TCP流量的自动区域感知负载平衡和故障切换。 通过丰富的路由规则&#xf…

12 # 手写 findIndex 方法

findIndex 的使用 findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回 -1。 <script>var arr [1, 3, 5, 7, 8];var result arr.findIndex(function (ele, index, array) {console.log("ele----->", ele);conso…

C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML

目录 一、新建控制台应用和数据库连接 二、手动添加System.Data.Linq程序包 三、手动添加System.Data.SqlClient程序包 四、再次操作DataClasses1.dbml 五、示例 1.源码 2.xml文件 默认安装的.NET 7.0控制台应用是不支持使用LINQtoSQL、LINQtoXML的。 默认安装的.NET F…

如何用Java高效地存入一万条数据?这可能是你面试成功的关键!

大家好&#xff0c;我是你们的小米&#xff0c;一个热爱技术、喜欢分享的29岁程序猿。今天我要和大家聊一聊一个常见的面试题&#xff1a;在Java中&#xff0c;当我们需要将一万条数据存储到数据库时&#xff0c;如何能够提高存储效率呢&#xff1f; 在面试过程中&#xff0c;…

设计模式(3)-结构型模式

结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承机制来组织接口和类&#xff0c;后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低&#xff0c;满足“合成复用原则…

【机器学习】梯度下降预测波士顿房价

文章目录 前言一、数据集介绍二、预测房价代码1.引入库2.数据3.梯度下降 总结 前言 梯度下降算法学习。 一、数据集介绍 波士顿房价数据集&#xff1a;波士顿房价数据集&#xff0c;用于线性回归预测 二、预测房价代码 1.引入库 from sklearn.linear_model import Linear…

Python爬虫实战-批量爬取美女图片网下载图片

大家好&#xff0c;我是python222小锋老师。 近日锋哥又卷了一波Python实战课程-批量爬取美女图片网下载图片&#xff0c;主要是巩固下Python爬虫基础 视频版教程&#xff1a; Python爬虫实战-批量爬取美女图片网下载图片 视频教程_哔哩哔哩_bilibiliPython爬虫实战-批量爬取…

【Java】I/O流—缓冲流的基础入门和文件拷贝的实战应用

&#x1f33a;个人主页&#xff1a;Dawn黎明开始 &#x1f380;系列专栏&#xff1a;Java ⭐每日一句&#xff1a;你能坚持到什么程度&#xff0c;决定你能达到什么高度 &#x1f4e2;欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 文章目录 一.&…

RapidSSL证书

RapidSSL是一家经验丰富的证书颁发机构&#xff0c;主要专注于提供标准和通配符SSL证书的域验证SSL证书。在2017年被DigicertCA收购后&#xff0c;RapidSSL改进了技术并开始使用现代基础设施。专注于为小型企业和网站提供基本安全解决方案的SSL加密。RapidSSL它具有强大的浏览器…

ZYNQ_project:key_led

条件里是十进制可以不加进制说明&#xff0c;编译器默认是10进制&#xff0c;其他进制要说明。 实验目标&#xff1a; 模块框图&#xff1a; 时序图&#xff1a; 代码&#xff1a; include "para.v"module key_filter (input wire …

python3.8.10虚拟环境安装talib总报平台不匹配

目录 环境&#xff1a; 需求&#xff1a; 问题&#xff1a; 概述 过程及解决 解决方案总结 环境&#xff1a; 操作系统&#xff1a;window10、64位 开发工具&#xff1a;pycharm python版本&#xff1a;python3.8.10 需求&#xff1a; 在python3.8.10的虚拟环境中安…

短短 45 分钟发布会,OpenAI 如何再次让 AI 圈一夜未眠

目录 前言 1. GPT-4 Turbo&#xff0c;更快&#xff0c;更省钱 2. GPT Store 来了&#xff01; 3. 零代码创建 AI Agent 前言 对于 AI 行业从业者来说&#xff0c;刚刚可能是一夜未眠。 北京时间 11 月 7 日凌晨&#xff0c;美国人工智能公司 OpenAI 的开发者大会正式开…

HTTParty库数据抓取代码示例

使用HTTParty库的网络爬虫程序&#xff0c; ruby require httparty # 设置服务器 proxy_host proxy_port # 使用HTTParty库发送HTTP请求获取网页内容 response HTTParty.get(/, :proxy > { :host > proxy_host, :port > proxy_port }) # 打印获取的网页内容 …

亚马逊云科技产品测评』活动征文|通过使用Amazon Neptune来预测电影类型初体验

文章目录 福利来袭Amazon Neptune什么是图数据库为什么要使用图数据库什么是Amazon NeptuneNeptune 的特点 快速入门环境搭建notebook 图神经网络快速构建加载数据配置端点Gremlin 查询清理 删除环境S3 存储桶删除 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转…

Sketch是什么软件,如何收费和获得免费版

Sketch软件为设计师构建了一个优秀的本地Mac应用程序。Sketch是整个设计过程的平台&#xff0c;通过基于Web的工具共享工作&#xff0c;获取反馈&#xff0c;测试原型&#xff0c;并将其移交给任何浏览器。Sketch软件的定价根据不同的许可类型和订阅计划而变化。本文从Sketch软…

LeetCode算法题解(回溯、难点)|LeetCode332. 重新安排行程

LeetCode332. 重新安排行程 题目链接&#xff1a;332. 重新安排行程 题目描述&#xff1a; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08…

密码学 - RSA签名算法

实验九 RSA签名算法- 一、实验目的 通过实验掌握GMP开源软件的用法&#xff0c;理解RSA数字签名算法&#xff0c;学会RSA数字签名算法程序设计&#xff0c;提高一般数字签名算法的设计能力。 二、实验要求 (1)基于GMP开源软件&#xff0c;实现RSA签名算法。 (2)要求有对应…

浅谈多回路电表在荷兰光伏系统配电项目中的应用

1.背景信息 Background&#xff1a; 随着全球化石能源&#xff08;石油&#xff0c;煤炭&#xff09;越来越接近枯竭&#xff0c;污染日趋严重&#xff0c;气候日益变暖等问题&#xff0c;全球多个国家和地区相继出台了法规政策&#xff0c;推动了光伏产业的发展。但是现有的光…