获取 SAP 系统日期
Get SAP System Date
使用 SAP 脚本,我试图找出一种获取 SAP 当前系统日期的方法。
如果我点击系统 > 状态...,有一个字段显示 SAP 系统的当前时间,但不幸的是没有当前日期的字段。下面的代码。
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 = .....
我觉得一定有一种获取系统日期的简单方法,但在网上搜索了几个小时后,我一无所获。任何帮助将不胜感激,谢谢。
编辑:
我找到了一种解决方案,有点。这不是最简单的方法,但我可以在 SAP 的一个事务 (IW37N) 中保存一个变体,以便它在输入时自动填充日期和时间字段,其中的动态值为 now。保存变体后,我可以使用 SAP 脚本访问事务 > 访问变体 > 访问两个动态字段(下面的代码)。同样,这并不是最简单的选择,所以我愿意听取更好的想法。
'Connect to SAP
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPConnection = SAPApp.Children(0)
Set session = SAPConnection.Children(0)
'Enter Transaction
session.findById("wnd[0]/tbar[0]/okcd").Text = "/NIW37N"
session.findById("wnd[0]").sendVKey 0
'Select Variant
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[1]/usr/txtV-LOW").Text = "TEST001"
session.findById("wnd[1]/usr/ctxtENVIR-LOW").Text = ""
session.findById("wnd[1]/usr/txtENAME-LOW").Text = ""
session.findById("wnd[1]/usr/txtAENAME-LOW").Text = ""
session.findById("wnd[1]/usr/txtMLANGU-LOW").Text = ""
session.findById("wnd[1]/tbar[0]/btn[8]").press
'Select Dates Tab
session.findById("wnd[0]/usr/tabsTABSTRIP_TABBLOCK1/tabpS_TAB5").Select
'Get Field Values
Dim systemDate, systemTime As String
systemDate = session.findById("wnd[0]/usr/tabsTABSTRIP_TABBLOCK1/tabpS_TAB5/ssub%_SUBSCREEN_TABBLOCK1:RI_ORDER_OPERATION_LIST:1500/ctxtS_ISDD-LOW").Text
systemTime = session.findById("wnd[0]/usr/tabsTABSTRIP_TABBLOCK1/tabpS_TAB5/ssub%_SUBSCREEN_TABBLOCK1:RI_ORDER_OPERATION_LIST:1500/ctxtS_ISDZ-LOW").Text
让你试试这个:
systemDate = session.findById("wnd[1]/usr/ctxtSYST-DATUM").文本
您可以在那里查看详细信息:
https://archive.sap.com/discussions/thread/1095191
问候
谢尔盖
Sergii 是对的。问题是隐藏了相同的日期。因此,变量不可用。我想知道,所以我在午夜前不久登录了 SAP。它看起来像这样:
脚本可能如下所示:
'...
session.findById("wnd[0]/mbar/menu[1]/menu[11]").select
on error resume next
LAST_LOGON_DATE = session.findById("wnd[1]/usr/ctxtLAST_LOGON_DATE").text
SESSION_START_DATE = session.findById("wnd[1]/usr/ctxtSESSION_START_DATE").text
SYST_DATE = session.findById("wnd[1]/usr/ctxtSYST-DATUM").setFocus
on error goto 0
session.findById("wnd[1]").close
if SESSION_START_DATE = "" then SESSION_START_DATE = LAST_LOGON_DATE
if SYST_DATE = "" then SYST_DATE = SESSION_START_DATE
msgbox LAST_LOGON_DATE & " / " & SESSION_START_DATE & " / " & SYST_DATE
'...
此致,
脚本人
使用 SAP 脚本,我试图找出一种获取 SAP 当前系统日期的方法。
如果我点击系统 > 状态...,有一个字段显示 SAP 系统的当前时间,但不幸的是没有当前日期的字段。下面的代码。
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 = .....
我觉得一定有一种获取系统日期的简单方法,但在网上搜索了几个小时后,我一无所获。任何帮助将不胜感激,谢谢。
编辑:
我找到了一种解决方案,有点。这不是最简单的方法,但我可以在 SAP 的一个事务 (IW37N) 中保存一个变体,以便它在输入时自动填充日期和时间字段,其中的动态值为 now。保存变体后,我可以使用 SAP 脚本访问事务 > 访问变体 > 访问两个动态字段(下面的代码)。同样,这并不是最简单的选择,所以我愿意听取更好的想法。
'Connect to SAP
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPConnection = SAPApp.Children(0)
Set session = SAPConnection.Children(0)
'Enter Transaction
session.findById("wnd[0]/tbar[0]/okcd").Text = "/NIW37N"
session.findById("wnd[0]").sendVKey 0
'Select Variant
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[1]/usr/txtV-LOW").Text = "TEST001"
session.findById("wnd[1]/usr/ctxtENVIR-LOW").Text = ""
session.findById("wnd[1]/usr/txtENAME-LOW").Text = ""
session.findById("wnd[1]/usr/txtAENAME-LOW").Text = ""
session.findById("wnd[1]/usr/txtMLANGU-LOW").Text = ""
session.findById("wnd[1]/tbar[0]/btn[8]").press
'Select Dates Tab
session.findById("wnd[0]/usr/tabsTABSTRIP_TABBLOCK1/tabpS_TAB5").Select
'Get Field Values
Dim systemDate, systemTime As String
systemDate = session.findById("wnd[0]/usr/tabsTABSTRIP_TABBLOCK1/tabpS_TAB5/ssub%_SUBSCREEN_TABBLOCK1:RI_ORDER_OPERATION_LIST:1500/ctxtS_ISDD-LOW").Text
systemTime = session.findById("wnd[0]/usr/tabsTABSTRIP_TABBLOCK1/tabpS_TAB5/ssub%_SUBSCREEN_TABBLOCK1:RI_ORDER_OPERATION_LIST:1500/ctxtS_ISDZ-LOW").Text
让你试试这个: systemDate = session.findById("wnd[1]/usr/ctxtSYST-DATUM").文本 您可以在那里查看详细信息: https://archive.sap.com/discussions/thread/1095191
问候 谢尔盖
Sergii 是对的。问题是隐藏了相同的日期。因此,变量不可用。我想知道,所以我在午夜前不久登录了 SAP。它看起来像这样:
脚本可能如下所示:
'...
session.findById("wnd[0]/mbar/menu[1]/menu[11]").select
on error resume next
LAST_LOGON_DATE = session.findById("wnd[1]/usr/ctxtLAST_LOGON_DATE").text
SESSION_START_DATE = session.findById("wnd[1]/usr/ctxtSESSION_START_DATE").text
SYST_DATE = session.findById("wnd[1]/usr/ctxtSYST-DATUM").setFocus
on error goto 0
session.findById("wnd[1]").close
if SESSION_START_DATE = "" then SESSION_START_DATE = LAST_LOGON_DATE
if SYST_DATE = "" then SYST_DATE = SESSION_START_DATE
msgbox LAST_LOGON_DATE & " / " & SESSION_START_DATE & " / " & SYST_DATE
'...
此致, 脚本人