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

相关推荐
SunnyDays10114 小时前
Java 设置 Excel 数据验证:整数、日期、文本长度、下拉列表和时间
java·excel·数据验证·下拉列表
Metaphor6924 小时前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
用户03321266636720 小时前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
企业数字化笔记21 小时前
固定资产Excel批量导入怎么防重复?资产编码、重复检查和错误回执
java·后端·excel
CORNERSTONE3651 天前
低代码开发有哪些应用场景?
低代码·excel·erp·mes·企业数字化
小葱炖豆腐2 天前
python绘制excel折线图
python·excel·numpy·pandas·matplotlib
cspttty2 天前
2026年财务分析岗JD中的Excel、SQL、BI与业务分析要求
大数据·sql·excel
cspttty2 天前
HR数字化校招准备路线:Excel、SQL、BI和AI工具怎么学
人工智能·sql·excel
鲲穹AI种草3 天前
Excel 表格批量处理与数据整理,多款表格工具能力客观记录
excel·表格处理
cspttty3 天前
2026秋招供应链分析师技能栈:SQL、Excel、BI与业务分析
数据库·sql·excel