BAPI / RFC with Delphi(系列之五)--TSAPFunctions和TSAPLogoncontrol使用(无登录对话框Delphi源代码)...

本文介绍了一个使用 Delphi 和 SAP ActiveX 组件来连接 SAP 系统并读取成本中心数据的方法。通过创建 Form 并设置必要的控件,如 SAPLogonControl 和 SAPFunctions,可以实现 SAP 系统的登录及调用 RFC_READ_TABLE 函数。此教程适用于希望了解如何从 SAP 系统中获取数据的开发者。

1、新建一个Form,并在form上添加下列控件

Component Function SAPFunctions1 SAP ActiveX-component to connect RFC/BAPI SAPLogoncontrol1 SAP ActiveX-Component to logon to the system Grid Stringgrid to show the data's in the form Button1 Button to start the procedure

2、源代码如下(使用RFC_READ_TABLE函数读取成本中心)
unit logon1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, OleCtrls, StdCtrls, SAPFunctionsOCX_TLB,
Grids, SAPLogonCtrl_TLB;

type
TForm1 = class(TForm)
SAPFunctions1: TSAPFunctions;
Button2: TButton;
Grid: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
SAPLogonControl1: TSAPLogonControl;
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1 : TForm1 ;
Table,Funct, Connection : VARIANT ;

implementation

{$R *.DFM}


procedure TForm1.Button2Click(Sender: TObject);
var txt : string ;
r : integer ;

begin
Connection := SAPLogoncontrol1.newConnection;
Connection.User := AnsiUpperCase(Edit1.text);
Connection.System := 'IDS';
Connection.Client := '800';
Connection.ApplicationServer:= 'SAPIDES';
Connection.SystemNumber:= '00';
Connection.Password:= Edit2.text;
Connection.Language:= 'DE' ;

if Connection.LogOn(0,true) = true then
(* parameter "true" = SilentLogOn *)

begin

(* assign the existing connection to the *)
(* component SAPFunctions1 *)

SAPFunctions1.Connection := Connection;

Funct := SAPFunctions1.add('RFC_READ_TABLE');
Funct.exports('QUERY_TABLE').value := 'CSKT';
if not Funct.call then
showMessage(Funct.exception)
else begin
Table := Funct.tables.item('DATA');
grid.rowCount := Table.rowcount + 1;
grid.cells[0,0] := 'Client';
grid.cells[1,0] := 'CostCent-No';
grid.cells[2,0] := 'CostCent-Des.';
for r := 1 to grid.rowCount -1 do begin
txt := Table.value(r,1);
grid.cells[0,r] := copy(txt,0,3);
grid.cells[1,r] := copy(txt,9,10);
grid.cells[2,r] := copy(txt,27,20);
end;
grid.visible := True;
end;
end;
end;
end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值