代码之家  ›  专栏  ›  技术社区  ›  Jarron

获取SAP系统日期

  •  1
  • Jarron  · 技术社区  · 8 年前

    使用SAP脚本,我试图找出一种获取SAP当前系统日期的方法。

    如果遵循系统(&T);地位有一个字段显示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 = .....
    

    enter image description here

    我觉得必须有一种简单的方法来获取系统日期,但在网上搜索了几个小时后,我什么也没找到。任何帮助都将不胜感激,谢谢。

    编辑:

    我找到了一种解决办法。这不是最简单的方法,但我可以在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
    
    2 回复  |  直到 5 年前
        1
  •  2
  •   ScriptMan    8 年前

    塞尔吉是对的。问题是相同的日期被隐藏了。因此,变量不可用。我想知道,所以我在午夜前不久登录了SAP。看起来是这样的:

    enter image description here

    脚本可能如下所示:

    '...
    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
    '...
    

    当做 编剧

        2
  •  1
  •   Sergii Levchenko    8 年前

    让您尝试以下操作: systemDate=会话。findById(“wnd【1】/usr/ctxtSYST数据”)。文本 有关详细信息,请参见: https://archive.sap.com/discussions/thread/1095191

    当做 谢尔盖