Skip to Content

Hi I am totally new to SAP. So please bear with me and my missing skills. I have tried to record a session to log into SAP. And open the first session i need.

It works good. But i normally work with more than one session. I tried to record this but it only create 2 new sessions. Below is my recorded script.

I need to open 2 more with the name fbl5n and udm_bp. My script below open the first session and then it just create 2 blank sessions.

Please try help with this. I have of course in below script removed my password.

Sincerely

Abjac

If Not IsObject(application) Then

   Set SapGuiAuto  = GetObject(“SAPGUI”)

   Set application = SapGuiAuto.GetScriptingEngine

End If

If Not IsObject(connection) Then

   Set connection = application.Children(0)

End If

If Not IsObject(session) Then

   Set session    = connection.Children(0)

End If

If IsObject(WScript) Then

   WScript.ConnectObject session,     “on”

   WScript.ConnectObject application, “on”

End If

session.findById(“wnd[0]”).maximize

session.findById(“wnd[0]/usr/txtRSYST-BNAME”).text = “Y99DEW838”

session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “***********”

session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).setFocus

session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).caretPosition = 11

session.findById(“wnd[0]”).sendVKey 0

session.findById(“wnd[0]/tbar[0]/okcd”).text = “/n/hoag/akon “

session.findById(“wnd[0]/tbar[0]/btn[0]”).press

session.findById(“wnd[0]/tbar[1]/btn[17]”).press

session.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).selectedRows = “0”

session.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).doubleClickCurrentCell

session.findById(“wnd[0]/tbar[1]/btn[8]”).press

session.createSession

session.createSession

To report this post you need to login first.

33 Comments

