- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通过EXCEL宏和SAP Script进行批量业务处理
通过EXCEL宏和SAP Script进行批量业务处理
SAP提供了很多批量导入的工具,但问题是一般情况下不会赋予普通用户这些权限,因此我结合EXCEL VBA和SAP Script功能整理出一个简易的批量业务处理方式,供大家参考
使用SAP Script Recording功能录制SAP操作,生成代码块
激活SAP Script Recording
选择存放路径和script代码块文件名称
点击开始录制SAP操作,建议以”/N”+事务代码,以保存为结尾。生成如下程序代码文件,可以用文本编辑器打开
通过EXCEL VBA编写宏代码,用于读取数据模板和导入SAP
进入VBA编辑视图
复制Script代码块中的代码,并做以下适当修改:
在两个Application 和 Connection 之前加入SAP
修改录制中的固定值,改为模板中的相应字段,如 Range(A I).Value等
如有更为复杂的数据处理需求,可以在宏代码中加入适当的判断或者循环语句
以下代码用于修改物料主数据的,前段和末端代码???以沿用,只需用script代码覆盖病修改中段原代码即可。供参考。
Sub EXCEL_to_SAP()
yes_No = MsgBox(Do you want to upload data into SAP really?, vbOKCancel)
If yes_No = 2 Then
End
End If
Range(Z1).Value = =COUNTA(A:A): TEMP = Range(Z1).Value: Range(Z1).Value =
On Error GoTo NotLoggedOnSAP:
Set SapGuiAuto = GetObject(SAPGUI) Get the SAP GUI Scripting object
Set SapApplication = SapGuiAuto.GetScriptingEngine Get the currently running SAP GUI
Set SapConnection = SapApplication.Children(0) Get the first system that is currently connected
Set session = SapConnection.Children(0) Get the first session (window) on that connection
GoTo 10:
NotLoggedOnSAP:
x = MsgBox(You are not logged on SAP. Please log on and try again., vbOKOnly, Not Logged on SAP)
Exit Sub
On Error GoTo 0
10 If TEMP 1 Then
For I = 2 To TEMP
********************** 1. copy from scrip
********************** 2. add SAP before 2 Application and 2 Connection in next 10 lines
********************** 3. change fixed value by fields value, refer to - Range(A I).Value -
If Not IsObject(Application) Then
Set SapGuiAuto = GetObject(SAPGUI)
Set SapApplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set SapConnection = SapApplication.Children(0)
End If
If Not IsObject(session) Then
Set session = SapConnection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, on
WScript.ConnectObject Application, on
End If
session.findById(wnd[0]).maximize
session.
您可能关注的文档
最近下载
- tb 10106-2023《铁路工程地基处理技术规程》(OCR).pdf
- 教资国考复习初中历史必备知识点.pdf
- 3万吨亚磷酸、2万吨三乙胺项目可行性研究报告写作模板-备案审批.doc
- 《大气污染控制工程》课程教学大纲.pdf VIP
- 拜城县老虎台铁矿开采设计方案.doc
- A2数字教育资源获取与评价作业1-主题说明. 高中语文《沁园春.长沙》. 教师自主选择一个教学主题,描述其主要内容、教学对象、教学环境等。.docx
- 农村防灾减灾知识.pptx
- 浙江省生物多样性调查技术导则.pdf VIP
- 2023-2024学年度冀教版五年级上册小学数学期末考试卷 .pdf VIP
- 大气污染控制工程课件.pptx VIP
文档评论(0)