AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kommunikation mit SAP GUI ohne BAPI oder RFC
Thema durchsuchen
Ansicht
Themen-Optionen

Kommunikation mit SAP GUI ohne BAPI oder RFC

Ein Thema von Snaky · begonnen am 8. Mai 2011 · letzter Beitrag vom 11. Mai 2011
 
BlackbirdBerlin

Registriert seit: 15. Okt 2009
Ort: 10318 Berlin
91 Beiträge
 
Delphi 7 Architect
 
#5

AW: Kommunikation mit SAP GUI ohne BAPI oder RFC

  Alt 9. Mai 2011, 14:23
...
Ziel ist es diverse Transaktionen durchzuführen und Daten auomatisiert in lokale Dateien zu extrahieren. (z.B. den Export der Daten aus RSPARAM (Transakion SA38))...
Hi Snaky,
die RSPARAM ist nur eine Struktur, die im Gegensatz zu einer transparenten Tabelle keine Daten enthält. Zumindest nicht in tabellarischer Form.
Welche Programme ( SAP-Standard? ) willst Du denn mit SA38 ausführen, um deren Ergebnis zu extrahieren?
Kannst Du ggf. mit deinem User bestehende RFC-Bausteine aufrufen ( z.B. rfc_get_table_entries )?

Außerdem gibt es eine Komponente, mit der man die SAP-GUI fernsteuern kann / konnte.
Damit kann man direkt Eingabefelder per Namen anspringen, dort Wert eintragen und auslesen...

Delphi-Quellcode:
    Sap := TSapEvent.Create( Application.MainForm );
    bOK := Sap.Connect( frmHaupt.edHost.Text, frmHaupt.edHostID.Text, 2050);   // SapGuiMerlin or SapGuiFullMenu
    OKCheck(bOK, 'Verbindung erstellen');

    Sap.RowDimension := 24;
    Sap.RowListDimension := 24;
    Sap.ColumnDimension := 80;
    Sap.ColumnListDimension := 80;
    Sap.SetSizeFlag := True;
    OKCheck(bOK, 'Verbindung einstellen');

    Application.ProcessMessages;
    
    iCtrl := Sap.FindByField('RSYST-MANDT', 0, 2);   // Mandant (index 1);
    bOK := Sap.SetControlValue(iCtrl, frmHaupt.edMandant.Text);
    OKCheck(bOK, 'Mandant einstellen');

    Application.ProcessMessages;
    
    iCtrl := Sap.FindByField('RSYST-BNAME', 0, 2);   // Benutzer (index 3);
    bOK := Sap.SetControlValue(iCtrl, frmHaupt.edBenutzer.Text );
    OKCheck(bOK, 'Benuter einstellen');

    Application.ProcessMessages;
    
    iCtrl := Sap.FindByField('RSYST-BCODE', 0, 3);   // Kennwort (index 5);
    bOK := Sap.SetControlValue(iCtrl, frmHaupt.edPasswort.Text);
    OKCheck(bOK, 'Passwort einstellen');

    Application.ProcessMessages;
    
    iCtrl := Sap.FindByField('RSYST-LANGU', 0, 2);   // Sprache (index 7);
    bOK := Sap.SetControlValue(iCtrl, 'd');
    OKCheck(bOK, 'Sprache einstellen');

    bOK := Sap.SetCursorByControl(iCtrl);
    OKCheck(bOK, 'Cursor positionieren');
Die Unit/das Control hieß SapAutoGuiOcx_TLB glaube ich aus meinem alten Code zu entnehmen.
Damit kannst Du fast beliebige Aktionen in der SAP-Gui durchführen, inkl. der Auswertung, was jeweil nach einem "Tastendruck" passiert ist...

Habe ich vor vielen Jahren mal verwendet, um Massendaten automatisiert aus lokalen Datenbanken in SAP zu erfassen und dabei das Laufzeitverhalten auszuwerten...

HTH,
Tim
Tim
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz