当前位置: 首页 > news >正文

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模板上传及赋值 上传模板事务代码&#xff1a;OAER l 功能代码&#xff1a;向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&#xff0c;发现XPosed真的好强&#xff0c;只要技术强&#xff0c;什么操作都能实现... 这次主要记录一下我对这款应用的逆向思路 apk检查 使用MT管理器检查apk的加壳情况 发现是某数字的免费版本 直接使用frida-dexdump 脱下来后备用 应用分…...

upload-labs关卡7(基于黑名单的空格绕过)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第七关通关思路1、看源代码2、空格绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚未授权的网站做渗透测试…...

CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。

CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。 概述 时空函数是一种用于描述时空结构和演化的函数。它在物理学、数学和计算机科学等领域中都有广泛的应用。时空函数可以描述物体在时空中的位置、速度、加速度以及其他相关属性。 用法 CnosDB 将使用一种全新的…...

python实现炒股自动化,个人账户无门槛量化交易的开始

本篇作为系列教程的引子&#xff0c;对股票量化程序化自动交易感兴趣的朋友可以关注我&#xff0c;现在只是个粗略计划&#xff0c;后续会根据需要重新调整&#xff0c;并陆续添加内容。 股票量化程序化自动交易接口 很多人在找股票个人账户实现程序化自动交易的接口&#xff0…...

推荐系统笔记--Swing模型的原理

1--Swing模型的引入 在 Item CF 召回中&#xff0c;物品的相似度是基于其受众的交集来衡量的&#xff0c;但当受众的交集局限在一个小圈子时&#xff0c;就会误将两个不相似的物品定义为相似&#xff1b; Swing 模型引入用户的重合度来判断两个用户是否属于一个小圈子&#xff…...

联想小新Pro14默认设置的问题

联想小新Pro14 锐龙版&#xff0c;Win11真的挺多不习惯的&#xff0c;默认配置都不符合一般使用习惯。 1、默认人走过自动开机。人机互动太强了&#xff1b; 2、默认短超时息屏但不锁屏&#xff0c;这体验很容易觉得卡机然后唤起&#xff0c;却又不用密码打开&#xff1b; 3…...

【洛谷 P5019】[NOIP2018 提高组] 铺设道路 题解(分治算法+双指针)

[NOIP2018 提高组] 铺设道路 题目背景 NOIP2018 提高组 D1T1 题目描述 春春是一名道路工程师&#xff0c;负责铺设一条长度为 n n n 的道路。 铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n n n 块首尾相连的区域&#xff0c;一开始&#xff0c;第 i i i …...

牛客刷题记录11.12

继承和组合 二进制数统计 1的个数 和 0 的个数...

NextJS开发:使用IconPark、Lucide图标库

IconPark、Lucide两个很不错的图标库&#xff0c;如果需要用到微信、阿里等国内logo可以使用IconPark&#xff0c;Lucide中没有包含这些内容。 安装IconPark npm install icon-park/react --save简单使用 import {Home} from icon-park/react;<Home/> <Home theme&…...

11.12总结

这一周主要写了个人中心的几个功能&#xff0c;资料修改&#xff0c;收货地址的创建和修改删除&#xff0c;还有主页界面和商品界面...

Gogs安装和部署教程-centos上

0、什么是 Gogs? Gogs 是一款极易搭建的自助 Git 服务。 Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发&#xff0c;并且支持 Go 语言支持的 所有平台&#xff0c;包括 Linux、Mac OS X、Windo…...

Unity中Shader雾效的实现方法一

文章目录 前言一、在片元着色器中使用如下公式计算最终的颜色 lerp(雾效颜色&#xff0c;物体颜色&#xff0c;雾效混合因子)1、获取雾效颜色2、物体的颜色一般通过纹理采样得到&#xff0c;此处用 1 代替测试3、获取 雾效混合因子&#xff08;由 雾的距离 和 雾的浓度决定&am…...

Mac安装配置Tomcat,以及使用(详解)

目录 一、Tomcat下载&#xff1a; 1、左栏选择Tomcat版本 2、点击下载即可&#xff0c;任选其一 ​编辑3、下载好的文件夹放到用户名下即可&#xff08;之前已经下载过&#xff0c;这里以Tomcat 8.5.88为演示&#xff09;&#xff0c;这里提供8.5.88的安装包&#xff1a; 二…...

Smart Link 和 Monitor Link应用

定义 Smart Link常用于双上行链路组网&#xff0c;提高接入的可靠性。 Monitor Link通过监视上行接口&#xff0c;使下行接口同步上行接口状态&#xff0c;起到传递故障信息的作用。 Smart Link&#xff0c;又叫做备份链路。一个Smart Link由两个接口组成&#xff0c;其中一个…...

【debug】解决Kali虚拟机开机黑屏,左上角光标一直闪动无法开机问题

做网络攻防实验时&#xff0c;突然Kali无法打开&#xff0c;遇到这个问题。。。。。。 遇到的问题 突然kali虚拟机变成如下黑屏&#xff0c;无法开机&#xff0c;左上角光标闪动&#xff0c;重启无效。 解决办法 在上图界面&#xff0c;按Ctrl F3&#xff08;不同电脑快捷键…...

目标检测YOLO实战应用案例100讲-基于改进YOLO算法的道路交通目标检测(续)

目录 3.3 实验结果与分析 3.3.1 实验数据集 3.3.2 算法的评价指标 3.3.3 损失函数实验结果...

爬虫怎么伪装才更安全

随着网络技术的不断发展&#xff0c;爬虫技术也越来越成熟&#xff0c;爬虫伪装技术也随之得到了广泛应用。在爬虫伪装技术中&#xff0c;如何伪装成正常的浏览器行为&#xff0c;让目标网站无法辨别出爬虫的存在&#xff0c;是爬虫伪装技术的核心。下面&#xff0c;我将从以下…...

openssl+sha256开发实例(C++)

文章目录 一、 sha256介绍二、sha256原理三、openssl sha256实现 一、 sha256介绍 SHA-256&#xff08;Secure Hash Algorithm 256-bit&#xff09;是一种哈希算法&#xff0c;属于 SHA-2&#xff08;Secure Hash Algorithm 2&#xff09;家族的一员。SHA-256 产生的哈希值是一…...

【Bug】当用opencv库的imread()函数读取图像,用matplotlib库的plt.imshow()函数显示图像时,图像色彩出现偏差问题的解决方法

一&#xff0c;问题描述 我们在利用opencv的imread读取本地图像&#xff0c;进行一系列处理&#xff0c;但是发现用matplotlib库的imshow&#xff08;&#xff09;函数显示的时候出现色彩改变&#xff0c;比如图像偏黄&#xff0c;偏红&#xff0c;偏蓝等等&#xff0c;但是对…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...