首页 > 编程语言 >Python操作SAP

Python操作SAP

时间:2022-10-21 14:12:07浏览次数:52  
标签:findById sap log Python window session 操作 SAP

一些基础的操作SAP的Code

Open SAP

# Open SAP
def open_sap():
    try:
        Application(backend="win32").start(sap_path, timeout=60)
        log.info("Open SAP Successful")
    except:
        log.error("Open SAP Failed")

 

Enter AP1 and logon

# Enter AP1 then Logon
def enter_sap_system(username, password, sid):
    try:
        # 登录AP1 (sid)
        log.info("Enter SAP system")
        app = Application(backend="win32").connect(path=sap_path)
        app.window(title='SAP Logon Pad 770').wait('exists ready', timeout=60)
        sap_window = app.window(title='SAP Logon Pad 770')
        sap_window.child_window(class_name="Edit").set_focus()
        sap_window.child_window(class_name="Edit").set_text(sid)
        sap_window.child_window(class_name="Edit").set_focus()
        send_keys("{ENTER}")
        time.sleep(2)
        sap_window.child_window(class_name="Edit").set_focus()
        sap_window.set_focus()
        send_keys("+{ENTER}")
        log.info("Enter sap system successful")
        session = ""
        time.sleep(2)
        # 连接SAP
        while True:
            try:
                pythoncom.CoInitialize()
                SapGuiAuto = win32com.client.GetObject("SAPGUI")
                application = SapGuiAuto.GetScriptingEngine
                if not type(application) == win32com.client.CDispatch:
                    SapGuiAuto = None
                connection = application.Children(0)
                if not type(connection) == win32com.client.CDispatch:
                    application = None
                    SapGuiAuto = None
                session = connection.Children(0)
                if not type(session) == win32com.client.CDispatch:
                    connection = None
                    application = None
                    SapGuiAuto = None
                break
            except:
                log.warning("Connect failed, please wait 3 seconds")
                time.sleep(3)

        # 登录
        try:
            session.findById("wnd[0]/usr/txtRSYST-BNAME").text = username
            session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = password
            session.findById("wnd[0]/usr/txtRSYST-LANGU").text = "EN"
            session.findById("wnd[0]/tbar[0]/btn[0]").press()
        except:
            log.warning("Login failed")

        # 登录冲突,踢人
        try:
            session.findById("wnd[1]/usr/radMULTI_LOGON_OPT1").select()
            session.findById("wnd[1]/tbar[0]/btn[0]").press()
        except:
            pass

        # 有时会弹出确认框,点击确认即可
        try:
            time.sleep(3)
            session.findById("wnd[1]/tbar[0]/btn[0]").press()
        except:
            pass

        log.info("login successful, user:" + username)
        return session
    except:
        log.info("Enter SAP System failed")

退出SAP

def exit_after_n_second(n):
    time.sleep(n)
    # 关闭SAP
    __close_sap_window_by_class_name('SAP_FRONTEND_SESSION')
    __close_sap_window_by_title('SAP Logon Pad 770')

 

标签:findById,sap,log,Python,window,session,操作,SAP
From: https://www.cnblogs.com/kykstyle/p/16813241.html

相关文章

  • 一位同学的Python大作业【分析当当网书籍价格、出版社、电子书版本占比数据】
    目录​​前言​​​​本次案例实现目标​​​​最基本思路流程:<通用>​​​​一.数据来源分析​​​​二.代码实现步骤过程:代码实现基本四大步骤​​​​代码实现​​......
  • 017 Python 流程控制之 if 判断
    博客配套视频链接:​​https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0​​b站直接看配套github链接:​​https://github.com/nickchen121/shui-water......
  • Linux常用启动python和jar的后台运行命令
    1>通过端口查看是否启动并获取PIDlsof-i:端口号(例如,7777、4444、10000)2>关闭端口kill-9PID号(例如,kill-97777)3>启动imei.pynohuppython-uimei.py>/dev/null......
  • scrapy爬虫简单使用&python执行cmd命令程序
    1.安装pipinstallscrapy2.scrapy简单运行以及架构1.项目创建以及运行创建项目aaa@localhostpyspace%scrapystartprojectdemo1NewScrapyproject'demo1',using......
  • 现代操作系统 原理与实现 电子书 pdf
    作者:陈海波/夏虞斌出版社:机械工业出版社 链接:现代操作系统原理与实现  本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实......
  • python 连库定时生成excel文件并转成可执行文件
    importscheduleimportpandasaspdimportpymysql,xlwtfromdatetimeimportdatetimefromtimeimportstrftimedt=datetime.now()#print(dt)defexport_excel(dt):......
  • Python打包成exe,包含cx_oracle的情况
    当Python程序应用了cx_oracle包,打包成功之后,exe文件不能正常运行。需要按照以下步骤执行1,执行pyinstaller-Fmain.py,执行之后生成一个main.spec文件2,按照下图修改spec文......
  • 为什么 Python 会如此火爆?
    python是编程语言,属于高级语言,python之所以火爆,主要是爬虫的应用,也就是你可以来做自己的大数据,用python来进行搜索数据!第二python应用在人工智能上,效果较好!第三:它属于胶水......
  • Python | 用Python制作送给女票的生日礼物
    HappyBirthday程序视频地址:​​https://www.bilibili.com/video/BV1R7411C7A1​​代码地址:​​https://github.com/borninfreedom/HappyBirthday​​截图: ......
  • git基础练习操作
    1.d盘下新建git_test文件夹,并进入里面,查看用户信息2.gitadd:将文件提交到暂存区;gitcommit-m:将暂存区文件提交到仓库(单引号内为注释);gitstatus:检查当前文件状态(检测是否......