Да, это возможно. Всякий раз, когда вы хотите выполнить функционально удаленный функциональный модуль из-за пределов системы SAP, вам все равно нужно войти в эту систему. Вы можете использовать предоставленную пользователем информацию для входа в систему вместо использования фиксированного имени пользователя и пароля для подключения к веб-приложению к системе SAP.
Обратите внимание, что функциональные модули, которые вы хотите вызвать, будут выполняться с полномочиями, назначенными пользователю, которого вы используете для входа в систему. Таким образом, пользователям вашего веб-приложения потребуется авторизация для вызова функциональных модулей.
Реализация во многом зависит от библиотеки RFC, которую вы решите использовать. Например, в SAP .Net Connector 3.0 вы всегда используете RfcDestinationManager
, где вам необходимо заранее зарегистрировать свои пункты назначения. Но вы можете создать собственное назначение и переопределить имя пользователя и пароль в этом месте назначения перед тем, как его использовать.
using SAP.Middleware.Connector;
public RfcDestination GetDestination(string destinationName, string username, string password)
{
dest = RfcDestinationManager.GetDestination(destinationName);
customDest = dest.CreateCustomDestination();
customDest.Client = dest.Client;
customDest.User = username;
customDest.Password = password;
return customDest;
}
в этом фрагменте предполагается, что пункт назначения уже зарегистрирован в RfcDestinationManager
, либо через код, либо через конфигурацию. Он не должен содержать действительный логин, имя пользователя и пароль могут быть пустыми (так как вы все равно их переопределите). Но место назначения с Hostname
, System Number
и Id
должно быть там (хотя вы, вероятно, тоже можете их переопределить, так что вам может понадобиться только пустое место назначения с именем для начала).
если вы только хотите проверить информацию для входа в систему и не хотите выполнять функциональные модули в контексте пользователя, вы все равно можете создать второе соединение с системой SAP и проверить, можете ли вы подключиться , Третий вариант - использовать функциональный модуль SUSR_CHECK_LOGON_DATA
и просто проверить имя пользователя и пароль.
Использование имени пользователя и пароля для всех вызовов RFC имеет несколько преимуществ: вы можете контролировать полномочия в системе SAP. SAP Netweaver имеет комплексную модель авторизации, которая позволяет назначать пользователям очень специфические полномочия, позволяя создавать роли для различных сценариев использования, например, read-only
пользователей, maintainers
и admins
(в контексте вашего веб-приложения). ). И когда вы используете стандартные функциональные модули для обновления данных в системе SAP, фактический пользователь, который выполнил изменение через ваше веб-приложение, впоследствии будет виден как пользователь, выполняющий изменение, а не пользователь общего веб-приложения.