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

news2024/11/26 0:27:58

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 = 1
                            OTHERS = 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 data
    DATA: rows_number TYPE i,
          columns_number TYPE i.
    CALL FUNCTION ‘RFC_GET_STRUCTURE_DEFINITION’
     EXPORTING
          tabname          = tabname
     TABLES
          fields           = fields_table
     EXCEPTIONS
          table_not_active = 1
          OTHERS           = 2.
    DESCRIBE TABLE fields_table LINES columns_number.
    DESCRIBE TABLE <it_table> LINES rows_number.
    CALL METHOD spreadsheet->insert_range_dim
                  EXPORTING name = ‘SAP_Table’
                            top  = ‘2′
                            left = ‘2′
                            rows = rows_number
                            no_flush = ‘X’
                            columns = columns_number
                  IMPORTING error = errors.
    APPEND errors.
    CALL METHOD spreadsheet->set_color
                  EXPORTING rangename = ‘SAP_Table’
                            back = ‘50′
                            front = ‘2′
                            no_flush = ‘X’
                  IMPORTING error = errors.
    APPEND errors.
    “Create range for comments
    CALL METHOD spreadsheet->insert_range_dim
                  EXPORTING name = ‘SAP_Comments’
                            top  = ‘2′
                            left = ‘1′
                            rows = rows_number
                            no_flush = ‘X’
                            columns = 1
                  IMPORTING error = errors.
    APPEND errors.
    CALL METHOD spreadsheet->set_color
                  EXPORTING 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 title
                            SEPARATED BY space.
    excel_input_wa-value = title.
    APPEND excel_input_wa TO excel_input.
    CALL METHOD spreadsheet->set_ranges_data
                  EXPORTING ranges = ranges
                            contents = excel_input
                  IMPORTING error = errors.
    APPEND errors.
    “transfer R/3 table data into excel range
    CALL METHOD spreadsheet->insert_one_table
                  EXPORTING data_table = <it_table>
                            ddic_name  = tabname
                            rangename  = ‘SAP_Table’
                            no_flush   = ‘X’
                            wholetable = ‘X’
                  IMPORTING error = errors.
    APPEND errors.
    “protect the R/3 data against input
    CALL METHOD spreadsheet->fit_widest
                  EXPORTING name = space
                            no_flush = ‘X’.
    CALL METHOD spreadsheet->protect_range
                  EXPORTING name = ‘SAP_Table’
                            protect = ‘X’
                            no_flush = ‘X’
                  IMPORTING error = errors.
    APPEND errors.
    “no flush automation queue
    CALL METHOD control->set_focus
            EXPORTING no_flush = ‘ ’
            IMPORTING error = errors.
    APPEND errors.
    LOOP AT errors.
      CALL METHOD errors->raise_message
                  EXPORTING 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 interface
  CALL METHOD c_oi_container_control_creator=>get_container_control
              IMPORTING control = control
                        error   = error.
  “check no errors occured
  CALL METHOD error->raise_message EXPORTING type = ‘E’.
  “create a control container as defined in dynpro 0100
  CREATE OBJECT container
         EXPORTING container_name = ‘CONTAINER’.
  “initialize the SAP DOI container,tell it to run in the container
  “specified above and tell it to run excel inplace
  CALL METHOD control->init_control
        EXPORTING r3_application_name = ‘R/3 Basis’
                  inplace_enabled = ”
                  inplace_scroll_documents = ”
                  parent = container
                  register_on_close_event = ‘X’
                  register_on_custom_event = ‘X’
                  no_flush = ‘X’
        IMPORTING error = errors.
* save error object in collection
  APPEND errors.
* ask the SAP DOI container for a i_oi_document_proxy for Exel
  CALL METHOD control->get_document_proxy
          EXPORTING document_type = ‘Excel.Sheet’
                    no_flush = ‘X’
          IMPORTING document_proxy = document
                    error = errors.
