Получить системную дату SAP

Используя сценарии SAP, я пытаюсь найти способ получения текущей системной даты SAP.

Если я следую за System > Status..., есть поле, отображающее текущее время системы 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), чтобы он автоматически заполнял поле даты и времени динамическим значением теперь при входе. После сохранения варианта я могу использовать сценарии 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

2 ответа

Решение

Сергей был прав. Проблема в том, что одни и те же даты скрыты. Таким образом, переменные не доступны. Я хотел знать, поэтому я вошел в 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
'...

С уважением, ScriptMan

Давайте попробуем это: systemDate = session.findById("wnd[1]/usr/ctxtSYST-DATUM"). Текст для подробностей вы можете увидеть там: https://archive.sap.com/discussions/thread/1095191

С уважением, Сергей

Другие вопросы по тегам