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.
相关文章:
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_c…...
记录一次某某虚拟机的逆向
导语 学了一段时间的XPosed,发现XPosed真的好强,只要技术强,什么操作都能实现... 这次主要记录一下我对这款应用的逆向思路 apk检查 使用MT管理器检查apk的加壳情况 发现是某数字的免费版本 直接使用frida-dexdump 脱下来后备用 应用分…...
upload-labs关卡7(基于黑名单的空格绕过)通关思路
文章目录 前言一、回顾上一关知识点二、靶场第七关通关思路1、看源代码2、空格绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试…...
CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。
CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。 概述 时空函数是一种用于描述时空结构和演化的函数。它在物理学、数学和计算机科学等领域中都有广泛的应用。时空函数可以描述物体在时空中的位置、速度、加速度以及其他相关属性。 用法 CnosDB 将使用一种全新的…...
python实现炒股自动化,个人账户无门槛量化交易的开始
本篇作为系列教程的引子,对股票量化程序化自动交易感兴趣的朋友可以关注我,现在只是个粗略计划,后续会根据需要重新调整,并陆续添加内容。 股票量化程序化自动交易接口 很多人在找股票个人账户实现程序化自动交易的接口࿰…...
推荐系统笔记--Swing模型的原理
1--Swing模型的引入 在 Item CF 召回中,物品的相似度是基于其受众的交集来衡量的,但当受众的交集局限在一个小圈子时,就会误将两个不相似的物品定义为相似; Swing 模型引入用户的重合度来判断两个用户是否属于一个小圈子ÿ…...
联想小新Pro14默认设置的问题
联想小新Pro14 锐龙版,Win11真的挺多不习惯的,默认配置都不符合一般使用习惯。 1、默认人走过自动开机。人机互动太强了; 2、默认短超时息屏但不锁屏,这体验很容易觉得卡机然后唤起,却又不用密码打开; 3…...
【洛谷 P5019】[NOIP2018 提高组] 铺设道路 题解(分治算法+双指针)
[NOIP2018 提高组] 铺设道路 题目背景 NOIP2018 提高组 D1T1 题目描述 春春是一名道路工程师,负责铺设一条长度为 n n n 的道路。 铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n n n 块首尾相连的区域,一开始,第 i i i …...
牛客刷题记录11.12
继承和组合 二进制数统计 1的个数 和 0 的个数...
NextJS开发:使用IconPark、Lucide图标库
IconPark、Lucide两个很不错的图标库,如果需要用到微信、阿里等国内logo可以使用IconPark,Lucide中没有包含这些内容。 安装IconPark npm install icon-park/react --save简单使用 import {Home} from icon-park/react;<Home/> <Home theme&…...
11.12总结
这一周主要写了个人中心的几个功能,资料修改,收货地址的创建和修改删除,还有主页界面和商品界面...
Gogs安装和部署教程-centos上
0、什么是 Gogs? Gogs 是一款极易搭建的自助 Git 服务。 Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windo…...
Unity中Shader雾效的实现方法一
文章目录 前言一、在片元着色器中使用如下公式计算最终的颜色 lerp(雾效颜色,物体颜色,雾效混合因子)1、获取雾效颜色2、物体的颜色一般通过纹理采样得到,此处用 1 代替测试3、获取 雾效混合因子(由 雾的距离 和 雾的浓度决定&am…...
Mac安装配置Tomcat,以及使用(详解)
目录 一、Tomcat下载: 1、左栏选择Tomcat版本 2、点击下载即可,任选其一 编辑3、下载好的文件夹放到用户名下即可(之前已经下载过,这里以Tomcat 8.5.88为演示),这里提供8.5.88的安装包: 二…...
Smart Link 和 Monitor Link应用
定义 Smart Link常用于双上行链路组网,提高接入的可靠性。 Monitor Link通过监视上行接口,使下行接口同步上行接口状态,起到传递故障信息的作用。 Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个…...
【debug】解决Kali虚拟机开机黑屏,左上角光标一直闪动无法开机问题
做网络攻防实验时,突然Kali无法打开,遇到这个问题。。。。。。 遇到的问题 突然kali虚拟机变成如下黑屏,无法开机,左上角光标闪动,重启无效。 解决办法 在上图界面,按Ctrl F3(不同电脑快捷键…...
目标检测YOLO实战应用案例100讲-基于改进YOLO算法的道路交通目标检测(续)
目录 3.3 实验结果与分析 3.3.1 实验数据集 3.3.2 算法的评价指标 3.3.3 损失函数实验结果...
爬虫怎么伪装才更安全
随着网络技术的不断发展,爬虫技术也越来越成熟,爬虫伪装技术也随之得到了广泛应用。在爬虫伪装技术中,如何伪装成正常的浏览器行为,让目标网站无法辨别出爬虫的存在,是爬虫伪装技术的核心。下面,我将从以下…...
openssl+sha256开发实例(C++)
文章目录 一、 sha256介绍二、sha256原理三、openssl sha256实现 一、 sha256介绍 SHA-256(Secure Hash Algorithm 256-bit)是一种哈希算法,属于 SHA-2(Secure Hash Algorithm 2)家族的一员。SHA-256 产生的哈希值是一…...
【Bug】当用opencv库的imread()函数读取图像,用matplotlib库的plt.imshow()函数显示图像时,图像色彩出现偏差问题的解决方法
一,问题描述 我们在利用opencv的imread读取本地图像,进行一系列处理,但是发现用matplotlib库的imshow()函数显示的时候出现色彩改变,比如图像偏黄,偏红,偏蓝等等,但是对…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