You must be Logged on to comment or reply to a post.

  1. Stefan Schnell

    Hello Ab,

    welcome in the Scripting Language forum.

    You can try this to add more sessions with your transaction codes:

    ...
    session.findById("wnd[0]/tbar[1]/btn[8]").press
    session.createSession 'Session 2
    session.createSession 'Session 3
    'add the following code to your script
    session.createSession 'Session 4
    WScript.Sleep 1000
    Set session4 = connection.Children(3)
    session4.findById("wnd[0]/tbar[0]/okcd").text = "/nfbl5n"
    session4.findById("wnd[0]").sendVKey 0
    session.createSession 'Session 5
    WScript.Sleep 1000
    Set session5 = connection.Children(4)
    session5.findById("wnd[0]/tbar[0]/okcd").text = "/nudm_bp"
    session5.findById("wnd[0]").sendVKey 0
    


    Let us know your results.


    Cheers

    Stefan

    (0) 
    1. Ab Jac Post author

      HI Stefan and thanks for your answer. I tried your code but it always give me a cannot be found by id and the code stop. I have tried allot to change the id. But it seems not be working.

      If i run the codes separately it works . Below you can see the 3 codes.

      code for fbl5n.

      If Not IsObject(application) Then

         Set SapGuiAuto  = GetObject(“SAPGUI”)

         Set application = SapGuiAuto.GetScriptingEngine

      End If

      If Not IsObject(connection) Then

         Set connection = application.Children(0)

      End If

      If Not IsObject(session) Then

         Set session    = connection.Children(0)

      End If

      If IsObject(WScript) Then

         WScript.ConnectObject session,     “on”

         WScript.ConnectObject application, “on”

      End If

      session.findById(“wnd[0]”).maximize

      session.findById(“wnd[0]/usr/txtRSYST-BNAME”).text = “Y99DEW838”

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “***********”

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).setFocus

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).caretPosition = 11

      session.findById(“wnd[0]”).sendVKey 0

      session.findById(“wnd[0]/tbar[0]/okcd”).text = “fbl5n “

      session.findById(“wnd[0]”).sendVKey 0

      session.findById(“wnd[0]/usr/chkX_SHBV”).selected = true

      session.findById(“wnd[0]/usr/chkX_MERK”).selected = true

      session.findById(“wnd[0]/usr/chkX_PARK”).selected = true

      session.findById(“wnd[0]/usr/ctxtPA_STIDA”).text = “”

      session.findById(“wnd[0]/usr/chkX_PARK”).setFocus

      Code for udm_bp

      If Not IsObject(application) Then

         Set SapGuiAuto  = GetObject(“SAPGUI”)

         Set application = SapGuiAuto.GetScriptingEngine

      End If

      If Not IsObject(connection) Then

         Set connection = application.Children(0)

      End If

      If Not IsObject(session) Then

         Set session    = connection.Children(0)

      End If

      If IsObject(WScript) Then

         WScript.ConnectObject session,     “on”

         WScript.ConnectObject application, “on”

      End If

      session.findById(“wnd[0]”).maximize

      session.findById(“wnd[0]/usr/txtRSYST-BNAME”).text = “Y99DEW838”

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “***********”

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).setFocus

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).caretPosition = 11

      session.findById(“wnd[0]”).sendVKey 0

      session.findById(“wnd[0]/tbar[0]/okcd”).text = “udm_bp “

      session.findById(“wnd[0]”).sendVKey 0

      Code for /n/hoag/akon

      If Not IsObject(application) Then

         Set SapGuiAuto  = GetObject(“SAPGUI”)

         Set application = SapGuiAuto.GetScriptingEngine

      End If

      If Not IsObject(connection) Then

         Set connection = application.Children(0)

      End If

      If Not IsObject(session) Then

         Set session    = connection.Children(0)

      End If

      If IsObject(WScript) Then

         WScript.ConnectObject session,     “on”

         WScript.ConnectObject application, “on”

      End If

      session.findById(“wnd[0]”).maximize

      session.findById(“wnd[0]/usr/txtRSYST-BNAME”).text = “Y99DEW838”

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “***********”

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).setFocus

      session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).caretPosition = 11

      session.findById(“wnd[0]”).sendVKey 0

      session.findById(“wnd[0]/tbar[0]/okcd”).text = “/n/hoag/akon “

      session.findById(“wnd[0]/tbar[0]/btn[0]”).press

      session.findById(“wnd[0]/tbar[1]/btn[17]”).press

      session.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).selectedRows = “0”

      session.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).doubleClickCurrentCell

      session.findById(“wnd[0]/tbar[1]/btn[8]”).press

      session.createSession

      session.createSession

      The all run and work if i do them individual but to open them in one,. I cant make that work.

      I go BH.

      ScreenHunter_121 Oct. 23 13.10.jpg

      And then i come double click YPE.

      ScreenHunter_122 Oct. 23 13.10.jpg

      And i come to this screen from where i run my script.

      ScreenHunter_123 Oct. 23 13.10.jpg

      The menu for this screen looks like this but of course with the script i dont touch that but i guess it show the names for the ids.

      ScreenHunter_124 Oct. 23 13.11.jpg

      I would actually love to be able to run a script from scratch so it find the screen and log me in in the 3 sessions. Also that i have tried but reading here. But in this case i cant get me from the YPE. Again it cant find that id.

      But please have a look if it possible to put these 3 codes together.

      Thanks

      Abjac

      (0) 
      1. Stefan Schnell

        Hello Ab,

        please try this to solve your requirement:

        '-Begin-----------------------------------------------------------------
        
          '-Directives----------------------------------------------------------
            Option Explicit
        
          '-Global Variables----------------------------------------------------
            Dim SapGuiAuto, application, connection, Waiting
            Dim session1, session2, session3
        
          '-Sub CreateSession---------------------------------------------------
            Sub onCreateSession(ByVal Session)
              Waiting = 0
            End Sub
        
          '-Main----------------------------------------------------------------
            If Not IsObject(application) Then
              Set SapGuiAuto = GetObject("SAPGUI")
              Set application = SapGuiAuto.GetScriptingEngine
            End If
        
            If Not IsObject(connection) Then
              Set connection = application.Children(0)
            End If
        
            If Not IsObject(session1) Then
              Set session1 = connection.Children(0)
            End If
        
            If IsObject(WScript) Then
              WScript.ConnectObject application, "on"
            End If
        
            session.findById("wnd[0]").maximize
            session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "Y99DEW838"
            session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "***********"
            session.findById("wnd[0]").sendVKey 0
        
            Waiting = 1
            session1.createSession
            Do While (Waiting = 1)
              WScript.Sleep 100
            Loop 
        
            If Not IsObject(session2) Then
              Set session2 = connection.Children(1)
            End If
        
            Waiting = 1
            session1.createSession
            Do While (Waiting = 1)
              WScript.Sleep 100
            Loop 
        
            If Not IsObject(session3) Then
              Set session3 = connection.Children(2)
            End If
        
            session1.findById("wnd[0]/tbar[0]/okcd").text = "/n/hoag/akon"
            session1.findById("wnd[0]").sendVKey 0
            session2.findById("wnd[0]/tbar[0]/okcd").text = "/nfbl5n"
            session2.findById("wnd[0]").sendVKey 0
            session3.findById("wnd[0]/tbar[0]/okcd").text = "/nudm_bp"
            session3.findById("wnd[0]").sendVKey 0
        
        '-End-------------------------------------------------------------------

        Let us know your results.

        Cheers

        Stefan

        (0) 
        1. Ab Jac Post author

          Hi Stefan and thanks for your answer.

          I get below boxes pop up and also below error in the end.

          ScreenHunter_125 Oct. 23 17.04.jpg

          Which means a script is trying to join SAP gui.

          Of course would be nice it pop up 2 times so not to have it.

          And finally i get this error. 

          ScreenHunter_126 Oct. 23 17.04.jpg

          Which i think its weird its the same as when i run one by one.,

          Have a look please .

          Sincerely

          Abjac

          (0) 
          1. Stefan Schnell

            Hello Ab,

            disable the notify checkboxes in your SAP Logon:

            /wp-content/uploads/2015/10/001_816731.jpg

            Start the script with a double click on the script in your Windows Explorer, neither drag and drop it to your session nor start it via Record and Playback.

            Let us know your result.

            Cheers

            Stefan

            (0) 
            1. Ab Jac Post author

              Hi Stefan and thanks . I disabled the boxes and that was fine, But i still got this error and have of course tried play around with it, I dont really understand why you put /n infront of the 2 other sessions. But i guess there is a logic answer on that. But the error i get now is this one.,

              Have a look.

              sincerely

              Abjac

              ScreenHunter_126 Oct. 23 17.04.jpg

              (0) 
              1. Stefan Schnell

                Hello Abjac,

                you get the WScript error because you don’t execute the script in the context of the Windows Scripting Host. Start the script like this

                001.JPG

                and all should be run well – on a 64-bit Windows. If you use 32-bit Windows do the same from the System32 directory.

                Let us know your results.

                Cheers

                Stefan

                (0) 
                1. Ab Jac Post author

                  Hi Stefan. Could you be so kind to put this in a copy paste format. I was trying to read about it, And i created a bat file. Some say that is working ok.

                  My full path to my vbs file is.

                  C:\Users\IBM_ADMIN\Desktop\SAP\Sap Scripts\Script7login.vbs”

                  And i created a bat file like below.

                  start “” “C:\Users\IBM_ADMIN\Desktop\SAP\Sap Scripts\Script7login.vbs”

                  Saved this as a bat file,  When i run this it give me another error, The wscript error is gone but i get this below instead, But please confirm if this metode is ok to run, And if with your way please put in copy paste format,

                  Here is the error i get now,

                  Have a look thanks

                  ScreenHunter_126 Oct. 24 11.18.jpg

                  (0) 
                    1. Ab Jac Post author

                      HI Stefan and thanks i removed the line.

                      Option Explicit

                      and back in my script is this.

                      ‘-Begin—————————————————————–

                        ‘-Directives———————————————————-

                       

                        ‘-Global Variables—————————————————-

                          Dim SapGuiAuto, application, connection, Waiting

                          Dim session1, session2, session3

                        ‘-Sub CreateSession—————————————————

                          Sub onCreateSession(ByVal Session)

                            Waiting = 0

                          End Sub

                        ‘-Main—————————————————————-

                          If Not IsObject(application) Then

                            Set SapGuiAuto = GetObject(“SAPGUI”)

                            Set application = SapGuiAuto.GetScriptingEngine

                          End If

                          If Not IsObject(connection) Then

                            Set connection = application.Children(0)

                          End If

                          If Not IsObject(session1) Then

                            Set session1 = connection.Children(0)

                          End If

                          If IsObject(WScript) Then

                            WScript.ConnectObject application, “on”

                          End If

                          session.findById(“wnd[0]”).maximize

                          session.findById(“wnd[0]/usr/txtRSYST-BNAME”).text = “Y99DEW838”

                          session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “***********”

                          session.findById(“wnd[0]”).sendVKey 0

                          Waiting = 1

                          session1.createSession

                          Do While (Waiting = 1)

                            WScript.Sleep 100

                          Loop

                          If Not IsObject(session2) Then

                            Set session2 = connection.Children(1)

                          End If

                          Waiting = 1

                          session1.createSession

                          Do While (Waiting = 1)

                            WScript.Sleep 100

                          Loop

                          If Not IsObject(session3) Then

                            Set session3 = connection.Children(2)

                          End If

                          session1.findById(“wnd[0]/tbar[0]/okcd”).text = “/n/hoag/akon”

                          session1.findById(“wnd[0]”).sendVKey 0

                          session2.findById(“wnd[0]/tbar[0]/okcd”).text = “/nfbl5n”

                          session2.findById(“wnd[0]”).sendVKey 0

                          session3.findById(“wnd[0]/tbar[0]/okcd”).text = “/nudm_bp”

                          session3.findById(“wnd[0]”).sendVKey 0

                      ‘-End——————————————————————-

                      But it give me exactly the same error.

                      ScreenHunter_115 Nov. 01 11.22.jpg

                      So it did not solve it. Please have a look at the hole script and see if some little thing is wrong., But the error is the same.

                      Sincerely

                      Abjac

                      (0) 
                      1. Stefan Schnell

                        Hello Abjac,

                        I corrected your script a little bit and it works:

                        '-Begin-----------------------------------------------------------------
                        
                          '-Directives----------------------------------------------------------
                            Option Explicit
                        
                          '-Global Variables----------------------------------------------------
                            Dim SapGuiAuto, application, connection, Waiting
                            Dim session1, session2, session3
                        
                          '-Sub CreateSession---------------------------------------------------
                            Sub onCreateSession(ByVal Session)
                              Waiting = 0
                            End Sub
                        
                          '-Main----------------------------------------------------------------
                            If Not IsObject(application) Then
                              Set SapGuiAuto = GetObject("SAPGUI")
                              Set application = SapGuiAuto.GetScriptingEngine
                            End If
                        
                            If Not IsObject(connection) Then
                              Set connection = application.Children(0)
                            End If
                        
                            If Not IsObject(session1) Then
                              Set session1 = connection.Children(0)
                            End If
                        
                            If IsObject(WScript) Then
                              WScript.ConnectObject application, "on"
                            End If
                        
                            session1.findById("wnd[0]").maximize
                            session1.findById("wnd[0]/usr/txtRSYST-BNAME").text = "Y4711"
                            session1.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "snoopy"
                            session1.findById("wnd[0]").sendVKey 0
                        
                            Waiting = 1
                            session1.createSession
                            Do While (Waiting = 1)
                              WScript.Sleep 100
                            Loop
                        
                            If Not IsObject(session2) Then
                              Set session2 = connection.Children(1)
                            End If
                        
                            Waiting = 1
                            session1.createSession
                            Do While (Waiting = 1)
                              WScript.Sleep 100
                            Loop
                        
                            If Not IsObject(session3) Then
                              Set session3 = connection.Children(2)
                            End If
                        
                            session1.findById("wnd[0]/tbar[0]/okcd").text = "/n/hoag/akon"
                            session1.findById("wnd[0]").sendVKey 0
                            session2.findById("wnd[0]/tbar[0]/okcd").text = "/nfbl5n"
                            session2.findById("wnd[0]").sendVKey 0
                            session3.findById("wnd[0]/tbar[0]/okcd").text = "/nudm_bp"
                            session3.findById("wnd[0]").sendVKey 0
                        
                        '-End-------------------------------------------------------------------

                        Cheers

                        Stefan

                        (0) 
                        1. Ab Jac Post author

                          HI Stefan it works great really, thanks allot. I added some to one of the sessions and put it to the end. So this is really great. Could you please delete my password i have changed now. But please do i forgot not to include. If this should be a totally automated process i should be able to login with the same script. Before i used this script but i cant find the window YPE.

                          Which is the one i open before i run your script-

                          So if i could make this work with your script it will just be perfect. Then i would have a complete automatic solution to open and login to the sessions i work with.

                          Please have a look.  Thanks great you will help. Sincerely Abjac

                          Here is what i tried. but not working.

                          set WshShell = CreateObject(“WScript.Shell”)

                          Set proc = WshShell.Exec(“C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe”)

                                      Do While proc.Status = 0

                                      WScript.Sleep 100

                                Loop

                             Set SapGui = GetObject(“SAPGUI”)

                          Set Appl = SapGui.GetScriptingEngine

                          Set Connection = Appl.Openconnection(“BH/YPE”, True)

                          Set session = Connection.Children(0)

                          session.findById(“wnd[0]/usr/txtRSYST-BNAME”).Text = “Y99DEW838”

                          session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).Text = “***********”

                          session.findById(“wnd[0]/usr/txtRSYST-LANGU”).Text = “EN”

                          session.findById(“wnd[0]”).sendVKey 0

                          Below is the finish script from your great help and its working not perfect

                          ‘-Begin—————————————————————–

                            ‘-Directives———————————————————-

                              Option Explicit

                            ‘-Global Variables—————————————————-

                              Dim SapGuiAuto, application, connection, Waiting

                              Dim session1, session2, session3

                            ‘-Sub CreateSession—————————————————

                              Sub onCreateSession(ByVal Session)

                                Waiting = 0

                              End Sub

                            ‘-Main—————————————————————-

                              If Not IsObject(application) Then

                                Set SapGuiAuto = GetObject(“SAPGUI”)

                                Set application = SapGuiAuto.GetScriptingEngine

                              End If

                              If Not IsObject(connection) Then

                                Set connection = application.Children(0)

                              End If

                              If Not IsObject(session1) Then

                                Set session1 = connection.Children(0)

                              End If

                              If IsObject(WScript) Then

                                WScript.ConnectObject application, “on”

                              End If

                              session1.findById(“wnd[0]”).maximize

                              session1.findById(“wnd[0]/usr/txtRSYST-BNAME”).text = “Y99DEW838”

                              session1.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “***********”

                              session1.findById(“wnd[0]”).sendVKey 0

                              Waiting = 1

                              session1.createSession

                              Do While (Waiting = 1)

                                WScript.Sleep 100

                              Loop

                              If Not IsObject(session2) Then

                                Set session2 = connection.Children(1)

                              End If

                              Waiting = 1

                              session1.createSession

                              Do While (Waiting = 1)

                                WScript.Sleep 100

                              Loop

                              If Not IsObject(session3) Then

                                Set session3 = connection.Children(2)

                              End If

                             

                              session1.findById(“wnd[0]/tbar[0]/okcd”).text = “/nfbl5n”

                              session1.findById(“wnd[0]”).sendVKey 0

                              session2.findById(“wnd[0]/tbar[0]/okcd”).text = “/nudm_bp”

                              session2.findById(“wnd[0]”).sendVKey 0

                              session3.findById(“wnd[0]/tbar[0]/okcd”).text = “/n/hoag/akon”

                              session3.findById(“wnd[0]”).sendVKey 0

                              session3.findById(“wnd[0]/tbar[1]/btn[17]”).press

                              session3.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).selectedRows = “0”

                              session3.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).doubleClickCurrentCell

                              session3.findById(“wnd[0]/tbar[1]/btn[8]”).press

                          ‘-End——————————————————————-

                          This is the session i open before i login with you last script.

                          I open SAP exe and double click on YPE in the BH menu.

                          ScreenHunter_116 Nov. 02 13.34.jpg

                               Then i come to this page and i run your scrip from here.

                          ScreenHunter_117 Nov. 02 13.34.jpg

                          (0) 
                          1. Stefan Schnell

                            Hello Abjac,

                            try this and let us know your results.

                            Cheers

                            Stefan

                            Set WshShell = CreateObject("WScript.Shell")
                            WshShell.Run """C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"""
                            
                            Do While WshShell.AppActivate("SAP Logon ") = False
                              WScript.Sleep 100
                            Loop
                            
                            Set SapGui = GetObject("SAPGUI")
                            Set Appl = SapGui.GetScriptingEngine
                            
                            Set Connection = Appl.Openconnection("TriTraTrullala", True)
                            Set session = Connection.Children(0)
                            
                            session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "YourName"
                            session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "Bambi"
                            session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"
                            session.findById("wnd[0]").sendVKey 0
                            (0) 
                            1. Ab Jac Post author

                              HI Stefan and thanks i tried but it give me an error i think its the name of folder i want to open. I have tried different options but no luck.

                              Please see below. I go in BH and press the YPE and then the login screen will come up, where i use your other script.

                              Please have a look

                              Sincerely

                              Abjac

                              Set WshShell = CreateObject(“WScript.Shell”)

                              WshShell.Run “””C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe”””

                              Do While WshShell.AppActivate(“SAP Logon “) = False

                              WScript.Sleep 100

                              Loop

                              Set SapGui = GetObject(“SAPGUI”)

                              Set Appl = SapGui.GetScriptingEngine

                              Set Connection = Appl.Openconnection(“YPE”, True)

                              Set session = Connection.Children(0)

                              session.findById(“wnd[0]/usr/txtRSYST-BNAME”).Text = “Username”

                              session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).Text = “Password”

                              session.findById(“wnd[0]/usr/txtRSYST-LANGU”).Text = “EN”

                              session.findById(“wnd[0]”).sendVKey 0

                              ScreenHunter_120 Nov. 03 13.18.jpg

                              ScreenHunter_121 Nov. 03 13.19.jpg

                              (0) 
                                1. Ab Jac Post author

                                  HI Stefan. It called description del systema. But there is nothing written there so i dont really know what to write. this is the info i have for the string i press YPE.

                                  But in the middle there is nothing written, tried to change view please have a look below on pics .

                                  Abjac

                                  ScreenHunter_126 Nov. 03 14.30.jpg

                                  ScreenHunter_125 Nov. 03 14.29.jpg

                                  ScreenHunter_122 Nov. 03 14.22.jpg

                                  (0) 
                                  1. Ab Jac Post author

                                    HI Steffan

                                    I added a picture from your program tracker. When i open the page YPE. I dont know if that is a help. But i have tried again different combinations without any luck. Please see the picture below. And if you can find this session so it works in the script would be really great.

                                    Sincerely

                                    Abjac/wp-content/uploads/2015/11/tracker_824998.jpg

                                    (0) 
                                      1. Ab Jac Post author

                                        HI Stefan. I will soon get my last hair off 🙁 . I have tried so many combinations. I found the site with the description but when i paste this in you script it give the same error.

                                        Pasted it in like this. I really are little lost now.- Cant figure out why i cant make this work. Please see the picture also. I am quite lost cant really figure out why i cant find that session,.

                                        Sincerley

                                        Abjac

                                        YPE-PROD    -ERP -ECC EHP4       -[ECCPROD]

                                        ScreenHunter_128 Nov. 05 14.54.jpg

                                        (0) 
                                        1. Stefan Schnell

                                          Hello Abjac,

                                          look in your SAP Logon where the SAPLogon.ini file is stored.

                                          /wp-content/uploads/2015/11/003_825994.jpg

                                          Open the file and search the section [Description], here you can find all descriptions. Search in the section [MSSysName] for the SID to find the item. Look at the same item in the section [Description] to find the correct description.

                                          Hope it works.

                                          Let us know your results.

                                          Cheers

                                          Stefan

                                          (0) 
                                          1. Ab Jac Post author

                                            HI Stefan i did find the file and below you can see the screen shots. I pasted the line in directly but still give the same error. I pasted it like this with all spaces from the file.

                                            I think i did it correctly but still the error.

                                            Please see below’

                                            Sincerely

                                            Abjac

                                            YPE-PROD    -ERP -ECC EHP4       -[ECCPROD]

                                            ScreenHunter_129 Nov. 06 12.59.jpg

                                            The other i checked also and it look like below.

                                            Item21=YPE

                                            ScreenHunter_128 Nov. 06 12.58.jpg

                                            (0) 
                                              1. Ab Jac Post author

                                                Hi Stefan i dont know if i mistunderstand some. But how do you put this in to the code so it open this session with the logon screen?

                                                I put it in like below

                                                Abjac

                                                Set WshShell = CreateObject(“WScript.Shell”)

                                                WshShell.Run “””C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe”””

                                                Do While WshShell.AppActivate(“SAP Logon “) = False

                                                WScript.Sleep 100

                                                Loop

                                                Set SapGui = GetObject(“SAPGUI”)

                                                Set Appl = SapGui.GetScriptingEngine

                                                Set Connection = Appl.Openconnection(“YPE-PROD    -ERP -ECC EHP4       -[ECCPROD]”, True)

                                                Set session = Connection.Children(0)

                                                session.findById(“wnd[0]/usr/txtRSYST-BNAME”).Text = “Y99DEW838”

                                                session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).Text = “***********”

                                                session.findById(“wnd[0]/usr/txtRSYST-LANGU”).Text = “EN”

                                                session.findById(“wnd[0]”).sendVKey 0

                                                (0) 
                                                  1. Ab Jac Post author

                                                    HI Stefan and thanks for all your effort i am really lost cant see why i cant enter this session if the code are correct. Below error is it sure it is this problem to find the session.

                                                    Please have a look at the error pic.

                                                    Can it be some in the setup or because the session is on a server.?

                                                    Sincerely

                                                    Abjac

                                                    /wp-content/uploads/2015/11/error_828403.jpg

                                                    (0) 
                                                    1. Stefan Schnell

                                                      Hello Abjac,

                                                      if I try it with a wrong description I get the same error as you.

                                                      Try instead method OpenConnection the method OpenConnectionByConnectionString like this:

                                                      Set Connection = Appl.OpenConnectionByConnectionString(“/H/10.100.222.333/S/3263”, True)

                                                      Use the IP-Address of the host /H/IPAddressOfYourHost and the instance number /S/32InstanceNumberOfYourHost.

                                                      Let us know your results.

                                                      Cheers

                                                      Stefan

                                                      (0) 
                                                      1. Ab Jac Post author

                                                        HI Stefan and thanks for you answer. I am a little confused what and how to set it up. example the instance number. Could you have a look at below scree shots. They show i think all info for the screen i need to find.

                                                        Please have a look and see how it has to be in the script.

                                                        Sincerely

                                                        ABjac

                                                        Info.jpg

                                                        /wp-content/uploads/2015/11/info1_830216.jpg

                                                        (0) 
                                                        1. Stefan Schnell

                                                          Hello Abjac,

                                                          you find the instance number in the SAP logon:

                                                          /wp-content/uploads/2015/11/997_830255.jpg

                                                          The command should look like this:

                                                          Set Connection = Appl.OpenConnectionByConnectionString(“/H/9.63.240.106/S/3200”, True)

                                                          Let us know your results.

                                                          Cheers

                                                          Stefan

                                                          (0) 
                                                          1. Ab Jac Post author

                                                            HI Stefan it simply worked just perfect. It start and login the screen YPE.

                                                            I tried to make this totally automated to put the 2 files i have together but no succes. If i can i can do all with one bat file.

                                                            I use your last script to get to the screen. I removed the login . But it open up the login screen. If i run the script files separately it works. But how to put it together?

                                                            First script find the login screen. Second find the sessions and log me in.

                                                            Please have a look how to put these 2 together. Then all target are done.

                                                            Thanks in advance for your great help-

                                                            Abjac

                                                            Script 1

                                                            Set WshShell = CreateObject(“WScript.Shell”)

                                                            WshShell.Run “””C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe”””

                                                            Do While WshShell.AppActivate(“SAP Logon “) = False

                                                            WScript.Sleep 100

                                                            Loop

                                                            Set SapGui = GetObject(“SAPGUI”)

                                                            Set Appl = SapGui.GetScriptingEngine

                                                            Set Connection = Appl.OpenConnectionByConnectionString(“/H/9.63.240.106/S/3200”, True)

                                                            Set session = Connection.Children(0)

                                                            Second script to find the sessions and login.

                                                            ‘-Begin—————————————————————–

                                                              ‘-Directives———————————————————-

                                                                Option Explicit

                                                              ‘-Global Variables—————————————————-

                                                                Dim SapGuiAuto, application, connection, Waiting

                                                                Dim session1, session2, session3

                                                              ‘-Sub CreateSession—————————————————

                                                                Sub onCreateSession(ByVal Session)

                                                                  Waiting = 0

                                                                End Sub

                                                              ‘-Main—————————————————————-

                                                                If Not IsObject(application) Then

                                                                  Set SapGuiAuto = GetObject(“SAPGUI”)

                                                                  Set application = SapGuiAuto.GetScriptingEngine

                                                                End If

                                                                If Not IsObject(connection) Then

                                                                  Set connection = application.Children(0)

                                                                End If

                                                                If Not IsObject(session1) Then

                                                                  Set session1 = connection.Children(0)

                                                                End If

                                                                If IsObject(WScript) Then

                                                                  WScript.ConnectObject application, “on”

                                                                End If

                                                                session1.findById(“wnd[0]”).maximize

                                                                session1.findById(“wnd[0]/usr/txtRSYST-BNAME”).text = “*********”

                                                                session1.findById(“wnd[0]/usr/pwdRSYST-BCODE”).text = “***********”

                                                                session1.findById(“wnd[0]”).sendVKey 0

                                                                Waiting = 1

                                                                session1.createSession

                                                                Do While (Waiting = 1)

                                                                  WScript.Sleep 100

                                                                Loop

                                                                If Not IsObject(session2) Then

                                                                  Set session2 = connection.Children(1)

                                                                End If

                                                                Waiting = 1

                                                                session1.createSession

                                                                Do While (Waiting = 1)

                                                                  WScript.Sleep 100

                                                                Loop

                                                                If Not IsObject(session3) Then

                                                                  Set session3 = connection.Children(2)

                                                                End If

                                                               

                                                                session1.findById(“wnd[0]/tbar[0]/okcd”).text = “/nfbl5n”

                                                                session1.findById(“wnd[0]”).sendVKey 0

                                                                session2.findById(“wnd[0]/tbar[0]/okcd”).text = “/nudm_bp”

                                                                session2.findById(“wnd[0]”).sendVKey 0

                                                                session3.findById(“wnd[0]/tbar[0]/okcd”).text = “/n/hoag/akon”

                                                                session3.findById(“wnd[0]”).sendVKey 0

                                                                session3.findById(“wnd[0]/tbar[1]/btn[17]”).press

                                                                session3.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).selectedRows = “0”

                                                                session3.findById(“wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell”).doubleClickCurrentCell

                                                                session3.findById(“wnd[0]/tbar[1]/btn[8]”).press

                                                            ‘-End——————————————————————-

                                                            (0) 
                                                            1. Stefan Schnell

                                                              Hello Abjac,

                                                              hmm, the combination of the scripts would be a good exercise for you to check your knowledge. Here the complete script:

                                                              '-Begin-----------------------------------------------------------------
                                                              
                                                                '-Directives----------------------------------------------------------
                                                                  Option Explicit
                                                              
                                                                '-Global Variables----------------------------------------------------
                                                                  Dim WshShell
                                                                  Dim SapGuiAuto, application, connection, Waiting
                                                                  Dim session1, session2, session3
                                                              
                                                                '-Sub CreateSession---------------------------------------------------
                                                                  Sub onCreateSession(ByVal Session)
                                                                    Waiting = 0
                                                                  End Sub
                                                              
                                                                '-Main----------------------------------------------------------------
                                                                  Set WshShell = CreateObject("WScript.Shell")
                                                                  WshShell.Run """C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"""
                                                              
                                                                  Do While WshShell.AppActivate("SAP Logon ") = False
                                                                    WScript.Sleep 100
                                                                  Loop
                                                              
                                                                  If Not IsObject(application) Then
                                                                    Set SapGuiAuto = GetObject("SAPGUI")
                                                                    Set application = SapGuiAuto.GetScriptingEngine
                                                                  End If
                                                              
                                                                  If Not IsObject(connection) Then
                                                                    Set connection = Appl.OpenConnectionByConnectionString("/H/9.63.240.106/S/3200", True)
                                                                  End If
                                                              
                                                                  If Not IsObject(session1) Then
                                                                    Set session1 = connection.Children(0)
                                                                  End If
                                                              
                                                                  If IsObject(WScript) Then
                                                                    WScript.ConnectObject application, "on"
                                                                  End If
                                                              
                                                                  session1.findById("wnd[0]").maximize
                                                                  session1.findById("wnd[0]/usr/txtRSYST-BNAME").text = "*********"
                                                                  session1.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "***********"
                                                                  session1.findById("wnd[0]").sendVKey 0
                                                              
                                                                  Waiting = 1
                                                                  session1.createSession
                                                                  Do While (Waiting = 1)
                                                                    WScript.Sleep 100
                                                                  Loop
                                                              
                                                                  If Not IsObject(session2) Then
                                                                    Set session2 = connection.Children(1)
                                                                  End If
                                                              
                                                                  Waiting = 1
                                                                  session1.createSession
                                                                  Do While (Waiting = 1)
                                                                    WScript.Sleep 100
                                                                  Loop
                                                              
                                                                  If Not IsObject(session3) Then
                                                                    Set session3 = connection.Children(2)
                                                                  End If
                                                                
                                                                  session1.findById("wnd[0]/tbar[0]/okcd").text = "/nfbl5n"
                                                                  session1.findById("wnd[0]").sendVKey 0
                                                                  session2.findById("wnd[0]/tbar[0]/okcd").text = "/nudm_bp"
                                                                  session2.findById("wnd[0]").sendVKey 0
                                                                  session3.findById("wnd[0]/tbar[0]/okcd").text = "/n/hoag/akon"
                                                                  session3.findById("wnd[0]").sendVKey 0
                                                                  session3.findById("wnd[0]/tbar[1]/btn[17]").press
                                                                  session3.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "0"
                                                                  session3.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").doubleClickCurrentCell
                                                                  session3.findById("wnd[0]/tbar[1]/btn[8]").press
                                                              
                                                              '-End-------------------------------------------------------------------

                                                              As you can see it isn’t difficult.

                                                              Cheers

                                                              Stefan

                                                              (0) 
                                                            2. Ab Jac Post author

                                                              HI Stefan and thanks allot for your efford. I am totally new in scripts. Have done much macroes but not scripts-.  If i run the scripts now one by one its working.

                                                              But when i run the last one you made i get this error.

                                                              Sincerely

                                                              Abjac

                                                              /wp-content/uploads/2015/11/finish_830880.jpg

                                                              (0) 
                                                            3. Ab Jac Post author

                                                              HI Stefan i just found out how to make it work . I changed

                                                              Set Connection = Appl.OpenConnectionByConnectionString(“/H/9.63.240.106/S/3200”, True)

                                                              to

                                                              Set connection = Application.OpenConnectionByConnectionString(“/H/9.63.240.106/S/3200”, True)

                                                              Amazing so little could do it but its working now. I can now with one shortcut log in to all the screens i work with.,

                                                              I am really happy for this and all your help.- Its very hard to find many who have so much knowledge about sap and scripts. So your knowledge is really allot.

                                                              Thanks allot i know i am a beginner in this. But happy you want to share your experience and knowledge. So great with all your help.

                                                              Have a nice day Stefan

                                                              A happy Abjac hehe 🙂

                                                              (0) 

Leave a Reply