首页 > 其他分享 >DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)

DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)

时间:2022-10-12 13:38:18浏览次数:71  
标签:CONTROL DOI CONTAINER &-----------------------------------------------------


其实根据代码就可以猜出来,补充上就行了。



这里我没有画CONTAINER控件,用的CL_GUI_DOCKING_CONTAINER类



首先上传模板:



OAOR



DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)_java

​​
这里其实主要是object key,其他基本就是固定值:HRFPM_EXCEL_STANDARD  OT



进去后上传Excel模板



DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)_android_02

​​



模板就是你需要在sap中显示的那个Excel。









首先说明下,代码我是简化了的,仅仅是了解个过程,



比如 一般掉这几个类的方法的时候都有 error参数,其实应该加上并做异常处理的,我没处理,如:



   CALL  METHOD DOCUMENT ->HAS_SPREADSHEET_INTERFACE
     EXPORTING
      NO_FLUSH      =  ''
     IMPORTING
      IS_AVAILABLE  = HAS
      ERROR         = ERRORS .



还有:其实是使用的时候,需要加个锁,我代码里也忽略掉了



CALL  METHOD BDS_INSTANCE ->DOCUMENT_ENQUEUE
     EXPORTING
*     LOGICAL_SYSTEM  =
      CLASSNAME        = DOC_CLASSNAME
      CLASSTYPE        = DOC_CLASSTYPE





然后说明下这几个类,找到的资料也比较少,目前得到的资料中的描述如下:



I_OI_CONTAINER_CONTROL



When you program office applications to start in the R/3 window, the interface



i_oi_container_control is used to create and manage any further objects for Desktop Office



Integration. To create an instance for this object:







I_OI_DOCUMENT_PROXY



  Create an instance with reference to the interface i_oi_document_proxy for every



document to be opened simultaneously. This starts a document container in the SAPgui,



and the corresponding office application is started.







I_OI_SPREADSHEET





You use this interface to communicate with a spreadsheet. 



All spreadsheets allow you to define and assign names to ranges.  This interface works with



named ranges within a spreadsheet. 



The individual ABAP methods contain only functions that are available in the spreadsheet



packages supported by the interface.  That is, each method corresponds directly to a function



within the spreadsheet. 







最后:开始写代码:



首先创建个执行程序。



然后画个屏幕,100,不用再画控件



DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)_大数据_03

​​



然后逻辑流



DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)_java_04

​​



然后gui状态



DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)_html_05

​​

​​

DOI(Excel)测试案例(OAOR传模板、Excel加边框、限制修改、打印)_python_06

​​





好了,然后把我下面的代码copy过去,激活就行了



*&---------------------------------------------------------------------*
*& Report  YLM_TEST057
*&
*&---------------------------------------------------------------------*
*& DOI测试
*&---------------------------------------------------------------------*

REPORT  YLM_TEST057 .

TABLES MAKT .

DATA : OK_CODE                 TYPE SY -UCOMM ,
           SAVE_OK                 TYPE SY -UCOMM .

"数据内表
DATA : GT_DATA                 TYPE  TABLE  OF MAKT .

"CONTAINER 控件
DATA : G_CTNER         TYPE  REF  TO CL_GUI_DOCKING_CONTAINER .

"DOI数据
DATA :
      GCL_CONTROL            TYPE  REF  TO I_OI_CONTAINER_CONTROL ,
      GCL_DOCUMENT        TYPE  REF  TO I_OI_DOCUMENT_PROXY ,
      GCL_SPREADSHEET    TYPE  REF  TO I_OI_SPREADSHEET .

DATA : CL_BDS_INSTANCE             TYPE  REF  TO CL_BDS_DOCUMENT_SET ,
           GT_DOC_SIGNATURE         TYPE              SBDST_SIGNATURE ,
           WA_DOC_SIGNATURE        LIKE  LINE  OF GT_DOC_SIGNATURE ,
           GT_DOC_COMPONENTS    TYPE               SBDST_COMPONENTS ,
           GT_DOC_URIS                     TYPE                SBDST_URI ,
           WA_DOC_URIS                    LIKE  LINE  OF GT_DOC_URIS .

"excel 数据
DATA : RANGEITEM                   TYPE SOI_RANGE_ITEM .
DATA :  RANGES                          TYPE SOI_RANGE_LIST .
DATA : EXCEL_INPUT                  TYPE SOI_GENERIC_TABLE .
DATA : EXCEL_INPUT_WA           TYPE SOI_GENERIC_ITEM .

"选择屏幕
SELECT-OPTIONS S_MATNR  FOR MAKT -MATNR OBLIGATORY .

START-OF-SELECTION .
   "获取数据
   PERFORM FRM_GET_DATA .
   "显示
   CALL  SCREEN  100 .



*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text 获取数据
*----------------------------------------------------------------------*
FORM FRM_GET_DATA  .
   SELECT *
     FROM MAKT
     INTO  TABLE GT_DATA
    WHERE MAKT ~MATNR  IN S_MATNR .
ENDFORM .                     "FRM_GET_DATA



*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100  OUTPUT .
   SET  PF-STATUS  '0100' .
ENDMODULE .                  " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100  INPUT .
  SAVE_OK  = OK_CODE .
   CLEAR OK_CODE .




   CASE SAVE_OK .
     WHEN  '&PNT'  .  “打印
       CALL  METHOD GCL_DOCUMENT ->PRINT_DOCUMENT
         EXPORTING
          NO_FLUSH     =  'X'
          PROMPT_USER  =  'X' .
     WHEN  OTHERS .

   ENDCASE .
ENDMODULE .                  " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  MDL_EXIT  INPUT
*&---------------------------------------------------------------------*
*       text 退出
*----------------------------------------------------------------------*
MODULE MDL_EXIT  INPUT .
   CALL  METHOD GCL_CONTROL ->DESTROY_CONTROL .
   FREE GCL_CONTROL .
   LEAVE  TO  SCREEN  0 .
ENDMODULE .                  " MDL_EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Module  MDL_INIT  OUTPUT
*&---------------------------------------------------------------------*
*       text  初始化 类 填充数据
*----------------------------------------------------------------------*
MODULE MDL_INIT  OUTPUT .
   PERFORM FRM_INIT . "* 屏幕初始化
   PERFORM FRM_FILL_EXCEL .
ENDMODULE .                  " MDL_INIT  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  FRM_INIT
*&---------------------------------------------------------------------*
*       text* 屏幕初始化
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_INIT  .
* 屏幕初始化
   IF G_CTNER  IS  INITIAL .
     DATA : L_URL ( 256 )   TYPE  C .

     "get CONTROL
     CALL  METHOD
      C_OI_CONTAINER_CONTROL_CREATOR =>GET_CONTAINER_CONTROL
       IMPORTING
         CONTROL  = GCL_CONTROL .

     CREATE OBJECT G_CTNER
       EXPORTING
        REPID                        = SY -REPID
        DYNNR                        =  '0100'
        SIDE                         = CL_GUI_DOCKING_CONTAINER =>DOCK_AT_LEFT        "ALV贴屏幕左边,从左边算屏幕宽度,
        EXTENSION                    =  9000       

标签:CONTROL,DOI,CONTAINER,&-----------------------------------------------------
From: https://blog.51cto.com/u_15680210/5749647

相关文章

  • DOI的几个类(I_OI_CONTAINER_CONTROL/I_OI_DOCUMENT_PROXY/I_OI_SPREADSHEET/CL_BDS_DO
    I_OI_CONTAINER_CONTROLWhenyouprogramofficeapplicationstostartintheR/3window,theinterfacei_oi_container_controlisusedtocrea......
  • Excel数据报告清单,赶快来看看你的数据报告是不是这样的
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。 笔者今天想和大家交流的是Excel......
  • 你敢说会用Excel?这11种工具和技巧用过几种?
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。 对于经常和数字打交道的人来说,E......
  • 动图|教你12个Excel小技巧
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。 12个实用技巧让你从此做表不求......
  • Excel文件导入导出
    依赖包为apach的poi包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version> </dependency> <d......
  • 使用SheetJs导出Excel设置指定单元格格式
    vartbl=document.getElementById('sheetjs');varwb=XLSX.utils.table_to_book(tbl);varws=wb.Sheets["Sheet1"];//getthecurrentsheetconsole.log(ws......
  • 对比Python,看看Excel如何3步给证件照换底色!
    Python完成证件照换底色​​注:​​该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流。不久前,我写了一篇关于Python怎么给证件照换底色的文章,阅读2万+,评论102,点......
  • 5个好用的Excel技巧,一秒钟完成一个功能
    本文说明​​俗话说:“技多不压身”。​​我们学会更多的技巧,不管是学习、还是工作,都会起到事半功倍的效果。有时候你可能会说:这个技术目前我用不上。不要紧,你先学着,等以后用......
  • ××教育Excel数据分析面试题
    如果觉得文章写得好,如果你想要博客文章中的数据,请关注公众号:【数据分析与统计学之美】,进群和作者交流!目录  ​​1、用颜色标记重复值​​​ ​​2、用颜色标记出姓名中......
  • Excel正则表达式提取公式示例之提取淘宝店铺名
    熟悉正则表达式的小伙伴都知道,正则表达式常常用于从某段字符串中提取到想要的内容。而Excel网络函数库原有的正则表达式提取公式只支持提取表格中已有的数据。但是如何提取......