VBA excel:如何在SAP中选择会话

问题描述

我有以下问题,我在SAP F6P系统中打开了两个会话/窗口,我需要告诉两个人执行不同的工作。它如何为两个会话发送命令?

请看一下下面的代码,我发现了哪个号码是会话,但我不知道怎么称呼它。

请注意,如果我登录SAP并打开两个会话,则第一个会话似乎是1号,第二个似乎是2号。如果现在我删除第二个并创建一个新的,则系统将第三个理解为第三个而不是第二个。

enter image description here

代码如下:

    Sub SAP_activesession()
    If Not IsObject(App) Then
       Set SapGuiAuto = Getobject("SAPGUI")
       Set App = SapGuiAuto.GetScriptingEngine
    End If
    If Not IsObject(Connection) Then
       Set Connection = App.Children(0)
    End If
    If Not IsObject(Session) Then
       Set Session = Connection.Children(1)
    End If
    If IsObject(wscript) Then
       wscript.ConnectObject Session,"on"
       wscript.ConnectObject App,"on"
    End If
    'Set Session = App.ActiveSession
    
    'Session.findById("wnd[0]").maximize
    'Session.findById("wnd[0]/tbar[0]/okcd").text = "/nf-28"
    Dim sn,ss,su,st,session_number_all,syn,sid,client
          ' ðëçèïò áíïéêôþí session
    'sn = Session.info.SessionNumber                         ' íïõìåñï ôïõ session
    'ss = Session.info.systemname                            ' system name
    'su = Session.info.User                                  ' user name
    'st = Session.info.transaction                           ' transaction
    
    
    'MsgBox ("session count :" & sc & " " & sn & " " & su & " " & st)
    
    Dim NoSession: Dim time1,time2
    
    session_number_all = Connection.Children.Count: MsgBox (session_number_all)
    For NoSession = 0 To session_number_all - 1 Step 1
        Set Session = Connection.Children(Int(NoSession))       'epilegeis session
        
        sn = Session.info.SessionNumber                         ' íïõìåñï ôïõ session
        ss = Session.info.systemname                            ' system name
        su = Session.info.User                                  ' user name
        st = Session.info.transaction                           ' transaction
        sid = Session.info.systemsessionid                      ' session id
        syn = Session.info.systemnumber                         ' system number
        client = Session.info.client
    
        MsgBox ("Total session: " & session_number_all & vbNewLine & _
                    "Session number: " & sn & vbNewLine & _
                    "Session children: " & session_number_all & vbNewLine & _
                    "Session system: " & ss & vbNewLine & _
                    "Session user: " & su & vbNewLine & _
                    "Session transaction: " & st & vbNewLine & _
                    "Session Id: " & sid & vbNewLine & _
                    "System No: " & syn & vbNewLine & _
                    "Client: " & client)
                    
        Session.findById("wnd[0]/tbar[0]/okcd").text = sn & "." & st
    
            time1 = Now
            time2 = Now + TimeValue("0:00:05")
                Do Until time1 >= time2
                    DoEvents
                    time1 = Now()
                Loop
    
            'Set Session = Connection.Children.ITEM(NoSession)
            
        On Error Resume Next
    Next NoSession
    
    End Sub

先谢谢您, 瓦西里斯

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)