*and then create a new Excel Sheet
  CALL METHOD document->create_document
              EXPORTING 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 interface
  DATA: has TYPE i.
  CALL METHOD document->has_spreadsheet_interface
             EXPORTING no_flush = ‘X’
             IMPORTING is_available = has
                       error = errors.
  APPEND errors.
  CALL METHOD document->get_spreadsheet_interface
              EXPORTING no_flush = ‘ ’
              IMPORTING sheet_interface = spreadsheet
                        error = 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_message
                    EXPORTING  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_set
    CREATE OBJECT r_document.
*   Get Document with URL
    locwa_signature-prop_name  = ‘DESCRIPTION’.
*   Description of the table template in OAOR
    locwa_signature-prop_value = im_desc.
    APPEND locwa_signature TO locint_signature.
    CALL METHOD r_document->get_with_url
      EXPORTING
        classname       = im_clsnam
        classtype       = im_clstyp
        object_key      = im_objkey
      CHANGING
        uris            = locint_uris
        signature       = locint_signature
      EXCEPTIONS
        nothing_found   = 1
        error_kpro      = 2
        internal_error  = 3
        parameter_error = 4
        not_authorized  = 5
        not_allowed     = 6.
    IF sy-subrc NE 0.
      MESSAGE ‘Error Retrieving Document’ TYPE ‘E’.
    ENDIF.
*   Create container control
    CALL METHOD c_oi_container_control_creator=>get_container_control
      IMPORTING
        control = r_control
        error   = r_error.
    IF r_error->has_failed = ‘X’.
      CALL METHOD c_oi_errors=>raise_message
        EXPORTING
          type = ‘E’.
    ENDIF.
* Initialize Custom Control
    CREATE OBJECT r_container
      EXPORTING
        container_name = ‘TAB_EXCEL’. “Custom Control Name
    CALL METHOD r_control->init_control
      EXPORTING
        r3_application_name      = ‘EXCEL INPLACE BDS’
        inplace_enabled          = abap_false
        inplace_scroll_documents = abap_true
        parent                   = r_container
      IMPORTING
        error                    = r_error.
    IF r_error->has_failed = ‘X’.
      CALL METHOD c_oi_errors=>raise_message
        EXPORTING
          type = ‘E’.
    ENDIF.
* Create object for cl_bds_document_set
    CREATE OBJECT r_document.
    READ TABLE locint_uris INTO locwa_uris INDEX 1.
    CALL METHOD r_control->get_document_proxy
      EXPORTING
        document_type  = ‘Excel.Sheet’
      IMPORTING
        document_proxy = r_proxy
        error          = r_error.
    IF r_error->has_failed = ‘X’.
      CALL METHOD c_oi_errors=>raise_message
        EXPORTING
          type = ‘E’.
    ENDIF.
*   Open Document
    CALL METHOD r_proxy->open_document
      EXPORTING
        document_url     = locwa_uris-uri
        open_inplace     = abap_false
        protect_document = abap_false “Protect Document initially
      IMPORTING
        error            = r_error.
    IF r_error->has_failed = ‘X’.
      CALL METHOD c_oi_errors=>raise_message
        EXPORTING
          type = ‘E’.
    ENDIF.
*   Get Excel Interface
    CALL METHOD r_proxy->get_spreadsheet_interface
      IMPORTING
        sheet_interface = r_excel
        error           = r_error.
    IF r_error->has_failed = ‘X’.
      CALL METHOD c_oi_errors=>raise_message
        EXPORTING
          type = ‘E’.
    ENDIF.
    CALL METHOD r_proxy->get_spreadsheet_interface
        IMPORTING
                sheet_interface = r_handle.
  ENDMETHOD.
ENDCLASS.
l  逐个CELL输入数据的示例代码如下:
  fill_cell IMPORTING im_x TYPE i
                      im_y TYPE i
                      im_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_dim
         EXPORTING
           NAME = ‘cell’
           NO_FLUSH = ‘X’
           TOP = im_x
           LEFT = im_y
           ROWS = lv_rows
           COLUMNS = lv_columns
         IMPORTING
           error = 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_data
      EXPORTING ranges = lt_ran
                contents = lt_cont
      IMPORTING
                error = r_error.
    CALL METHOD r_handle->fit_widest
         EXPORTING
           name  = space
           no_flush = ‘X’.
  ENDMETHOD.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch 集群状态详解

cluster state 返回结果详解 GET /_cluster/statehttps://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html详细信息如下&#xff1a; {"cluster_name": "business-log","cluster_uuid": "ArYy-qmCTbCQTDUI8o…

ClickHouse Keeper: Coordination without the drawbacks没有缺点的分布式协作系统

ClickHouse Keeper 介绍 现代分布式系统需要一个共享和可靠的信息存储库和共识系统来协调和同步分布式操作。对于ClickHouse来说&#xff0c;ZooKeeper最初是被选中的。它的广泛使用是可靠的&#xff0c;提供了简单而强大的API&#xff0c;并提供了合理的性能。 然而&#xf…

[工业自动化-8]:西门子S7-15xxx编程 - PLC主站 - CPU模块

目录 前言&#xff1a; 一、概述 二、CPU操作和显示 三、安装 四、CPU的选择 前言&#xff1a; 一、概述 西门子S7-1500系列是一系列高性能工业自动化控制器&#xff0c;广泛应用于制造业、自动化生产、物流等领域。这个系列的控制器是设计用来满足高性能、高效能要求的复…

板刷codeforces 1000分

练习 1.Problem - 1A - Codeforces AC代码: #include <bits/stdc.h> #define endl \n #define int long long using namespace std; int n,m,a; void solve() {cin>>n>>m>>a;cout<<(n/a(n%a!0))*(m/a(m%a!0))<<endl; } signed main() {…

《童年》 思维导图

《童年》是高尔基自传体小说三部曲中的第一部&#xff0c;讲述的是高尔基幼年丧父、母亲改嫁&#xff0c;他跟随日渐破落的小染坊主外公以及外婆生活的童年经历。小说通过一个儿童天真无邪的眼光&#xff0c;向读者生动地展示了19世纪中叶俄罗斯社会底层人民的生活状态&#xf…

Apache APISIX 的 Admin API 默认访问令牌漏洞(CVE-2020-13945)漏洞复现

漏洞描述 Apache APISIX 是一个动态、实时、高性能的 API 网关。Apache APISIX 有一个默认的内置 API 令牌&#xff0c;可用于访问所有 admin API&#xff0c;通过 2.x 版本中添加的参数导致远程执行 LUA 代码。 漏洞环境及利用 启动docker环境 访问9080端口 通过 admin api…

Centos7安装配置中文输入法

Centos7安装配置中文输入法 在安装CentOS时&#xff0c;我们为了方便使用&#xff0c;语言选择了中文&#xff0c;但是我们发现&#xff0c;在Linux命令行或者是浏览器中输入时&#xff0c;我们只能输入英文&#xff0c;无法输入汉字。 来&#xff0c;跟随脚步&#xff0c;设…

【java】【MyBatisPlus】【四】【完】MyBatisPlus一些实战总结(枚举、翻页、sql、组合条件、自增主键、逻辑删除)

目录 一、枚举 1、数据库type字段是Integer 类型枚举 2、创建一个该字段的枚举类 TypeEnum 3、修改实体类 4、配置文件新增mybatis-plus的配置 5、检验&#xff1a; 5.1 查询显示 5.3 库里验证 二、自增主键不是id字段处理 三、逻辑删除字段不是delete字段处理 1、实…

【Linux网络】2分钟学习centos7永久修改网卡名称

