OGERWOLF
OGERWOLF

Reputation: 127

SAP GUIXT - Pass Variable and run script

I would like to create an "input field" in SAP that uses the passed value within a vb script. To give a specific example, I would like to open FBL5N, pass an invoice into a field and view the invoice in VF03. The script to do that is ready and works for a hardcoded value of invoice or thru VBA.

Here is the GUI script part

inputfield (2,35)  "inv" (2,45) size=10 name="V_inv"
pushbutton (toolbar)  "print_inv" process="InvoiceScript.txt"
using MYINV = "V_inv"

Now, I don't know what to do for the inputscript part. I would like your assistance in this matter. Here is my first attempt:

Screen SAPLSLVC.0500
ApplyGuiScript template="VF03INV.vbs"
Enter

Thank you for your help and let me know if you need any precision. Here are my sources of inspiration to get the above code : http://www.synactive.com/tutor_e/lessonia03.html http://www.synactive.com/docu_e/docia_process2.html

***if its possible to have a version that reads a value in clipboard, that would even be better.

Upvotes: 1

Views: 4301

Answers (2)

OGERWOLF
OGERWOLF

Reputation: 127

After many attempts here is a solution:

Script(SAPLSLVC.0500.txt):

inputfield (2,35)  "inv" (2,45) size=10 name="V_inv" 
pushbutton (toolbar)  "script" "/OVF03" process="startvf03.txt"
using INV = [V_inv] ' need this when opening new screen

InputScript (startvf03.txt):

parameter INV
Screen SAPMV60A.0101    'this is the VF03 screen
SET F[VBRK-VBELN] "&U[INV]"    'pass invoice # parameter
ApplyGuiScript "C:\guiXT\scripts\VF03INV.vbs"

VBScript (VF03INV.vbs):

inv = session.findById("wnd[0]/usr/ctxtVBRK-VBELN").text
session.findById("wnd[0]/mbar/menu[0]/menu[11]").Select
session.findById("wnd[1]/tbar[0]/btn[37]").press
session.findById("wnd[0]/tbar[0]/okcd").Text = "pdf!"
session.findById("wnd[0]").sendVKey 0

'with some little extra here on how to save a pdf in SAP

'get new strings for locations (specific to my situation)
abc = session.findById("wnd[1]/usr/cntlHTML/shellcont/shell").Browserhandle.locationURL
beg = instr(abc,"C:")
cde =  mid(abc,beg,9999)
dest = "C:\111\invoices\" & inv & ".pdf"

'changing from temp to a specific folder
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.copyfile cde, dest

'close the open file
session.findById("wnd[1]").close
session.findById("wnd[0]").close
Set fso = nothing

*the several If Not IsObject(application) Then you usually see were not necessary, but doesn't hurt to have them.

I hope this helps everyone learn Guixt

Upvotes: 2

ScriptMan
ScriptMan

Reputation: 1625

Within the VB script with the parameter "template" can you address a GuiXT variable as follows.

for example:

msgbox "&V[V_inv]"

Upvotes: 0

Related Questions