通过EXCEL宏和SAP Script进行批量业务处理

更新时间:2023-10-14 00:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

通过EXCEL宏和SAP Script进行批量业务处理

SAP提供了很多批量导入的工具,但问题是一般情况下不会赋予普通用户这些权限,因此我结合EXCEL VBA和SAP Script功能整理出一个简易的批量业务处理方式,供大家参考 ? 使用SAP Script Recording功能录制SAP操作,生成代码块 1. 激活SAP Script Recording

2. 选择存放路径和script代码块文件名称

3. 点击开始录制SAP操作,建议以”/N”+事务代码,以保存为结尾。生成如下程序

代码文件,可以用文本编辑器打开

? 通过EXCEL VBA编写宏代码,用于读取数据模板和导入SAP 1. 进入VBA编辑视图

2. 复制Script代码块中的代码,并做以下适当修改:

a) 在两个\和 \之前加入\

b) 修改录制中的固定值,改为模板中的相应字段,如 Range(\等 c) 如有更为复杂的数据处理需求,可以在宏代码中加入适当的判断或者循环语句

? 以下代码用于修改物料主数据的,前段和末端代码可以沿用,只需用script代码覆盖

病修改中段原代码即可。供参考。

Sub EXCEL_to_SAP()

yes_No = MsgBox(\If yes_No = 2 Then End End If

Range(\

On Error GoToNotLoggedOnSAP:

Set SapGuiAuto = GetObject(\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(\on SAP\ Exit Sub On Error GoTo 0

10 If TEMP > 1 Then For I = 2 To TEMP

'********************** 1. copy from scrip

'********************** 2. add \lines

'********************** 3. change fixed value by fields' value, refer to ->Range(\I).Value <-

If Not IsObject(Application) Then Set SapGuiAuto = GetObject(\

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, \WScript.ConnectObject Application, \End If

session.findById(\

session.findById(\session.findById(\

session.findById(\session.findById(\session.findById(\session.findById(\

session.findById(\2:SAPLMGD1:2001/ctxtMARA-EXTWG\

session.findById(\2:SAPLMGD1:2001/ctxtMARA-EXTWG\

session.findById(\2:SAPLMGD1:2001/ctxtMARA-EXTWG\session.findById(\session.findById(\

' ********************** copy from scrip <- Next End If

End Sub

本文来源:https://www.bwwdw.com/article/051f.html

Top