用EXCEL调用SAP脚本批量维护物料主数据

 时间:2024-09-26 04:31:19

SAP具备脚本录制功能,支持VBScript,可以将屏幕操作记录下来,转换成VBScript代码,VBScript代码编辑修改后可用在office软件中的vba中,这里选用最常用的EXCEL的vba为例说明。为便于说明,使用SAP系统的中文界面演示。

工具/原料

SAP730

EXCEL2010

方法/步骤

1、在SAP系统中启用脚本的录制登录SAP系统—选项—辅助功能与脚本—用户设置—启用脚本(三个复选框不需要钩选)

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

2、开始录制点击“开始录制”按钮,开始记录SAP的操作。录制状态下的SAP操作,使用正常操作即可,但是应尽量减少不必要的动作,可选择用键盘操作。

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

3、操作SAP系统以修改物料主数据的“基本数据1视图”中的“懋鲕壶迎基本计量单位”为例(其他操作方法可参考进行,原理都是一样的芟坳葩津,前提是获得必要的SAP操作权限);事务代码:MM02,为方便录制文件在EXCEL中循环使用时,每次都重新打开窗口,此时使用事务代码“/nMM02”

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

4、录制结束,停止录制;找到存放脚本的文件夹,如果未修改,脚本默认名称为Script1.vbs

用EXCEL调用SAP脚本批量维护物料主数据

方法/步骤2

1、查看录制的脚本可以使用记事本格式打开录制脚本;如果有安装vb6或更高版本的vb程序,也可以用其打开;此处用记事本格式打开

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

2、脚本分析脚本的前半部分,主要是判断是否有登录、连接到S钽吟篑瑜AP客户端、获取脚本引擎,可以不用管;获取脚本引擎的方法,如下:SetSap镟搞赃呓GuiAuto=GetObject("SAPGUI")Setapplication=SapGuiAuto.GetScriptingEngine在VBA编辑器中,第二行可修改为(在VBA中application的属性的使用无效)SetAppSAP=SapGuiAuto.GetScriptingEngine

用EXCEL调用SAP脚本批量维护物料主数据

用EXCEL调用SAP脚本批量维护物料主数据

3、脚本分析,同理,在VBA编辑器中:Applicatio艘绒庳焰n.Children(0),可改成,AppSAP.Children(0)惺绅寨瞀SetConnection=Application.Children(0)改成SetConnection=AppSAP.Children(0)其他地方的对象做同样的设置

方法/步骤3

1、在EXCEL中整理需要维护的物料编码、单位,做成列表,如图

用EXCEL调用SAP脚本批量维护物料主数据

2、将脚本复制到EXCEL的vba编辑器,整理;添加FOR循环,达到批量修改的目的。

3、执行代码SubSAP脚本()Dimi%SetSapGuiAuto屏顿幂垂=GetObject("SAPG炽扃仄呦UI")SetAppSAP=SapGuiAuto.GetScriptingEngineSetConnection=AppSAP.Children(0)Setsession=Connection.Children(0)Fori=2To18Withsession.findById("wnd[0]").maximize.findById("wnd[0]/tbar[0]/okcd").Text="/nMM02".findById("wnd[0]").sendVKey0.findById("wnd[0]/usr/ctxtRMMG1-MATNR").Text=Cells(i,1).findById("wnd[0]").sendVKey0.findById("wnd[1]/usr/tblSAPLMGMMTC_VIEW").getAbsoluteRow(0).Selected=True.findById("wnd[1]").sendVKey0.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MEINS").Text=Cells(i,2).findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MEINS").SetFocus.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MEINS").caretPosition=2.findById("wnd[0]").sendVKey0.findById("wnd[1]/usr/btnSPOP-OPTION1").pressEndWithNextiEndSub

4、上述代码比较简单直白,就不再做注释和解释说明了。

如何理解Excel VBA的With语句 jquery如何删除子元素 C# 如何复制Excel工作表(worksheet) Notepad++的ftp功能 怎么获取textarea的内容
热门搜索
重生之天才少女 监禁少女reunion 锤子图片 报告夫人漫画免费 欧美少女人体艺术