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

相关推荐
Oll Correct11 小时前
Excel基础操作(三)
笔记·excel
讓丄帝愛伱11 小时前
excel导出实例
java·python·excel
Lilixxs12 小时前
Excel VBA离线帮助文档下载和使用
excel·vba·帮助文档·ms help runtime·hxs
梦幻通灵21 小时前
Excel的TEXT函数实战【持续更新】
excel
陈奕昆1 天前
n8n实战营Day2课时2:Loop+Merge节点进阶·Excel批量校验实操
人工智能·python·excel·n8n
诸神缄默不语1 天前
Python 3中的win32com使用教程+示例:从Excel读取数据生成Word格式报告批量发邮件
python·word·excel
_大龄2 天前
前端解析excel
前端·excel
johnny2333 天前
智能电子表格:Airtable、NocoDB、teable、APITable
excel
2501_930707783 天前
如何使用C#代码在Excel 文件中添加工作表
excel
shouchaobao4 天前
免费PDF工具:PDF转Word/Excel/图片+AI总结+合并拆分+OCR识别,多端无广告!
pdf·word·excel