Hallo zusammen,
ich will über einen Button eine SAP Transaktion aufrufen, und in deren Maske zwei Variabel eingeben.
Im Sap selbst habe ich mir die DynproFeldnamen geholt.
Das ganze versuche ich nach Tip eines Kollegen über die UseSchellEigenschaft.
Es funktioniert auch soweit, dass die Transaktion aufgerufen wird,
und eine Variable in dem gewünschten Feld landet.
Die Zweite Variable bekomme ich aber nicht rein 😦
Weiß einer hier Rat?
Hier der Code um die Transaktion aufzurufen:
//SAP Laden
public void sap_laden(string transaktion, string sapfeld, string gesamtprojektnummer)
{
string sap32bit_pfad = @"C:\Program Files\SAP\FrontEnd\SAPgui\sapshcut.exe";
string sap64bit_pfad = @"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe";
string sap_pfad = "";
string werkfeld="P_WERKS";
string werkzahl="0017";
//Prüfen auf 32 oder 64 Bit System
if (Environment.Is64BitOperatingSystem)
{
sap_pfad = sap64bit_pfad;
}
else
{
sap_pfad = sap32bit_pfad;
}
Process compiler = new Process();
compiler.StartInfo.FileName = sap_pfad;
compiler.StartInfo.Arguments = "/INI_FILE=\\\\xyz.de\\server\\int\\Application\\SAP\\de_SAP_PROD_SNC.INI /system=P02 /language=DE /client=001 /user=" + verbindung_zu_definitionen.getUsername() + " /command=" + transaktion + " " + sapfeld + "=" + gesamtprojektnummer;// +" " + werkfeld + "=" + werkzahl;
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();
compiler.WaitForExit();
}
Das auskommentierte bekomme ich nicht unter.
Wo liegt der Fehler beim füllen des zweiten Feldes?
Kann ich das "werkfeld" separat mit "werkzahl" befüllen?
Danke im Voraus
Gruß
Man sollte bei SAP die Bausteine direkt ansprechen und nicht ueber die Form.
Dazu bietet sich ERPConnect oder der SAP .NET Connector an.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Mh ok, die beiden Sachen kenn ich nicht 😦
und mit diesem Shell bekommt man das nicht hin?
Wir koennen Dir schlecht sagen, wie eigene Feldnamen heissen. Ich weis nur, dass es bei eigenen Transaktionen / Forms fast nicht ohne Connector geht, da die ABAP Entwickler Transaktionen meist nicht so sauber implementieren.
Zudem ist das externe Fuellen von Fenstern etc sowieso immer von Nebeneffekten wie der Fehlerbehandlung abhaengig. APIs zu nutzen sollte man immer vorziehen, wenn man kann.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
ok ich hab eine Lösung gefunden, ohne die API´s
(habe da im moment nicht die Zeit mich in diese einzuarbeiten...)
meine "Arguments" Zeile habe ich mit einem ";" zwischen gesamtprojektnummer und werkfeld bereichert und nun geht es:
compiler.StartInfo.Arguments = "/INI_FILE=\\\\xyz.de\\server\\int\\Application\\SAP\\de_SAP_PROD_SNC.INI /system=P02 /language=DE /client=001 /user=" + verbindung_zu_definitionen.getUsername() + " /command=" + transaktion + " " + sapfeld + "=" + gesamtprojektnummer +";" + werkfeld + "=" + werkzahl;
Falls jemand von euch mir eine gute Seite empfehlen kann, wo SAP .net oder die anderen Connectors
einfach erklärt werden, wäre ich euch dankbar 😃
Gruß
In der jeweiligen Dokumentation des Produkts.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Codeprojekt hat mir geholfen..
Verbindung aufbauen: Connection to SAP from Visual Studio 2008 with SAP.NET Connector 2.0
Tabelle Lesen: Read Tables from SAP R/3 using SAP.NET Connector
++Rekursion ++
(lat. , die) siehe Rekursion
Falls doch mal jemand schnell Transaktionen fernsteuern will, mit ERPConnect geht das einfach und sauber. Und hier die die Doku dazu:
Transaktionen aufrufen und steuern: Die Klasse Transaction
Falls es jedoch eine BAPI dafür gibt, sollte man diese natürlich bevorzugen, und auch das geht ganz einfach mit ERPConnect:
RFC-Client-Funktionen und BAPIs
Hier gibts eine Trial Version: