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()函数显示的时候出现色彩改变,比如图像偏黄,偏红,偏蓝等等,但是对…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...
虚拟机网络不通的问题(这里以win10的问题为主,模式NAT)
当我们网关配置好了,DNS也配置好了,最后在虚拟机里还是无法访问百度的网址。 第一种情况: 我们先考虑一下,网关的IP是否和虚拟机编辑器里的IP一样不,如果不一样需要更改一下,因为我们访问百度需要从物理机…...
论文笔记:Large Language Models for Next Point-of-Interest Recommendation
SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...
20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决
20250607在荣品的PRO-RK3566开发板的Android13系统下实现长按开机之后出现插入适配器不会自动启动的问题的解决 2025/6/7 17:20 缘起: 1、根据RK809的DATASHEET,短按开机【100ms/500ms】/长按关机,长按关机。6s/8s/10s 我在网上找到的DATASHE…...
