目的
了解如何使用在 SAP 屏幕上创建的按钮将列表屏幕数据复制到 excel。为了解释这一点,我们将指导您完成以下步骤。
- 添加按钮以调用函数
- 创建一个函数以从"列表"屏幕复制数据,并将其分配给数组
- 创建将数据复制到 excel 文件的函数
注意: 确保放置wsoffice.dll 并RVKRED02。E1000.sjs 文件。
用户界面
//在脚本文件夹中创建此文件,用于自定义 SD 文档屏幕RVKRED01。E0120.sjs
//现在,让我们开始将 Liquid UI 脚本添加到上面的文件中并保存它。
定制屏幕
- 登录 SAP,然后导航到 VKM1(阻止的 SD 文档) 屏幕。
屏幕脚本
-
添加一个标签为滚动 的按钮 ,以在单击时执行进程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>
-
使用 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>
-
现在,将以下 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流程
- 现在,刷新 SAP 屏幕,然后单击**"执行** "按钮,如下所示。
- 然后出现以下屏幕,现在单击滚动 工具栏按钮将值存储到数组中。
- 然后出现一个屏幕,其中包含存储的数据,如下图所示。
注意: 将在脚本目录中创建一个名称为 LISTSCREENDATA.xls 的新 excel 文件。 - 现在,打开 Cornelius 窗口以查看输出,即从列表屏幕复制到数组的数据,如下图所示。
- 最后,打开 excel 文件LISTSCREENDATA.xls ,该文件创建并存储在 scripts 文件夹中,以查看输出,即从"列表"屏幕复制的数据,如下图所示。