Текущее время: Вс, июл 27 2025, 03:02

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Ср, мар 17 2010, 16:12 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 29 2008, 12:42
Сообщения: 491
Пол: Мужской
С обновлением SAP GUI с 6.4 Патч 23 до 7.01 Патч 15 перестал работать макрос загрузки данных из Excel в Z-таблицу SAP.
Переделываем макрос.

Обнаружили, что коннект к БД НЕ проходит для такого макроса
Code:
Dim R3 As Object
Set R3 = CreateObject("SAP.Functions")
' MsgBox R3.Connection.Logon
If R3.Connection.Logon(0, True) <> True Then
   Exit Function
End If


Если раскомментарить MsgBox, то пройдет:
Code:
Dim R3 As Object
Set R3 = CreateObject("SAP.Functions")
MsgBox R3.Connection.Logon
If R3.Connection.Logon(0, True) <> True Then
   Exit Function
End If


В чем может быть проблема?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Ср, мар 17 2010, 16:33 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 29 2008, 12:42
Сообщения: 491
Пол: Мужской
Вот так заработало
Code:
Dim R3 As Object
Set R3 = CreateObject("SAP.Functions")
If R3.Connection.Logon <> True Then
   Exit Function
End If

Команда R3.Connection.Logon(0, True), с которой не работал коннект, взята с одной из тем форума. Есть какая-нибудь информация по ней?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Ср, мар 17 2010, 16:36 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
а где Вы заполняете
R3.Connection.User = "user"
R3.Connection.Password = "1234"
R3.Connection.client = "000"
R3.Connection.ApplicationServer = "10.0.0.0"
R3.Connection.Language = "RU"

?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Ср, мар 17 2010, 17:15 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 29 2008, 12:42
Сообщения: 491
Пол: Мужской
Besa написал:
а где Вы заполняете
R3.Connection.User = "user"
R3.Connection.Password = "1234"
R3.Connection.client = "000"
R3.Connection.ApplicationServer = "10.0.0.0"
R3.Connection.Language = "RU"

?

Нигде. Насколько это важно? В окошке логона все поля (кроме пароля) почему-то сами по себе заполнены нужными значениями.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Чт, мар 18 2010, 07:40 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
в object browser'е в VBA-редаакторе посмотрите проперти к этому объекту - там интуитивно понятный интерфейс ;-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Чт, мар 18 2010, 09:29 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 29 2008, 12:42
Сообщения: 491
Пол: Мужской
pberezin написал:
в object browser'е в VBA-редаакторе посмотрите проперти к этому объекту - там интуитивно понятный интерфейс ;-)

pberezin, можно чуть подробнее? Если это обычный Object browser, вызываемый в VBA-редакторе по клавише "F2", то в нем ничего про объект "SAP.Functions" нету. Тем более, про объект "R3".


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Чт, мар 18 2010, 10:15 
Старший специалист
Старший специалист

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

С саплогоном ставится ActiveX компонент SAP Remote function call control (файло wdtfuncs.ocx). Подключаете его в VBA через Tools\References, и вам станет доступен контрол SAPFunctions. Кидаете его на VBA-шную форму (очень удобно - в пропертях контрола Custom можно один раз настроить имена вызываемых из сапа RFC-ФМ, чтобы динамически через VBA их не присваивать). И в object browser'е будет всё видно.

Единственное, с отладкой RFC-вызовов чудеса какието - если ставишь AbapDebug=true, он почемуто в отладку вываливается не прямо в вызываемом ФМ, а в какомто rfc_get_function_interface (видимо диспетчер какойто, х.з.)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Чт, мар 18 2010, 11:03 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 29 2008, 12:42
Сообщения: 491
Пол: Мужской
pberezin написал:
С саплогоном ставится ActiveX компонент SAP Remote function call control (файло wdtfuncs.ocx). Подключаете его в VBA через Tools\References, и вам станет доступен контрол SAPFunctions.

Спасибо, получилось! :D
pberezin написал:
Кидаете его на VBA-шную форму (очень удобно - в пропертях контрола Custom можно один раз настроить имена вызываемых из сапа RFC-ФМ, чтобы динамически через VBA их не присваивать). И в object browser'е будет всё видно.

