如何在SAP Logon中自动执行重复任务


How to Automate repeated tasks in SAP Logon

我接到一个任务,让办公室里的人每天使用SAP Logon 640完成一些无聊的任务。

大约有30-40个事务需要自动化。

我在SAP Automation上搜索了很多,找到了SAP GUI Scripting,但没有找到python, php或java的任何起点。

我应该如何开始使用python, php或java自动化SAP事务?我甚至不确定我需要从我的IT部门开始做什么。

我们使用VBScript或c#来自动执行任务。使用VBSCript是最简单的。让SAP GUI记录一个任务,然后它会生成一个vbscript,可以作为你编码的起点。当你有了这个vbscript文件,你就可以把它翻译成其他语言了

您可以使用Sikuli自动化SAP Logon中的许多任务。它可以识别UI元素并与之交互。您只需要提供这些元素的图像。SAP Logon中的许多功能都可以通过快捷键使用,因此您也可以使用它非常轻松地模拟键盘输入。Sikuli可用于Java和Python。

如果我理解正确,您可以使用JAVA实现计划作业。

SapGui内置了记录和播放工具,可以为您提供开箱即用的vbs文件,您可以将其用于自动化,如果值不改变,那么您可以每次使用相同的脚本。

您可以在sap gui窗口的主菜单中找到它自定义本地布局(Alt+F12)->脚本录制和播放

试试Python

我用这个脚本做的。

    import win32com.client
    import subprocess
    import sys
    import time
    def saplogin():
        try:
            # path to saplogon
            path = r"C:'Program Files (x86)'SAP'FrontEnd'SAPgui'saplogon.exe"
            subprocess.Popen(path)
            time.sleep(10)
            SapGuiAuto = win32com.client.GetObject('SAPGUI')
            if not type(SapGuiAuto) == win32com.client.CDispatch:
                return
            application = SapGuiAuto.GetScriptingEngine
            if not type(application) == win32com.client.CDispatch:
                SapGuiAuto = None
                return
            connection = application.OpenConnection("ModuleName", True)
            if not type(connection) == win32com.client.CDispatch:
                application = None
                SapGuiAuto = None
                return
            session = connection.Children(0)
            if not type(session) == win32com.client.CDispatch:
                connection = None
                application = None
                SapGuiAuto = None
                return
            session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "Username"
            session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "Password"
            session.findById("wnd[0]").sendVKey(0)
            # **Record Your Script with SAP and paste here**
            print(sys.exc_info())
        finally:
            session = None
            connection = None
            application = None
            SapGuiAuto = None
    saplogin()