如何通过SAP脚本简便获取SAP系统当前日期?
更简便的SAP脚本获取系统日期方法
嘿,其实你完全不用绕到IW37N变式这么麻烦,有几个更直接的方案可以试试:
方案1:直接从System>Status窗口读取日期字段
你之前已经打开了System>Status窗口,但没注意到日期字段就在同一个窗口里!只需要在原有代码基础上补充一行读取SYST-DATUM的代码即可:
Set SapGuiAuto = GetObject("SAPGUI") Set SAPApp = SapGuiAuto.GetScriptingEngine Set SAPConnection = SAPApp.Children(0) Set session = SAPConnection.Children(0) Dim systemDate, systemTime As String ' 打开系统状态窗口 session.findById("wnd[0]/mbar/menu[4]/menu[11]").Select ' 读取系统时间和日期 systemTime = session.findById("wnd[1]/usr/ctxtSYST-UZEIT").Text systemDate = session.findById("wnd[1]/usr/ctxtSYST-DATUM").Text ' 新增这行获取日期 ' 关闭系统状态窗口(可选,保持界面整洁) session.findById("wnd[1]/tbar[0]/btn[0]").press ' 测试输出 MsgBox "SAP系统日期:" & systemDate & vbCrLf & "SAP系统时间:" & systemTime
这个方法完全沿用你原来的操作逻辑,只是补充了日期字段的读取,非常直观。
方案2:无需打开任何窗口,直接读取系统字段
如果你不想打开额外窗口,还可以直接通过SAP GUI脚本访问系统核心字段SYST-DATUM和SYST-UZEIT,一步到位获取日期时间:
Set SapGuiAuto = GetObject("SAPGUI") Set SAPApp = SapGuiAuto.GetScriptingEngine Set SAPConnection = SAPApp.Children(0) Set session = SAPConnection.Children(0) Dim systemDate As String Dim systemTime As String ' 直接读取系统日期和时间 systemDate = session.findById("wnd[0]/usr/ctxtSYST-DATUM").Text systemTime = session.findById("wnd[0]/usr/ctxtSYST-UZEIT").Text MsgBox "SAP系统日期:" & systemDate & vbCrLf & "SAP系统时间:" & systemTime
这个方法效率最高,不需要任何额外操作,直接获取系统当前的日期时间。
方案3:通过执行ABAP代码获取(兼容性最强)
如果你的SAP环境对直接访问字段有限制,还可以通过执行一段极简的ABAP代码来获取日期:
Set SapGuiAuto = GetObject("SAPGUI") Set SAPApp = SapGuiAuto.GetScriptingEngine Set SAPConnection = SAPApp.Children(0) Set session = SAPConnection.Children(0) Dim systemDate As String ' 打开ABAP即时执行工具 session.findById("wnd[0]/tbar[0]/okcd").Text = "/nSE38" session.findById("wnd[0]").sendVKey 0 session.findById("wnd[0]/usr/ctxtPROGRAM").Text = "RS_RUN_ABAP" session.findById("wnd[0]").sendVKey 0 ' 输入获取日期的ABAP代码 session.findById("wnd[0]/usr/txtSOURCE").Text = "WRITE SY-DATUM." ' 执行代码 session.findById("wnd[0]/tbar[1]/btn[8]").press ' 读取输出结果 systemDate = session.findById("wnd[0]/usr/cntlRESULT/shellcont/shell").GetCellValue(0, 0) ' 关闭相关窗口 session.findById("wnd[0]/tbar[0]/btn[12]").press session.findById("wnd[0]/tbar[0]/btn[12]").press MsgBox "SAP系统日期:" & systemDate
这个方法几乎适用于所有SAP系统环境,兼容性拉满,只是步骤相对多一点。
内容的提问来源于stack exchange,提问作者Jarron
相关产品推荐
相关产品推荐

