Текущее время: Ср, апр 24 2024, 09:03

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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