我正在尝试编写一个打开SAP会话的VBScript,具有单点登录功能。
我已经在这里和其他网站上找到了有关此主题或类似主题的一些信息,但它们都不符合我的要求。
这是我目前所做的,取自a SAP Discussion Forum:
但SAP GUI中发生错误;
Hostame'PRD'未知
线:896
方法:NiPGetHostByName:'找不到'PRD'
有人能帮助我吗?
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
答案 0 :(得分:0)
完全披露,我不使用SAP所以我所说的任何纯粹是受过教育的猜测工作。
在看了一会儿问题之后,我可能会有一个建议。
错误直接来自SAP GUI并且非常详细,这使我们能够做出一些假设;
让我们尝试分解错误。由于这个特殊的错误,我们有丰富的信息(将挑选一些关键的信息);
有了所有这些信息,有两件事情变得明显;
NiPGetHostByName
,表示SAP GUI希望使用名称找到主机。PRD
值似乎是SID列而不是名称。那么,你是否应该传递Name而不是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