В object browser'е информация о составе SAPFunctions появилась, но до его подобъекта Connection. Что дальше - посмотреть не могу. Т.е. свойства SAPFunctions.Connection не вижу. Контекстное меню "Properties" светло-серое и невозможно для выбора. Как ни крутил. Кстати, контекстное меню "Properties" (щелк правой кнопкой мыши) и для SAPFunctions тоже недоступно для нажатия.

Не подскажете, как посмотреть там подробнее об объекте SAPFunctions.Connection.Logon? Нужны ли вообще и какие именно нужны параметры при его вызове?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Чт, мар 18 2010, 12:45 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
У вас наверное настойки уровня безопасности макросов запрещают загрузку внешних activex. Потавьте в экселе самый низкий уровень безопасности.
Там даже на низком уровне, при открытии формы с таким контролом вываливается какоето предупреждение "application is about to init unsafe activex". Видимо, с т.з. экселя этот контрол не совсем канонический :)

А по поводу именно объекта Connection - да он почемуто не типизирован, надо объявлять as Object и присваивать проперти динамически. Там можно в режиме VBA-отладчика глянуть все его проперти.

Ну вот так например (здесь форма, с контролом SAPRfc и кнопкой btnGo)

Private Sub btnGo_Click()
Dim OR3connection As Object
Dim fm As Object
Dim expo As SAPFunctionsOCX.Exports
Dim impo As SAPFunctionsOCX.Imports
Dim par1 As SAPFunctionsOCX.Parameter
Dim par2 As SAPFunctionsOCX.Parameter 'Object
Dim v As Variant
Dim rc As Long
Dim brc As Boolean

With Me.SAPrfc
Set OR3connection = .Connection
OR3connection.User = Me.boxLogin.Text 'логин берём из поля формы
OR3connection.Password = Me.boxPass.Text 'пароль тоже
'r3dev
OR3connection.ApplicationServer = "10.46.не.дождётесь" 'IP сервера r/3
OR3connection.SystemNumber = "00" 'номер системы
OR3connection.client = "151"
OR3connection.Language = "RU"

OR3connection.RfcWithDialog = 1 'помоему без этого флажка gui будет не виден, соответственно abap-отладка тоже
OR3connection.ABAPDebug = Me.chkDebug.Value 'чекбокс на форме разрешает отладку
.RetrieveDescription = True 'забыл для чего нужна

brc = OR3connection.Logon(0, True)
If (brc = True) Then
Set fm = .Add("Z_RFCALL_FROM_MSSQL_TEST") 'вызываемый ФМ
Set expo = fm.Exports
'expo.RemoveAll
Set par1 = expo.Insert(1, 1) 'у ФМа один IMPORTING параметр типа INT4
fm.Call
rc = fm.ReturnCode 'результат sy-subrc
Me.boxRC.Text = rc 'вываливаем в поле формы

.AboutBox
End If
Call OR3connection.Logoff


End With
End Sub


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Пт, мар 19 2010, 07:18 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
Ещё вариант:
Code:
'
' Пример вызова RFC модуля
'
' использует:
'   SAP Remote Function Call Controll (wdtfuncs.ocx)
'   SAP Logon Control (wdtlogU.ocx)
'   SAP Table Factory (wdtaocx.ocx)
'
Sub rfc_call_sample()

    Dim SAPFunctions As New SAPFunctionsOCX.SAPFunctions
    Dim SAPFunction As SAPFunctionsOCX.Function
    Dim SAPConnection As SAPLogonCtrl.Connection
    Dim PersonalData As SAPTableFactoryCtrl.Table
   
    Set SAPConnection = SAPFunctions.Connection
   
'   Параметры соединения по умолчанию:
    SAPConnection.Client = "200"
    SAPConnection.User = "USERNAME"
   
'   Подключаемся к SAP:
    If SAPConnection.Logon(0, False) <> True Then
        MsgBox "Ошибка входа в систему"
        Exit Sub
    End If
   
'   Вызываем ФМ 'BAPI_EMPLOYEE_GETDATA'
    Set SAPFunction = SAPFunctions.Add("BAPI_EMPLOYEE_GETDATA")
   
'   Заполняем параметры
    SAPFunction.Exports("LASTNAME_M") = "Пупкин"
   
'   Собственно вызов:
    If SAPFunction.Call <> True Then
        MsgBox "Ошибка вызова ФМ"
        Exit Sub
    End If
   
