SAP Scripting Tracker基本使用技巧(续)

本篇承接上一篇 https://blog.csdn.net/stone0823/article/details/126735845,对代码稍进行修正:

  • 能同时导入多张凭证
  • Python 接收 SAP 创建凭证之后的状态栏消息

Excel 模板文件格式如下:

框架代码同上篇,导入凭证的完整代码如下:


from SapSession import getSession, returnEasyAccess #代码参见上一篇博文
import pandas as pd

def read_from_excel_file():
    df = pd.read_excel("importfile.xlsx")
    return df.to_dict("records")

def create_fi_docs():
    # 读取数据
    data = read_from_excel_file()
    
    fi_doc_number = ""
    fi_doc = []

    for item in data: 
        if fi_doc_number == "" or fi_doc_number == item.get("凭证号码"):  
            fi_doc.append(item)
            fi_doc_number = item.get("凭证号码")  
        else:           
            do_create_fi_doc(fi_doc)
            fi_doc.clear()

            # 添加本行
            fi_doc.append(item)
            fi_doc_number = item.get("凭证号码")     

    do_create_fi_doc(fi_doc)      


def do_create_fi_doc(fi_doc):
    session = getSession()
    returnEasyAccess(session)

    # F-02 事务码
    session.findById("wnd[0]").maximize()
    session.findById("wnd[0]/tbar[0]/okcd").text = "F-02"
    session.findById("wnd[0]").sendVKey(0)

    # 会计凭证抬头
    session.findById("wnd[0]/usr/ctxtBKPF-BLDAT").text = fi_doc[0].get("凭证日期")  
    session.findById("wnd[0]/usr/ctxtBKPF-BUKRS").text = fi_doc[0].get("公司代码")
    session.findById("wnd[0]/usr/ctxtBKPF-BUDAT").text = fi_doc[0].get("过账日期")  
    session.findById("wnd[0]/usr/txtBKPF-MONAT").text = fi_doc[0].get("期间")
    session.findById("wnd[0]/usr/ctxtBKPF-WAERS").text = fi_doc[0].get("币别")

    # 循环录入每一行
    for row in fi_doc:
        session.findById("wnd[0]/usr/ctxtRF05A-NEWBS").text = row.get("过账码")
        session.findById("wnd[0]/usr/ctxtRF05A-NEWKO").text = row.get("科目")
        session.findById("wnd[0]/usr/ctxtRF05A-NEWKO").setFocus()
        session.findById("wnd[0]/usr/ctxtRF05A-NEWKO").caretPosition = 8
        session.findById("wnd[0]").sendVKey(0)  # 回车
        session.findById("wnd[0]/usr/txtBSEG-WRBTR").text = row.get("金额")

        if str(row.get("科目")) == "10020100": # 银行科目需要起息日
            session.findById("wnd[0]/usr/ctxtBSEG-VALUT").text = row.get("过账日期")     

    # 模拟后过账
    session.findById("wnd[0]/mbar/menu[0]/menu[3]").select()
    session.findById("wnd[0]/tbar[0]/btn[11]").press()

    # SAP返回消息(SAP状态栏)
    print( session.FindById("wnd[0]/sbar").Text )

if __name__ == '__main__':
    create_fi_docs()

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scripting Tracker是一种用于跟踪Python代码执行的工具。它可以帮助开发人员在程序运行时收集和分析代码执行的数据。 首先,我们需要在Python环境中安装Scripting Tracker。可以使用pip安装命令来安装,例如:pip install scripting-tracker。 安装完成后,在Python脚本中引入Scripting Tracker模块。我们可以使用以下代码将Scripting Tracker导入到Python中: ```python import scripting_tracker ``` 接下来,我们可以在代码中使用Scripting Tracker提供的函数和装饰器来跟踪代码的执行。例如,可以使用`@scripting_tracker.track()`装饰器来标记要跟踪的函数或方法,代码示例如下: ```python import scripting_tracker @scripting_tracker.track() def my_function(): # 这里是函数的代码 # 在函数调用之前启动Scripting Tracker scripting_tracker.start() # 调用经过跟踪的函数 my_function() # 停止Scripting Tracker,以便生成并保存跟踪数据 scripting_tracker.stop() ``` 在以上示例中,我们定义了一个名为`my_function`的函数,并使用`@scripting_tracker.track()`装饰器对其进行跟踪。在程序运行时,Scripting Tracker会记录函数的执行时间、返回值等信息。 一旦我们停止Scripting Tracker,它将会生成一个包含跟踪数据的文件。我们可以使用Scripting Tracker提供的功能来分析和可视化这些数据,以便更好地了解代码的执行情况。 总之,Scripting Tracker是一种方便的工具,可以帮助开发人员对Python代码的执行过程进行跟踪和分析。使用它可以提供关于代码性能和执行时间的有价值的信息,以帮助我们优化和改进我们的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值