Текущее время: Чт, июн 19 2025, 09:46

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: объясните новичку принцип работы IF ELSE, ERROR
СообщениеДобавлено: Пн, дек 09 2019, 06:13 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 27 2019, 19:47
Сообщения: 2
Добрый день, я новичок в SAP и недавно открыл для себя возможность работы с макросами. Прошу помочь разобраться в самых простых нюансах на примере.

Работаю на руднике, имеется парк самоходной техники, который делится на 2 категории:

1) Старая техника (при создании заказов проблем не возникает)
2) Новая техника на гарантии (при создании заказа появляется окно с предупреждением о том, что машина на гарантии, которое нужно закрыть, и дальше все стандартно).

Если записать макрос на гарантийной машине, то, когда очередь доходит до старой машины, выскакивает ошибка на моменте, где должно появиться окно предупреждения о гарантии.

Как можно обойти эту ошибку?

Прошу прощения за глупые вопросы, я понимаю что вы тут решаете намного глобальнее вопросы.

Code:
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


Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open ("C:\!!_Планирование 2020\СХО сервисные контракты 2020\Подряд 2020 27-11-19 14-51-46\гарантия.xlsx")

intRow = 2

Do Until objExcel.Cells(intRow,1).Value = ""


session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/niw31"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtAUFPAR-PM_AUFART").text = "1017"
session.findById("wnd[0]/usr/cmbCAUFVD-PRIOK").key = "3"
session.findById("wnd[0]/usr/subOBJECT:SAPLCOIH:7100/ctxtCAUFVD-EQUNR").text = objExcel.Cells(intRow, 3).Value
session.findById("wnd[0]/usr/subOBJECT:SAPLCOIH:7100/ctxtCAUFVD-EQUNR").setFocus
session.findById("wnd[0]/usr/subOBJECT:SAPLCOIH:7100/ctxtCAUFVD-EQUNR").caretPosition = 8
session.findById("wnd[0]").sendVKey 0
[color=#FF0000]session.findById("wnd[1]/tbar[0]/btn[0]").press / ВОТ ЭТА СТРОЧКА ЗАКРЫВАЕТ ОКНО ГАРАНТИИ[/color]
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/subSUB_KOPF:SAPLCOIH:1102/txtCAUFVD-KTEXT").text = objExcel.Cells(intRow, 4).Value
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subHEADER:SAPLCOIH:0154/ctxtCAUFVD-VAPLZ").text = "P0202301"
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subHEADER:SAPLCOIH:0154/ctxtCAUFVD-ILART").text = objExcel.Cells(intRow, 5).Value
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subTERM:SAPLCOIH:7300/ctxtCAUFVD-GSTRP").text = objExcel.Cells(intRow, 2).Value
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subTERM:SAPLCOIH:7300/ctxtCAUFVD-GLTRP").text = objExcel.Cells(intRow, 2).Value
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subAVO:SAPLCOI0:0310/ctxtAFVGD-ARBPL").text = "P0202301"
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subAVO:SAPLCOI0:0310/ctxtAFVGD-STEUS").text = "PM02"
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subAVO:SAPLCOI0:0310/ctxtAFVGD-STEUS").setFocus
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subAVO:SAPLCOI0:0310/ctxtAFVGD-STEUS").caretPosition = 4
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpMUEB").select
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020/ctxtRESBD-MATNR[1,0]").text = objExcel.Cells(intRow, 7).Value
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[2]").sendVKey 0
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/txtRESBD-MENGE").text = objExcel.Cells(intRow, 8).Value
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/txtRESBD-GPREIS").text = "1"
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/ctxtRESBD-WAERS").text = "usd"
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/ctxtRESBD-WAERS").setFocus
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/ctxtRESBD-WAERS").caretPosition = 3
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/tabsTS_1100/tabpMUEB/ssubSUB_AUFTRAG:SAPLCOMK:3020/tblSAPLCOMKTCTRL_3020/ctxtRESBD-MATNR[1,1]").text = objExcel.Cells(intRow + 1, 7).Value
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[2]").sendVKey 0
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/txtRESBD-MENGE").text = objExcel.Cells(intRow + 1, 8).Value
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/txtRESBD-GPREIS").text = "1"
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/ctxtRESBD-WAERS").text = "usd"
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/ctxtRESBD-WAERS").setFocus
session.findById("wnd[1]/usr/subMAT_DETAIL_EXTERN:SAPLCOMD:3170/ctxtRESBD-WAERS").caretPosition = 3
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1107/subSUB_KOPF:SAPLCOIH:1108/btn%#AUTOTEXT001").press
session.findById("wnd[1]/usr/tblSAPLBSVATC_E/radJ_STMAINT-ANWS[0,2]").selected = true
session.findById("wnd[1]/usr/tblSAPLBSVATC_E/radJ_STMAINT-ANWS[0,2]").setFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/tbar[0]/btn[11]").press



IntRow = intRow + 2
Loop


objExcel.Quit


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: объясните новичку принцип работы IF ELSE, EROR
СообщениеДобавлено: Пн, дек 09 2019, 14:44 
Специалист
Специалист

Зарегистрирован:
Чт, дек 02 2010, 08:37
Сообщения: 156
Гляньте вот этот ответ https://answers.sap.com/questions/9650303/problem-with-error-handling-in-vba-with-sapsession.html
На хабре есть статья, где можно почерпнуть немало полезного:
https://habr.com/ru/post/341576/


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: объясните новичку принцип работы IF ELSE, EROR
СообщениеДобавлено: Пн, дек 09 2019, 14:45 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
Попробуйте добавить session.idExists

Code:
if(session.idExists("wnd[1]")
{
session.findById("wnd[1]/tbar[0]/btn[0]").press
}


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: объясните новичку принцип работы IF ELSE, EROR
СообщениеДобавлено: Пт, дек 13 2019, 07:14 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 27 2019, 19:47
Сообщения: 2
Пишет "Ошибка: Объект не поддерживает это свойство или метод:'idExists'"

RA написал:
Попробуйте добавить session.idExists

Code:
if(session.idExists("wnd[1]")
{
session.findById("wnd[1]/tbar[0]/btn[0]").press
}


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: объясните новичку принцип работы IF ELSE, ERROR
СообщениеДобавлено: Ср, май 06 2020, 10:15 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
а не пишите на VBS - сразу портируйте получившийся vbs-код макрорекордера внутрь вашей экселины (в ейный vba-редактор).

Так разбираться с гуискриптингом гораздо проще. Т.к. в vba-редакторе есть удобные инструменты, например браузер программных объектов гуискриптинга (клавиша F2), да и отладку вести удобнее.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB