将 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 表数据创建的,如下图所示。

相关推荐
愿你天黑有灯下雨有伞16 小时前
Java使用FastExcel实现Excel文件导入
java·excel
爆爆凯16 小时前
Excel 导入导出工具类文档
java·excel
凌康ACG1 天前
springboot打包二次压缩Excel导致损坏
spring boot·后端·excel
诸葛大钢铁1 天前
Excel转PDF的三种方法
笔记·职场和发展·pdf·excel
小小薛定谔2 天前
java操作Excel两种方式EasyExcel 和POI
java·python·excel
CodeCraft Studio2 天前
DHTMLX Suite 9.2 重磅发布:支持历史记录、类Excel交互、剪贴板、拖放增强等多项升级
javascript·excel·交互·表格·dhtmlx·grid·网格
小阳睡不醒2 天前
小白成长之路-Elasticsearch 7.0 配置
大数据·elasticsearch·excel
奋进的孤狼2 天前
【Excel】使用vlookup函数快速找出两列数据的差异项
excel
不讲废话的小白2 天前
解锁高效Excel技能:摆脱鼠标,快速编辑单元格
计算机外设·excel
CodeCraft Studio2 天前
Excel处理控件Aspose.Cells教程:使用 Python 在 Excel 中创建甘特图
python·excel·项目管理·甘特图·aspose·aspose.cells