SAP GUI脚本月度字段自动赋值报错问题求助
SAP Gui Scripting 月份字段自动更新报错问题解决
问题根源
你的脚本运行报错,核心原因是月份格式不符合SAP字段的要求。你录制时输入的是两位字符串格式的月份(比如"02"),但代码里today.Month返回的是整数类型的月份值(比如2),直接赋值给SAP的文本字段时,会变成单字符的"2",而SAP事务码kkaq里的这个月份字段要求必须是两位数字的字符串,格式不匹配就会触发错误。
修复方案
你需要把整数类型的月份转换成两位补零的字符串格式,在VB Script里有两种简单的实现方式:
- 使用
ToString("D2")方法:自动给小于10的月份补前导零 - 使用
String.Format("{0:00}", 月份值)实现格式化
修改后的完整代码
Dim today = Date.Today ' 把月份格式化为两位字符串,比如2变成"02",10保持"10" Dim month As String = today.Month.ToString("D2") session.findById("wnd[0]").maximize session.findById("wnd[0]/tbar[0]/okcd").text = "kkaq" session.findById("wnd[0]/tbar[0]/btn[0]").press session.findById("wnd[0]/usr/chkKKA0100-WIP0A").selected = true session.findById("wnd[0]/usr/txtKKA0100-BIS_ABGR_M").text = month ' 额外优化:年份也改为动态获取,不用写死2020 Dim year As String = today.Year.ToString() session.findById("wnd[0]/usr/txtKKA0100-BIS_ABGR_J").text = year session.findById("wnd[0]/usr/ctxtKKA0100-VERSN").text = "0" session.findById("wnd[0]/usr/chkKKA0100-WIP0A").setFocus session.findById("wnd[0]/tbar[0]/btn[0]").press session.findById("wnd[0]/tbar[1]/btn[8]").press session.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[2]").select session.findById("wnd[1]/tbar[0]/btn[0]").press session.findById("wnd[1]/usr/ctxtDY_PATH").text = "J:\80_Applications\SAPGuiScripting\01_TXT_Files\01_TXT_Files\" session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "TEST.txt" session.findById("wnd[1]/tbar[0]/btn[11]").press session.findById("wnd[0]/tbar[0]/btn[15]").press session.findById("wnd[1]/usr/btnSPOP-OPTION1").press
额外提示
我还帮你把固定的年份"2020"改成了动态获取当前年份,这样脚本以后每年都能正常运行,不用手动修改年份值。如果你的业务逻辑需要的是上一个月的月份(比如每月初跑上个月的报表),可以用DateAdd("m", -1, today).Month.ToString("D2")来获取上一个月的两位格式月份。
内容的提问来源于stack exchange,提问作者Neymar0001
相关产品推荐
相关产品推荐

