Laden...

sap transaktion aufrufen

Erstellt von Edzio vor 9 Jahren Letzter Beitrag vor 9 Jahren 6.686 Views
E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 9 Jahren
sap transaktion aufrufen

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ß

16.827 Beiträge seit 2008
vor 9 Jahren

Man sollte bei SAP die Bausteine direkt ansprechen und nicht ueber die Form.
Dazu bietet sich ERPConnect oder der SAP .NET Connector an.

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 9 Jahren

Mh ok, die beiden Sachen kenn ich nicht 😦

und mit diesem Shell bekommt man das nicht hin?

16.827 Beiträge seit 2008
vor 9 Jahren

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.

E
Edzio Themenstarter:in
68 Beiträge seit 2013
vor 9 Jahren

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ß

16.827 Beiträge seit 2008
vor 9 Jahren

In der jeweiligen Dokumentation des Produkts.

64 Beiträge seit 2012
vor 9 Jahren

++Rekursion ++
(lat. , die) siehe Rekursion

A
1 Beiträge seit 2014
vor 9 Jahren

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:

Download Testversionen