Как войти на SAP с помощью единого входа через VBS? - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь написать VBScript, который открывает сеанс SAP с возможностью единого входа.

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

Это то, что я имею до сих пор, взято с дискуссионного форума SAP :

Но в SAP GUI возникает ошибка;

Хостам 'PRD' неизвестен

Линия: 896
Метод: NiPGetHostByName: «PRD» не найден

enter image description here

Кто-нибудь может мне помочь?

Option Explicit
Dim WSHShell, SAPGUIPath, SID, InstanceNo, WinTitle
Set WSHShell = WScript.CreateObject("WScript.Shell")
If IsObject(WSHShell) Then
    SAPGUIPath = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\"
    SID = "PRD"
    InstanceNo = "00"
    WSHShell.Exec SAPGUIPath & "sapgui.exe " & SID & " " & _
      InstanceNo
    WinTitle = "SAP"
    While Not WSHShell.AppActivate(WinTitle)
      WScript.Sleep 250
    Wend
    Set WSHShell = Nothing
End If

1 Ответ

0 голосов
/ 03 мая 2018

Полное раскрытие информации, я не использую SAP, поэтому все, что я скажу, является чисто образованной догадкой.

После небольшого изучения вопроса у меня может появиться предложение.

Ошибка исходит непосредственно из графического интерфейса SAP и достаточно подробна, что позволяет нам делать некоторые предположения;

  1. Ошибка из графического интерфейса SAP, поэтому VBScript выполняется без проблем.
  2. Проблема, скорее всего, связана с передачей информации в графический интерфейс SAP.

Давайте попробуем устранить ошибку. С этой конкретной ошибкой мы наделены огромным количеством информации (подберем несколько ключевых);

  • Модуль: Нам сообщают, из какого файла происходит эта ошибка.
  • Строка: строка, в которой происходит ошибка.
  • Метод: метод, в котором ошибка возникает долго с возникшей ошибкой.
  • Код возврата: мы можем использовать этот код для поиска конкретного кода возврата SAP GUI. Но только в том случае, если документация достаточно подробна, чтобы ее содержать. Также можно выполнить поиск в Интернете для поиска кодов ошибок для конкретного продукта.

Вооружившись всей этой информацией, становятся очевидными две вещи;

  1. Метод называется NiPGetHostByName, что предполагает, что SAP GUI ожидает найти хост с использованием имени.
  2. Судя по коду в вопросе и прилагаемому снимку экрана списка соединений в SAP, значение PRD представляется столбцом SID, а не именем.

Итак, следует ли вам передавать имя вместо SID, поскольку кажется, что SAP GUI не работает с SID и ошибочно полагает, что PRD является именем и, следовательно, не находит его?

Я бы предложил попробовать что-то вроде;

Option Explicit
Dim WSHShell, SAPGUIPath, SID, InstanceNo, WinTitle, Name
Set WSHShell = WScript.CreateObject("WScript.Shell")
If IsObject(WSHShell) Then
    SAPGUIPath = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\"
    Name = """1. SAP ECC Production (PRD)"""
    SID = "PRD"
    InstanceNo = "00"
    WSHShell.Exec SAPGUIPath & "sapgui.exe " & Name & " " & _
      InstanceNo
    WinTitle = "SAP"
    While Not WSHShell.AppActivate(WinTitle)
      WScript.Sleep 250
    Wend
    Set WSHShell = Nothing
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...