Skip to Content
avatar image
Former Member

Loop in VBS script recording

Hi

I am new to both SCN and scripting and am in need of some guidance.

I have a SQ01/2 query, which gives the following results:

I have then recorded the following script:

This script works fine, but I need it to loop to the next selectedRow (which is the Delivery column) and then continue looping until there are no more lines.

I would really appreciate it if someone could help me.

Many Thanks

Smon

1.png (16.1 kB)
2.png (46.0 kB)
Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

3 Answers

  • Best Answer
    avatar image
    Former Member
    Jul 01, 2014 at 09:01 AM

    Hi

    I have one final problem (sorry).  My script now works fine when I have single line entries in the "Delivery" column (VBELN); whoever, when there are duplicate entries, which I do need to see, the loop fails as it is trying to execute the script on a delivery that has already had the lines deleted (as per the recording) eg:

    The script now looks like this:

    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

    set GRID = session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell")

    myRow = 0

    if GRID.rowCount >= 1 then

      do

       GRID.selectedRows = cstr(myRow)

       GRID.setCurrentCell myRow,"VBELN"

       GRID.doubleClickCurrentCell

    session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\05").select

    session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\05/ssub/2/3/sub/2/3/3/btn[1]").press

    session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01").select

    session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssub/2/3/sub/2/3/3/btn[4]").press

    session.findById("wnd[1]/usr/btn[0]").press

    session.findById("wnd[0]/tbar[0]/btn[11]").press

       myRow = myRow + 1

       if myRow >= GRID.rowCount  then exit do

       GRID.firstVisibleRow =   myRow

       GRID.selectedRows = cstr(myRow)

      loop

    end if

    Is there any way that the duplicate lines can be skipped, or that the loop resumes after an error?

    Kind Regards

    Simon


    Untitled1.png (75.8 kB)
    Add comment
    10|10000 characters needed characters exceeded

  • Jun 30, 2014 at 10:34 AM

    Hi Simon,

    welcome to the forum. You could try the following in the further tests.

    for example:

    . . .

    session.findById("wnd[0]").maximize

    set GRID = session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell")
    myRow = 0

    if GRID.rowCount >= 1 then
      do
       GRID.selectedRows = cstr(myRow)  
       GRID.doubleClickCurrentCell

       'Here is the rest of your script after the command with ". doubleClickCurrentCell" to the end.


       myRow = myRow + 1
       if myRow >= GRID.rowCount  then exit do
       GRID.firstVisibleRow =   myRow

       GRID.selectedRows = cstr(myRow)

      loop
    end if

    Regards,

    ScriptMan

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jun 30, 2014 at 12:48 PM

    Hi Script Man

    Thank you so much for the quick reply.  It's not quite working yet as when it loops, the script is trying to double click on the original cell, rather than stepping to the next cell...you've certainly pointed me in the right direction though!

    Kind Regards

    Simon

    Add comment
    10|10000 characters needed characters exceeded