Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit SAPLogonControl (https://www.delphipraxis.net/187376-problem-mit-saplogoncontrol.html)

bjeannet 24. Nov 2015 11:05

Datenbank: SAP ERP 6.0 • Version: 6.0 • Zugriff über: SAP Logon Control

Problem mit SAPLogonControl
 
Guten Tag
Ich benutze Delphi 2009 und die OCX Komponente SAPLogonControl von SAP und zwar in der Unicodeversion. Nun versuche ich, mittels Silent Login eine Verbindung zu einem SAP System aufzubauen mit folgendem Quelltext:

Delphi-Quellcode:
  SAPLogonControl1 :=TSAPLogonControl.Create(Self);
  cnSAP :=SAPLogonControl1.newConnection;
  qrtest.First;
  while not qrtest.Eof do
  begin
    msgh := DateTimeToStr(now)+' '+qrtest.Fields[0].AsString+'/'+qrtest.Fields[3].AsString+':';
    cnSAP.System := qrtest.Fields[0].AsWideString;
    cnSAP.SystemNumber := qrtest.Fields[1].AsWideString;
    cnSAP.ApplicationServer := qrtest.Fields[2].AsWideString;
    cnSAP.Client := qrtest.Fields[3].AsWideString;
    cnSAP.User := 'U215301';
    cnSAP.Password :=Edit1.Text;
    if cnSAP.Logon(0,True) = true then
    begin
      msgi := 'INF: Login erfolgreich';
      logwrt(msgh+' '+msgi);
    end
    else
    begin
      msgi := 'ERR: Login fehlgeschlagen.';
      logwrt(msgh+' '+msgi);
      cnSAP.LastError;
    end;
    cnSAP.Logoff;
    qrtest.Next;
  end;
Mittels Silent Logon funktionieren die Verbindungen nicht und wenn ich es mit den genau gleichen Daten mit einer non-silent Verbindung (also: cnSAP.Logon(0,False) versuche, dann funktionieren alle Verbindungen einwandfrei. Habe ich ein Problem mit Unicode (ich dachte, Delphi 2009 unterstützt Unicode und habe deshalb auch die Unicode Komponenten von SAP gewählt) ?

Weiss ev. jemand einen Rat ?

Thomas Horstmann 24. Nov 2015 12:08

AW: Problem mit SAPLogonControl
 
Ich melde mich immer mit Silent an, da ich einen eigenen Dialog benutze. Den einzigen Unterschied den ich spontan sehe ist "Language". Ggf. den Status abfragen. Ich benutze allerdings Seattle. Klappte aber auch schon mit den Vorgänger-Versionen.

Delphi-Quellcode:
...
FLogonControl : TSAPLogonControl ;
FConnection  : Variant ;
FFunctions   : TSAPFunctions ;
...
{ LogonControl anlegen }
  try
  { Anlegen }
  FLogonControl        := TSAPLogonControl.Create(Self) ;
  FConnection          := FLogonControl.NewConnection ;
  FFunctions           := TSAPFunctions.Create(Self) ;
  FFunctions.AutoLogon := False ;
  FFunctions.Connection := FConnection ;
  except
  { Löschen }
  FLogonControl := nil ;
  end ; // try
...
procedure TRFCDatabase.Open ;
var
iState  : String ;
iMessage : String ;
begin
{ Fehler: Kein SAP }
if FLogonControl = nil then Exit ;

{ Parameter }
FConnection.User             := UpperCase(FUsername) ;
FConnection.Password         := FPassword ;
FConnection.ApplicationServer := FApplicationServer ;
FConnection.Client           := FClient ;
FConnection.System           := FSystem ;
FConnection.SystemNumber     := FSystemNumber ;
FConnection.Language         := FLanguage ;
{ Anmelden, ggf. Fehler }
if FConnection.Logon(0,True) = False then
  begin
  { Status holen }
    case FConnection.IsConnected of
    tloRfcNotConnected           : iState := 'NotConnected' ;
    tloRfcConnected              : iState := 'Connected' ;
    tloRfcConnectCancel          : iState := 'Cancel' ;
    tloRfcConnectParameterMissing : iState := 'ParameterMissing' ;
    tloRfcConnectFailed          : iState := 'Failed' ;
    else
      iState := 'Unassigned' ;
    end ; // case

  { Variablen }
  iMessage :=
    'Fehler bei der An-/Abmeldung.' + #13+#10 + #13+#10 +
    'RFC Datenbank' + ': ' + Name  + #13+#10 +
    iState ;
  { Meldung }
  ShowMessage(iMessage) ;
  end ; // if Logon
end ;

bjeannet 24. Nov 2015 12:28

AW: Problem mit SAPLogonControl
 
Wie sind in Ihrem Beispiel die Variablen definiert ? Vielleicht liegt ja dort der Fehler ?

pertzschc 24. Nov 2015 16:29

AW: Problem mit SAPLogonControl
 
Zitat:

Zitat von bjeannet (Beitrag 1322316)
Delphi-Quellcode:
    cnSAP.SystemNumber := qrtest.Fields[1].AsWideString;

Probier mal die SystemNumber mittels StrToInt(qrtest.Fields[1].AsWideString) zu bestücken.

Grüße, Christoph

Thomas Horstmann 24. Nov 2015 20:52

AW: Problem mit SAPLogonControl
 
Eigentlich nichts ungewöhnliches bei den Variablen.

Delphi-Quellcode:
...
FUsername         : String ;
FPassword         : String ;
FApplicationServer : String ;
FClient           : String ;
FSystem           : String ;
FSystemNumber     : Integer ;
FLanguage         : String ;
...

bjeannet 25. Nov 2015 09:39

AW: Problem mit SAPLogonControl
 
Und Ihr habt auch die Unicode Versionen der OCX-Komponenten in Delphi eingebunden ?

bjeannet 25. Nov 2015 09:41

AW: Problem mit SAPLogonControl
 
Das mit StrToInt(qrtest.Fields[1].AsWideString) hat leider nichts gebracht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz