使用按键将SAP列表屏幕数据复制到Excel文件中

目的

了解如何使用在 SAP 屏幕上创建的按钮将列表屏幕数据复制到 excel。为了解释这一点,我们将指导您完成以下步骤。

  1. 添加按钮以调用函数
  2. 创建一个函数以从"列表"屏幕复制数据,并将其分配给数组
  3. 创建将数据复制到 excel 文件的函数


注意: 确保放置wsoffice.dllRVKRED02。E1000.sjs 文件。
用户界面

//在脚本文件夹中创建此文件,用于自定义 SD 文档屏幕RVKRED01。E0120.sjs

//现在,让我们开始将 Liquid UI 脚本添加到上面的文件中并保存它。

定制屏幕
  1. 登录 SAP,然后导航到 VKM1(阻止的 SD 文档) 屏幕。
屏幕脚本
  1. 添加一个标签为滚动按钮 ,以在单击时执行进程z_readfromlist

    pre 复制代码
    <span style="color:#333333"><span style="background-color:#f5f5f5"><span style="color:#888888">// Creates a pushbutton with the label as <strong>scroll</strong> to call a function when clicked.</span> 
    pushbutton([<span style="color:#f00000">TOOLBAR</span>],"<span style="color:#f00000">"scroll"</span>",{<span style="color:#848484">"process":z_readfromlist</span>});</span></span>
  2. 使用 load 命令将 wsoffice.dll 文件添加到RVKRED01。E0120.sjs ;这允许您访问其中包含的功能。

    pre 复制代码
    <span style="color:#333333"><span style="background-color:#f5f5f5"><span style="color:#888888">// wsoffice.dll is required to be installed</span>
    load('<span style="color:#f00000">wsoffice</span>');  </span></span>
  3. 现在,将以下 Liquid UI 脚本添加到此文件,并保存 它。

    pre 复制代码
    <span style="color:#333333"><span style="background-color:#f5f5f5">// function to read data from the List screen and assign it to an array
    
    functionz_readfromlist(){
     z_doc = [];                // array to store data 
     z_doc1 = [];               // array to store data 
     z_doc2 = [];               // array to store data 
    
    ifvrow = 1; 
     onscreen '<span style="color:#f00000">RVKRED01.0120</span>' 
     SCROLL_NEXT:; 
     enter("<span style="color:#f00000">/scrolltoline=&V[lfvrow]"</span>);       //scroll the list vertically 
     
     onscreen '<span style="color:#f00000">RVKRED01.0120</span>' 
     enter("<span style="color:#f00000">/hscrollto=0"</span>);                   //scroll list horizontally 
     
    //To go to the end of the function when the end of the List screen is reached.
    
    if(lfvrow >= _listlastvisiblerow){ 
    goto END; 
    }
     START:; 
     ifvrow = _listfirstvisiblerow; 
     llvrow = _listlastvisiblerow; 
     z_row = 3; 
     LOOP:; 
     set("<span style="color:#f00000">V</span>[<span style="color:#f00000">V[doc_val]</span>]","<span style="color:#f00000">&#["+z_row+",30]</span>");
     set("<span style="color:#f00000">V</span>[<span style="color:#f00000">V[doc_val1]</span>]","<span style="color:#f00000">&#["+z_row+",72]</span>");
     set("<span style="color:#f00000">V</span>[<span style="color:#f00000">V[doc_val2]</span>]","<span style="color:#f00000">&#["+z_row+",97]</span>");
     z_doc.push(doc_val);
     z_doc1.push(doc_val1);
     z_doc2.push(doc_val2);
     lfvrow = lfvrow+1; 
     if(lfvrow <= _listlastvisiblerow){ 
     z_row = z_row+1;
     goto LOOP;
     }
     else{ 
    goto SCROLL_NEXT 
     } 
    END;
     
     // To display array elements on Cornelius output window
    
    for(i=0;i<z_doc.length;i++){
     println("*******************************************************");
     println("document number at z_doc["+i+"]="+z_doc[i]); 
     println("document Name at z_doc["+i+"]="+z_doc1[i]);
     println("document City at z_doc["+i+"]="+z_doc2[i]);
     println("*******************************************************");
     } 
     copy_To_Excel(zdoc,zdoc1,zdoc2)
     }
     
    //function to copy the data from list screen to excel file. 
    
     function copy_To_Excel(zdoc,zdoc1,zdoc2)
     var ExcelApp = new ActiveXObject("Excel.Application"); 
     var ExcelSheet = new ActiveXObject("Excel.Sheet"); 
     
     ExcelSheet.ActiveSheet.Cells(1,1).Value = "Document Number"; 
     ExcelSheet.ActiveSheet.Cells(1,2).Value = "Name of the Person";
     ExcelSheet.ActiveSheet.Cells(1,3).Value = "City"; 
     for(i=2;i<z_doc.length;i++) { 
     ExcelSheet.ActiveSheet.Cells(i,1).Value = z_doc[i]; 
     ExcelSheet.ActiveSheet.Cells(i,2).Value = z_doc1[i];
     ExcelSheet.ActiveSheet.Cells(i,3).Value = z_doc2[i]; 
     } 
     var str = "C:\\LiquidUI\\scripts\LISTSCREENDATA.XLS"; 
     var fso = new ActiveXObject("Scripting.FileSystemObject"); 
     if(fso.FileExists(str)){ 
     message(<span style="color:#f00000">"E:FILE ALREADY EXISTS PLEASE REMOVE OLD FILE"</span>); 
     } 
     else{ 
     ExcelSheet.SaveAs(str); 
     ExcelSheet.Application.Quit(); 
     } 
     }</span></span>
SAP流程
  1. 现在,刷新 SAP 屏幕,然后单击**"执行** "按钮,如下所示。
  2. 然后出现以下屏幕,现在单击滚动 工具栏按钮将值存储到数组中。
  3. 然后出现一个屏幕,其中包含存储的数据,如下图所示。


    注意: 将在脚本目录中创建一个名称为 LISTSCREENDATA.xls 的新 excel 文件。
  4. 现在,打开 Cornelius 窗口以查看输出,即从列表屏幕复制到数组的数据,如下图所示。
  5. 最后,打开 excel 文件LISTSCREENDATA.xls ,该文件创建并存储在 scripts 文件夹中,以查看输出,即从"列表"屏幕复制的数据,如下图所示。
相关推荐
拉不动的猪12 小时前
移动端调试工具VConsole初始化时的加载阻塞问题
前端·javascript·微信小程序
大金乄14 小时前
封装一个vue2的elementUI 表格组件(包含表格编辑以及多级表头)
前端·javascript
Lee川16 小时前
解锁 JavaScript 的灵魂:深入浅出原型与原型链
javascript·面试
swipe17 小时前
从原理到手写:彻底吃透 call / apply / bind 与 arguments 的底层逻辑
前端·javascript·面试
Lee川19 小时前
探索JavaScript的秘密令牌:独一无二的`Symbol`数据类型
javascript·面试
Lee川19 小时前
深入浅出JavaScript事件机制:从捕获冒泡到事件委托
前端·javascript
光影少年19 小时前
async/await和Promise的区别?
前端·javascript·掘金·金石计划
codingWhat19 小时前
如何实现一个「万能」的通用打印组件?
前端·javascript·vue.js
前端Hardy1 天前
别再无脑用 `JSON.parse()` 了!这个安全漏洞你可能每天都在触发
前端·javascript·vue.js
前端Hardy1 天前
别再让 `console.log` 上线了!它正在悄悄拖垮你的生产系统
前端·javascript·vue.js