Текущее время: Вс, июн 22 2025, 15:43

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Непонятная ошибка при вызове функции
СообщениеДобавлено: Пт, май 26 2006, 14:21 
Ассистент
Ассистент

Зарегистрирован:
Вт, апр 18 2006, 15:27
Сообщения: 32
Я пытаюсь запустить инфопакет из макроса на VBA, но что-то не получается.

Код примерно такой:

Code:
   Dim oBAPICtrl As Object
    Dim oBAPILogon As Object
    Dim oBAPIPackage As Object
    Dim Request As Variant
    Dim Tabl As Object
   
    Set oBAPICtrl = CreateObject("SAP.BAPI.1")
    Set oBAPILogon = CreateObject("SAP.Logoncontrol.1")
   
    Set oBAPICtrl.Connection = oBAPILogon.NewConnection
   
    With oBAPICtrl.Connection
        .System = "система"
        .MessageServer = "сервер"
        .GroupName = "группа"
        .Client = "клиент"
        .User = "юзер"
        .Password = "пароль"
        .Language = "язык"
    End With
   
    If oBAPICtrl.Connection.Logon(1, False) = False Then
        MsgBox "Что-то не так..."
        End
    End If

    Set oBAPIPackage = oBAPICtrl.GetSAPObject("InfoPackage")
   
   
    oBAPIPackage.Schedule JobName:="Тех. имя инфопакета", _
                            RequestID:=Request, _
                            Return:=Tabl
       
    oBAPICtrl.Connection.Logoff


При этом все отрабатывает нормально вплоть до строки

Code:
oBAPIPackage.Schedule JobName:="Тех. имя инфопакета", _
                            RequestID:=Request, _
                            Return:=Tabl


на ней макрос валится с ошибкой
The persistent key for an business object instance of type InfoPackage has not been set.
Cannot invoke method SCHEDULE.

Смотрел исходники метода. Там в параметрах ввода вовсе не только название задания (job), а еще имя инфорпакета (infopackage) присутствует. Пробовал прописывать в jobname и то и другое с неизменно превосходным результатом - вышеупомянутой ошибкой.

Не сталкивался ли кто с похожей проблемой?

Заранее благодарен.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 30 2006, 08:38 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Вс, июн 26 2005, 22:41
Сообщения: 1135
Откуда: Москва
Пол: Мужской
попробуй убить на машине касперского, если таковой имеется - он может душить макросы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 30 2006, 08:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
А не проще ли через событие сделать?

Code:
   Set MyFunc = fns.Add("RSSM_EVENT_RAISE")
   MyFunc.exports("I_EVENTID") = EventName
   MyFunc.exports("I_EVENTPARM") = ""
   result = MyFunc.Call

а инфопакет уже пусть на это событие реагирует.

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 30 2006, 11:38 
Ассистент
Ассистент

Зарегистрирован:
Вт, апр 18 2006, 15:27
Сообщения: 32
Спасибо, Bkmz, G.

Разобрался. Это правильно делается так:

Code:
Public Sub BAPI_Execute()


    Dim oBAPICtrl As Object
    Dim oBAPILogon As Object
    Dim oBAPIPackage As Object
    Dim Request As Variant
    Dim Tabl As Object
   
    Set oBAPICtrl = CreateObject("SAP.BAPI.1")
    Set oBAPILogon = CreateObject("SAP.Logoncontrol.1")
   
    Set oBAPICtrl.Connection = oBAPILogon.NewConnection
   
    With oBAPICtrl.Connection
        .System = "Система"
        .MessageServer = "Сервер"
        .GroupName = "Группа"
        .Client = "Номер клиента"
        .User = "Логин"
        .Password = "Пароль"
        .Language = "Язык"
    End With
   
    If oBAPICtrl.Connection.Logon(0, False) = False Then
        MsgBox "Что-то не так"
        End
    End If
   
    Set oBAPIPackage = oBAPICtrl.GetSAPObject("InfoPackage", "Тех. имя инфопакета")
   
    oBAPIPackage.Schedule RequestID:=Request, _
                          Return:=Tabl
       
    oBAPICtrl.Connection.Logoff
   
End Sub


Опять же, файл должен лежать на сервере приложений, ибо с локальной машины BW брать файл не хочет, но это уже частности. Я думаю, что если повозиться, то можно и для локали настроить, но мне это не нужно.

Еще раз спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 30 2006, 14:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
А имя файла при планировке поменять можно?
Вообще, какие методы и поля есть у oBAPIPackage?

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 30 2006, 15:03 
Ассистент
Ассистент

Зарегистрирован:
Вт, апр 18 2006, 15:27
Сообщения: 32
Я пока документации по методам и свойствам подключения не нашел, хотя кое-что про вызову BAPI можно найти по ключу "BAPI ActiveX" на help.sap.com.
А для самого объекта свойства и методы описаны в транзакции BAPI. Там же, кстати, есть описание различных объектов, необходимых для вызова функций.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 31 2006, 06:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 20 2004, 12:06
Сообщения: 121
Пол: Мужской
чтото ничё подобного не нашёл для запуска цепочки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 07 2006, 13:49 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, июл 06 2005, 11:03
Сообщения: 51
vinter написал:
чтото ничё подобного не нашёл для запуска цепочки

Я тоже...


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

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


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

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


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

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