将 SAP 表格数据转换为 Excel 文件

如何在 SAP 屏幕上创建一个按钮,以调用一个包含 ActiveXObject 的函数,该函数用于调用本地文件系统以检索和重命名文件。我们将指导您完成以下步骤。

  1. 删除 SAP 屏幕上不必要的元素
  2. 添加一个输入框,用于输入订单号
  3. 添加一个按钮,点击后将数值导入 excel
  4. 添加一个 Liquid UI 表格
  5. 创建一个函数,将 SAP 表的值分配给 Liquid UI 表
  6. 创建一个函数,将 Liquid UI 表的值提取到 excel 文件中
  7. 展示自定义流程的场景

用户界面

//在脚本文件夹中创建此文件,用于自定义 SAP Easy Access 屏幕SAPLSMTR_NAVIGATION.E0100.sjs

//现在,让我们开始在上述文件中添加 Liquid UI 脚本并保存它

1.使用**del()**删除屏幕上多余的元素

javascript 复制代码
//删除 SAP Easy Access 屏幕上不必要的屏幕元素.
del('X[IMAGE_CONTAINER]');  
del('P[Documentation]'); 
del('P[Assign Users]');  
del('P[Other roles]');  

2.添加一个输入框,输入销售订单的订单号和搜索帮助值,如下所示

javascript 复制代码
// 创建一个输入框,标签为订单,搜索帮助值为 VMVA,搜索帮助参数值为 VBELN
inputfield( [1,2], "Order", [1,22],{"name":"z_message_info","shname":"VBELN", 
"size":16, "searchhelp":"VMVA"});

3.添加一个标签为 "获取数据到 Excel "的按钮,点击后执行名为 z_AssigntoSAPTable 的进程。

javascript 复制代码
// 创建一个标签为 "获取数据到 Excel "的按钮,
// 并在点击或刷新屏幕时使用 z_messae_info 参数执行 z_AssigntoSAPTable 进程 
pushbutton([1,45], "Get Data to Excel","?",
{"process":z_AssigntoSAPTable,"size":[1,15],"using":{"z_message_info":z_message_info}});

4.在 SAP Easy Access 屏幕上添加一个表 "所有项目 "作为标题,并添加名为 "项 目"、"材料 "和 "数量 "的三列,以输入更改销售订单概览的 SAP 表数据。

javascript 复制代码
// 创建一个表格,标题为 "所有项目",3 列 10 行
table([5,5],[15,45],{"name":"va01_AllItems","title":"All items", "rows":10, "rowselection":true,"columnselection":true});
column('Item',{"table":"va01_AllItems","size":4,"name":"z_va01_item","position":1});
column('Material',{"table":"va01_AllItems","size":15,"name":"z_va01_material","position":2});
column('Order Quantity',{"table":"va01_AllItems","size":15,"name":"z_va01_Orderquantity","position":3});

5.添加一个函数,用于在 Liquid UI 表中检索 SAP 表所需的列值。在下面的函数中,我们创建了一个名为 "fso "的新 ActiveXObject,它允许我们通过 wsoffice.dll 调用文件系统。当使用按钮调用下面的函数时,我们将利用这个新对象的方法来获取文本文件并对其进行重命名。

javascript 复制代码
//创建一个函数,将 SAP 表中所需的列值检索到 Liquid UI 表中

function z_AssigntoSAPTable(param){
  
	println(param.z_message_info);  
	temp_items=[];
	temp_material=[];
	temp_quantity=[]; 
	enter('/nva02');

	onscreen 'SAPMV45A.0102'
		set('F[Order]', "&V[z_message_info]");
		enter(); 
   
   
	onscreen 'SAPMSDYP.0010'
		enter();
   
	onscreen 'SAPMSDYP.0010'
		enter();
   


	onscreen 'SAPMV45A.4001' 
		absrow = 1;
		relrow = 1;   
		gettableattribute("T[All items]", {"firstvisiblerow":"FVisRow", "lastvisiblerow":"LVisRow", "lastrow":"LastRow"});
		if(FVisRow==1) {
			goto new_row;
		}    
		enter("/ScrollToLine=&V[absrow]", {"table":"T[All items]"});        
		new_screen:;
    
	onscreen 'SAPMV45A.4001'    
		gettableattribute("T[All items]", {"firstvisiblerow":"FVisRow", "lastvisiblerow":"LVisRow", "lastrow":"LastRow"});   relrow = 1; 
		new_row:;
        if(absrow>LVisRow){
			enter("/ScrollToLine=&V[absrow]", {"table":"T[All items]"});
			goto new_screen;
		}
		if(absrow>LastRow){
			goto end_of_table;
		}
       					   	  			   	   			   	   
		set("V[z_va01_item]","&cell[All items,Item,&V[relrow]]");
		set("V[z_va01_mat]","&cell[All items,Material,&V[relrow]]");
		set("V[z_va01_OQ]","&cell[All items,Order Quantity,&V[relrow]]");
		println('The item Data is '+z_va01_item+':');
		println('The Material Data is '+z_va01_mat+':');
		println('The Order Quantity Data is '+z_va01_OQ+':');				 	
		temp_items.push(z_va01_item);
		temp_material.push(z_va01_mat);
		temp_quantity.push(z_va01_OQ);	 
	 
      
		absrow++;
		relrow++;
		goto new_row;
		end_of_table:;     
		enter("/ScrollToLine=1", {"table":"T[All items]"});	  
		enter("/n");	  
	
	
	onscreen 'SAPLSMTR_NAVIGATION.0100'	
		gettableattribute("T[va01_AllItems]", {"firstvisiblerow":"FisRow", "lastvisiblerow":"LisRow", "lastrow":"LatRow"});	
		var z=1;
	 
		for(var i=0;i<=temp_items.length;i++)
		{		 		
			va01_AllItems.z_va01_item[i] = temp_items[i];
			va01_AllItems.z_va01_material[i] = temp_material[i];
			va01_AllItems.z_va01_Orderquantity[i] = temp_quantity[i];			
			z=z+1;

		} 
	 
	
		copy_To_Excel(temp_items,temp_material,temp_quantity)
		enter("?");
   
} 