'   Обрабатываем результат:
    Set PersonalData = SAPFunction.Tables("PERSONAL_DATA")
   
    Dim i As Long
    For i = 1 To PersonalData.RowCount
        Debug.Print PersonalData(i, 1)
    Next i

End Sub

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Пт, мар 19 2010, 09:57 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, мар 29 2007, 11:51
Сообщения: 330
Откуда: Yugorsk.RU
Пол: Мужской
Thanx. Про остальные два контрола я и не знал.

Кстати, там ещё есть контрол SAP Bapi - тоже как вариант для rfc вызовов


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Пт, мар 19 2010, 13:31 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 29 2008, 12:42
Сообщения: 491
Пол: Мужской
Хочу поблагодарить за помощь. Подключив все три файла
wdtfuncs.ocx
wdtlogU.ocx
wdtaocx.ocx
и заглянув в браузер, разобрался, почему не выходил Каменный Цветок.
Оказывается, при вызове Logon, второй параметр (boolean) указывает на то, как будет происходит идентификация: видимо или невидимо. Видимо - False, а мы писали True, но при этом не заполняли никаких значений (типа системы, манданта и др.).
Но что означает первый параметр (названный в Object Browser именем hWnd) не понял.

Что интересно. С самого начала на это внимание обратил, но "забил".
После обновления SAP GUI с 6.4 (патч 23) на 7.01 (патч 15) объект SAP Logon Control (в виде кнопки на форме) исчез с формы. Тогда мы не поверили своим глазам. :shock: Переслал файл на компы с GUI 6.4 и еще на один с GUI 7.01 - элемент виден только с GUI 6.4. Специально тогда вытащил кнопочку добавления объекта SAP Logon Control на панель. Пытаюсь добавить - пишет "Нет доверия ...". Это проблема 7.01 такая? Не сталкивались? Уровень безопасности (защита от макросов) - везде "Низкий". Обе галочки "доверять VBA-проектам" и еще какая-то рядом - взведены.
На компе с GUI 6.4, как и писал pberezin, действительно пишет "application is about to init unsafe activex", но элемент виден, не исчезает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Чт, сен 02 2010, 16:14 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 18 2009, 22:40
Сообщения: 16
Откуда: НЧ-КМ
Пол: Мужской
Добрый день!
пробую по второму примеру вызвать ФМ
соединение устанавливается, но на шаге:
Цитата:
' Собственно вызов:
If SAPFunction.Call <> True Then
MsgBox "Ошибка вызова ФМ"
Exit Sub
End If

ошибка.

пробовал с разными ФМ (с параметрами и без) - ошибка при SAPFunction.Call...
куда копать, не подскажете??


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Пт, сен 03 2010, 08:48 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 18 2009, 22:40
Сообщения: 16
Откуда: НЧ-КМ
Пол: Мужской
всё вопрос снят.
"вид выполнения" у ФМ должен быть "Дистанционный модуль" )


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: доступ к SAP из VBA (Excel)
СообщениеДобавлено: Пн, сен 13 2010, 10:34 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Цитата:
Что интересно. С самого начала на это внимание обратил, но "забил".
После обновления SAP GUI с 6.4 (патч 23) на 7.01 (патч 15) объект SAP Logon Control (в виде кнопки на форме) исчез с формы. Тогда мы не поверили своим глазам. Переслал файл на компы с GUI 6.4 и еще на один с GUI 7.01 - элемент виден только с GUI 6.4. Специально тогда вытащил кнопочку добавления объекта SAP Logon Control на панель. Пытаюсь добавить - пишет "Нет доверия ...". Это проблема 7.01 такая? Не сталкивались? Уровень безопасности (защита от макросов) - везде "Низкий". Обе галочки "доверять VBA-проектам" и еще какая-то рядом - взведены.
На компе с GUI 6.4, как и писал pberezin, действительно пишет "application is about to init unsafe activex", но элемент виден, не исчезает.


Подозреваю, что лучше все-таки переписать программу на "позднее" связывание. Ранее связывание, конечно, удобно, но при изменении версии ActiveX компонента (видимо вызванном изменением версии SapGUI) действительно могут происходить такие эффекты, VBA теряет связь с контролом, тк привязывается к конкретной версии.
Рекомендую переделать на позднее связывание.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

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


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

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


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

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