Eure Beispiele

Von anderen Usern zugesendet.
 
  Beschreibung
Beispiel 1 Tabellen aus BAPI auslesen
Beispiel 2 Sehr schönes und umfangreiches Demo
Beispiel 3 Auslesen beliebiger Tabellen mit Feldbeschreibung
Beispiel 4  
Beispiel 5  

Wenn auch ihr etwas beisteuern wollt, schickt mir einfach eine eMail.

Seitenende

 

 

 

 

 

ubuch.gif (1048 Byte) Beispiel 1:

Hi!

....Was wichtig wäre: ich habe mich unendlich lange gespielt, bis ich
herausgefunden habe, wie man auf ein BAPI zugreift, welches Tabellen
zurückliefert. Aus diesem Grund wäre es vielleicht keine schlechte Idee,
dieses in deine Beispiele aufzunehmen.....

Was tut das Ding:
* Zugriff auf BAPI mit Silent Logon
* Rückgabewert ist eine Tabelle PERSONAL_DATA
* Selektionskriterium ist LASTNAME_M
  (hierbei werden auch Wildcards verwendet)
* anschließend wird das 1. Feld des 1. Datensatzes angezeigt.


Quellcode:

unit Main;

interface

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

type
  TForm1 = class(TForm)
  SAPLogonControl1: TSAPLogonControl;
  Button1: TButton;
  SAPFunctions1: TSAPFunctions;
  procedure SAPLogonControl1Click(Sender: TObject);
  procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
(* Globale Variablen sollte man eigentlich unterlassen *)
tab, Table, Funct, Connection : Variant;
Form1 : TForm1;

implementation

{$R *.DFM}

procedure TForm1.SAPLogonControl1Click(Sender: TObject);
var txt : string; // um Tabellen-Feld auslesen
begin

{ Verbindung und deren Parameter definieren }
  Connection := SAPLogoncontrol1.newConnection;
  Connection.System := 'SystemName';
  Connection.Client := '800';
  Connection.ApplicationServer := 'R3X';
  Connection.SystemNumber := '00';
  Connection.User := 'Username';
  Connection.Password := 'Password';
  Connection.Language := 'DE' ;
  SAPLogonControl1.Enabled := false;

  if Connection.LogOn(0,true) = true then begin
  // Parameter "true" : SilentLogOn
  // SapFunctions1 die bestehende Connection zuweisen

  SapFunctions1.Connection := Connection;
  (* Log-Off-Button aktivieren *)
  Button1.Enabled:= true;
  (* Name der BAPI angeben *)
  funct := sapFunctions1.add('BAPI_EMPLOYEE_GETDATA');


  (* Selektionskriterium *)
  (* hier werden mittels Wildcard * alle Datensätze angegeben, *)
  (* die mit einem 'A' im Nachnamen beginnen *)

  funct.exports('LASTNAME_M').value := 'A*';

  (* wenn kein Fehler, dann Zugriff auf die BAPI *)
  if not funct.call then
  showMessage(funct.exception)
  else begin

(* BAPI kann nicht nur Exports (in Delphi: Imports) zurückgeben, *)
(* sondern auch Tabellen. Hier wird auf die Tabelle *)
(* PERSONAL_DATA zugegriffen *)

      tab := funct.tables.item('PERSONAL_DATA');

(* gibt Inhalt des 1. Feldes des 1. Datensatzes wieder *)
(* (in diesem Fall handelt es sich um die Personalnummer *)

      txt := Tab.value(1,1);
      ShowMessage(txt);
    end;
  end
  else begin
    ShowMessage('Anmeldung wurde nicht durchgeführt :(');
    SAPLogonControl1.Enabled:=true;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  { Verbindung trennen }
  Connection.LogOff;
  ShowMessage('System LogOff...');
  SAPLogonControl1.Enabled:=true;
  Button1.Enabled :=false;
end;

end.

Vielen Dank an Andreas Bruckner für dieses Beispiel.

Download

Seitenanfang

ubuch.gif (1048 Byte) Beispiel 2:

Hallo Herr Dröst,

als kleine Danksagung für Ihre SAP- Delphi Beispiele möchte ich ein
weiteres kleines SAP Logon Control Demo beisteuern.
Habe es mit Delphi 2 und Delphi 6 getestet.

Hinweis: Es fehlt noch die Kontrollfunktion, die prüft ob das OCX auf dem
System registriert ist.

Würde mich freuen wenn Sie es auf Ihrem System testen und Ihren Beispielen
zulegen.


Anmerkung: Das Demo ist recht Umfangreich, aus diesem Grund habe ich mich entschlossen nur einige Screeshots zu zeigen.

Bild4_.jpg (43047 Byte)

Bild6_.jpg (15338 Byte)

Bild8_.jpg (19013 Byte)

Vielen Dank an M. Haupenthal für dieses Demo.

Download

Seitenanfang 

ubuch.gif (1048 Byte) Beispiel 3:

Hallo Herr Droest,

da ich von den Informationen auf Ihrer Seite profitieren konnte, wollte ich auch ein wenig zur Erweiterung der Beispiele und Infos beitragen.

Da das Beispiel 3/4 nur auf eine bestimmte Datenbank im SAP zugreift, habe ich das Logon1.pas so verändert, dass variabel jede SAP-Tabelle mit den Inhalten angezeigt werden kann. Lediglich die SAP-Begrenzung auf Ergebnistabellenbreiten mit nur 512 Zeichen bleibt weiter bestehen.
Wenn Sie möchten, könnten Sie das Beispiel auf Ihrer Internetseite entsprechend einbauen und veröffentlichen....
PS: Danke für die Betreuung der Internetseite mit diesem Thema :-))

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;
  E_Tabelle:        TEdit;
  L_Tabelle:        TLabel;
  SAPLogonControl1: TSAPLogonControl;

procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1                     : TForm1 ;
Table, Funct, Connection : Variant ;
Table2                    : Variant;

implementation

{$R *.DFM}


procedure TForm1.Button2Click(Sender: TObject);
var txt : string ;
    r,s : integer ;
    txt2:variant;


begin
  Connection                    := SAPLogoncontrol1.newConnection;
  Connection.User               := 'USERNAME';
  Connection.system             := 'IDS';
  Connection.client             := '800';
  Connection.ApplicationServer := 'SAPIDES';
  Connection.SystemNumber      := '00';
  Connection.password          := '******';
  Connection.language          := 'DE' ;

  if Connection.LogOn(0,false) = true then
  begin
    SAPFunctions1.Connection := Connection;
    Funct := SAPFunctions1.add('RFC_READ_TABLE');
    Funct.exports('QUERY_TABLE').value := E_Tabelle.text;
    if not Funct.call then
      showMessage(Funct.exception)
    else

    begin
      Table := Funct.tables.item('DATA');
      Table2:= Funct.tables.item('FIELDS');
      grid.ColCount := Table2.rowcount;
      For r:=1 to Table2.Rowcount do
        grid.cells[r-1,0] := Table2.Value(r,1);

      Grid.RowCount := Table.rowcount;
      for r := 1 to grid.rowCount -1 do

      begin
        txt := Table.value(r,1);
        For s:=0 to Grid.ColCOunt-1 do
          Grid.cells[s,r] :=

            copy(txt,StrtoInt(Table2.value(s+1,2))+1,StrtoInt(Table2.value(s+1,3)));
      end;
      grid.visible := True;
    end;
  end;
end;


end.

Vielen Dank an Matthias Goebel für dieses Beispiel.

Download

Seitenanfang