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

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


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

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


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

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