BAPI / RFC with Delphi(系列之五)--TSAPFunctions和TSAPLogoncontrol使用(无登录对话框Delphi源代码)
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.
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号