Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
sap transaktion aufrufen
Edzio
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

sap transaktion aufrufen

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15817
Herkunft: BW

beantworten | zitieren | melden

Man sollte bei SAP die Bausteine direkt ansprechen und nicht ueber die Form.
Dazu bietet sich ERPConnect oder der SAP .NET Connector an.
private Nachricht | Beiträge des Benutzers
Edzio
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

beantworten | zitieren | melden

Mh ok, die beiden Sachen kenn ich nicht :(

und mit diesem Shell bekommt man das nicht hin?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15817
Herkunft: BW

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Edzio
myCSharp.de - Member



Dabei seit:
Beiträge: 68

Themenstarter:

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15817
Herkunft: BW

beantworten | zitieren | melden

In der jeweiligen Dokumentation des Produkts.
private Nachricht | Beiträge des Benutzers
EifelYeti
myCSharp.de - Member

Avatar #avatar-3408.jpeg


Dabei seit:
Beiträge: 66
Herkunft: Eifel

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
alibabi
myCSharp.de - Member



Dabei seit:
Beiträge: 1

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers