BAPI / RFC with Delphi(系列之三)--TSAPLogonControl使用(无对话框的登录sap的delphi源代码)
1、新建一个Form,并在form上添加下列控件
Component | Function |
SAPLogOnControl1 | SAP ActiveX-Component to logon to the system |
Button1 | Button to start the procedure |
2、源代码如下
unit s_logon;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, OleCtrls, SAPLogonCtrl_TLB, StdCtrls,Grids ;
type
TForm1 = class(TForm)
SAPLogonControl1: TSAPLogonControl;
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
StaticText1: TStaticText;
Button1: TButton;
procedure SAPLogonControl1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
Connection :variant;
implementation
{$R *.DFM}
procedure TForm1.SAPLogonControl1Click(Sender: TObject);
begin
(* define connection and it's parameters *)
Connection := SAPLogoncontrol1.newConnection;
(* In some GUI-versions the username *)
(* must be written in uppercase !!! *)
Connection.User := AnsiUpperCase(Edit1.text);
Connection.System := 'IDS';
Connection.Client := '800';
Connection.ApplicationServer := 'SAPIDES';
Connection.SystemNumber := '00';
Connection.Password := Edit2.text;
Connection.Language := 'DE' ;
SAPLogonControl1.Enabled := false;
if Connection.LogOn(0,true) = true then
(* parameter "true" : SilentLogOn *)
begin
ShowMessage('Logon O.K.');
Button1.Enabled:= true;
end
else
begin
ShowMessage('Error on logon :-(((');
SAPLogonControl1.Enabled:=true;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
(* cut connection *)
Connection.LogOff;
ShowMessage('System LogOff...');
SAPLogonControl1.Enabled:=true;
Button1.Enabled :=false;
end;
end.
wdtfuncs SAP data type not supported error on line: Set i_TABNAME = Func.Exports("TABNAME")
Here is my VB code:
Option Explicit Public Functions As SAPFunctionsOCX.SAPFunctions Private LogonControl As SAPLogonCtrl.SAPLogonControl Private R3Connection As SAPLogonCtrl.Connection Private TableFactory As SAPTableFactory Dim Func As SAPFunctionsOCX.Function Public i_TABNAME As SAPFunctionsOCX.Parameter Public i_FIELD As SAPFunctionsOCX.Parameter Public i_LANGU As SAPFunctionsOCX.Parameter Public strLabel As SAPFunctionsOCX.Parameter 'Public tENTRIES As SAPTableFactoryCtrl.Table Public Sub Main() Dim ix As Integer Dim retcd As Boolean Dim SilentLogon As Boolean Set LogonControl = CreateObject("SAP.LogonControl.1") Set Functions = CreateObject("SAP.Functions") Set TableFactory = CreateObject("SAP.TableFactory.1") Set R3Connection = LogonControl.NewConnection R3Connection.client = "000" R3Connection.ApplicationServer = "A1KGNB09" R3Connection.language = "DE" R3Connection.User = "BCUSER" R3Connection.Password = "minisap" R3Connection.System = "A1 SAP 620 09" R3Connection.SystemID = "000" R3Connection.SystemNumber = "00" R3Connection.UseSAPLogonIni = False SilentLogon = False retcd = R3Connection.Logon(0, SilentLogon) If retcd <> True Then MsgBox "Logon failed": Exit Sub Functions.Connection = R3Connection Set Func = Functions.Add("DDIF_FIELDLABEL_GET") Set i_TABNAME = Func.Exports("TABNAME") Set i_FIELD = Func.Exports("FIELDNAME") Set i_LANGU = Func.Exports("LANGU") Set strLabel = Func.Imports("LABEL") i_TABNAME.Value = "USR02" i_FIELD.Value = "BNAME" i_LANGU.Value = "DE" Func.Call MsgBox strLabel ' Debug.Print eNUMBER_OF_ENTRIES ' For ix = 1 To tENTRIES.RowCount ' Debug.Print tENTRIES(ix, 1) ' Next R3Connection.Logoff End Sub