6.添加一个将 SAP 表格数据复制到 Excel 文件的函数。在下面的函数中,我们创建了名为 "ExcelApp "和 "ExcelSheet "的新 ActiveXObjects,它们允许我们通过 wsoffice.dll 调用文件系统。当使用按钮调用下面的函数时,新对象的一个方法将用于获取 excel 文件并保存其中的表格数据。保存对脚本文件所做的更改。

javascript 复制代码
//创建一个函数,将 SAP 表格数据复制到Excel文件中
 function copy_To_Excel(temp_items,temp_material,temp_quantity)
{
	var ExcelApp = new ActiveXObject("Excel.Application");
	var ExcelSheet = new ActiveXObject("Excel.Sheet");   
	ExcelSheet.ActiveSheet.Cells(1,1).Value = "Items";
	ExcelSheet.ActiveSheet.Cells(1,2).Value = "Materials";
	ExcelSheet.ActiveSheet.Cells(1,3).Value = "Quantity";         
	var k=0;
	for(p=2;p<temp_items.length;p++) {      
		ExcelSheet.ActiveSheet.Cells(p,1).Value = temp_items[k];
		ExcelSheet.ActiveSheet.Cells(p,2).Value = temp_material[k];
		ExcelSheet.ActiveSheet.Cells(p,3).Value = temp_quantity[k];      
		k=k+1;
	}   
	var str = "C:\\LiquidUI\\scripts\\SAPAllitems_Info.XLS";      
	var fso = new ActiveXObject("Scripting.FileSystemObject");
		if(fso.FileExists(str)){   
              // Displays messae in the status bar
		message("E:FILE ALREADY EXISTS PLEASE REMOVE OLD FILE");
	}
	else{     
		ExcelSheet.SaveAs(str);  
		//ExcelApp.Workbooks.Open(str);
        ExcelSheet.Application.Quit();

	}         
}

++注意:您需要将 wsoffice.dll 文件放到脚本文件夹中++

SAP 流程

1.刷新 SAP 屏幕,然后在订单输入框中输入销售订单号。单击 "获取数据到 Excel "按钮启动该功能,然后就会看到销售订单的 SAP 表数据被复制到同一屏幕上的 Liquid UI 表 "所有项目 "中。

2.现在,请验证脚本文件夹中的 excel 文件,该文件是用脚本文件夹中创建的 SAP 表数据创建的,如下图所示。

相关推荐
Lizzy_Fly1 小时前
【Excel】ToRow超级查找函数
excel
mon_star°1 小时前
将答题成绩排行榜数据通过前端生成excel的方式实现导出下载功能
前端·excel
冰淇淋烤布蕾10 小时前
EasyExcel使用
java·开发语言·excel
图片转成excel表格11 小时前
Excel中怎么提取超出部分数值,比如5w是目标,超出100%和120%的值怎么用公式提取?
excel
周末zm17 小时前
golang将word、excel转换为pdf
pdf·word·excel
孟秋与你17 小时前
【excel】easy excel如何导出动态列
java·excel
Say Bay To The Bugs20 小时前
EasyExcel 使用多线程按顺序导出数据
开发语言·excel
机器懒得学习20 小时前
Python & PyQt5 实现 .his 文件批量转 Excel 工具
开发语言·python·excel
可靠百灵鸟20 小时前
Python 操作 Excel 表格从简单到高级用法
开发语言·python·excel
理想不理想v1 天前
[经典] 前端js将文件流导出为csv/excel文件
前端·javascript·excel