on 2014 Jun 28 10:26 AM
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
Help others by sharing your knowledge.
AnswerRequest clarification before answering.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Simon,
One could try e.g. the following:
. . .
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"
myVBELN = GRID.getcellvalue (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
do
myRow = myRow + 1
if myRow >= GRID.rowCount then exit do
GRID.firstVisibleRow = myRow
GRID.selectedRows = cstr(myRow)
if myVBELN <> GRID.getcellvalue (myRow,"VBELN") then exit do
loop
if myRow >= GRID.rowCount then exit do
loop
end if
If your problem is solved, please mark this question as answered.
Regards,
ScriptMan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.