目录 第一步&#xff0c;先查看网卡名称 第二步&#xff1a;先修改配置文件/etc/default/grub&#xff0c;添加net.ifnemes0 第三步&#xff1a;重新加载内核配置grub2-mkconfig -o /boot/grub2/grub.cfg 第四步&#xff1a;重启电脑 第五步&#xff1a;查看网卡名称&…

No module named ‘importlib.metadata‘

解决办法 参考博客 https://wenku.csdn.net/answer/45a1563cc02e9592dd1d1d28fe7b88e7 pip install importlib_metadata

基于工业智能网关的汽车充电桩安全监测方案

近年来&#xff0c;我国新能源汽车产业得到快速发展&#xff0c;电动车产量和销量都在持续增长&#xff0c;不仅国内市场竞争激烈&#xff0c;而且也远销海外&#xff0c;成为新的经济增长点。但与此同时&#xff0c;充电设施的运营却面临着安全和效率的双重挑战。 当前的充电桩…

python特殊循环队列_队中元素个数代替队尾指针

对于循环队列来说&#xff0c;如果知道队头指针和队中元素个数&#xff0c;则可以计算出队尾指针。也就是说&#xff0c;可以用队中元素个数代替队尾指针。设计出这种循环队列的判队空、进队、出队和取队头元素的算法。 本例的循环队列包含data 数组、队头指针 front和队中元素…

猫头虎博主第7期赠书活动:《计算机考研精炼1000题》

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

mac M2 pytorch_geometric安装

我目前的环境是mac M2&#xff0c;我在base环境中安装了pytorch_geometric,仅仅做测试用的&#xff0c;不做真正跑代码的测试 首先我的base环境的设置如下&#xff1a; pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.…

Android Camera App启动流程解析

前言&#xff1a;做了7年的camera app开发&#xff0c;给自己一个总结&#xff0c;算是对camera的一次告白吧。Camera被大家誉为手机的眼睛&#xff0c;是现在各大手机厂商的卖点&#xff0c;也是各大厂商重点发力的地方。Camera的重要性我就不在这里赘述了&#xff0c;让我们进…

计网自顶向下(Web服务器+UDPping+邮件客户端)

目录 &#x1f416;前言 &#x1f33c;Web服务器(作业1) &#x1f333;过程 &#x1f333;解释 &#x1f525;代码 &#x1f33c;UDPping程序(作业2) &#x1f333;过程 &#x1f333;解释 Client Server 整体逻辑 &#x1f525;代码 &#x1f33c;邮件客户端(作业…

粤嵌实训医疗项目(小组开发)--day05

目录 一、医生功能模块 ------------前端实现------------ ------------后端接口------------ 功能一&#xff1a;分页查询医生基础信息&#xff08;介绍MybatisPlus如何使用分页&#xff09; 功能二&#xff1a;根据搜索栏名称查找对应医生&#xff08;讲解自定义查询集&…

SRRC认证的必要性:保障电子产品质量安全的重要措施

随着电子产品的普及和应用&#xff0c;对电子产品的质量安全要求也越来越高。为了保障消费者的权益和安全&#xff0c;国家对电子产品进行了严格的监管和管理。其中&#xff0c;SRRC认证是保障电子产品质量安全的重要措施之一。 SRRC认证是指在我国境内生产、销售、使用的无线电…

(动手学习深度学习)第13章 计算机视觉---图像增广与微调

13.1 图像增广 总结 数据增广通过变形数据来获取多样性从而使得模型泛化性能更好常见图片增广包裹翻转、切割、变色。 图像增广代码实现

简单剖析程序的翻译过程!

本文旨在讲解一段源程序如何翻译成机器所能识别的二进制的命令的&#xff0c;希望通过本文&#xff0c;能使读者对一段程序的翻译过程有进一步的认识&#xff01; 这里首先要介绍的是一段程序从编写完成到执行需要经过以下几个步骤&#xff01; 1.预处理 首先讲到的是预处理&…