Если вы используете функции SAP BAPI в локальной установке клиента, вы можете обойти необходимость выполнения команд оболочки и т. Д.
Один из методов в VBA - создать глобальную переменную типа Object в модуле для функций SAP.
- В одной подпрограмме в том же модуле создайте объект и войдите в SAP.
- В других подпрограммах / функциях выполнять некоторые действия.
- Используйте последнюю подпрограмму для выхода из системы и удаления объекта.
Глобальная переменная сохраняет ваш сеанс открытым на время вашей обработки.
Например, в ваших глобальных переменных в верхней части вашего модуля вы можете поместить:
Dim objR3 As Object 'SAP functions / connection
Допустим, вы создаете форму доступа с некоторыми текстовыми полями для атрибутов входа в систему (для этого вы также можете использовать Excel и просто ссылаться на ячейки). Затем в подпрограмме входа используйте что-то вроде:
strUser = frm!txtSAPUser
strPwd = frm!txtPassword
strClient = frm!txtClient
strSystem = frm!txtSystem
strServer = frm!txtServer
Set objR3 = CreateObject("SAP.Functions")
With objR3.Connection
.System = strSystem
.client = strClient
.User = strUser
.Password = strPwd
.language = "EN"
.ApplicationServer = strServer
.SystemNumber = strSystem
'--if no logon then exit
If .logon(0, True) <> True Then
MsgBox "Login failed.", vbExclamation, "Login"
End If
End With
Затем, выполнив некоторые действия в других подпрограммах, вы можете использовать команду logoff в подпрограмме выхода из системы:
objR3.Connection.LOGOFF
Этот метод будет держать ваше соединение открытым, пока вы выполняете некоторые сценарии для интерфейса SAP.