SAP Gui über Link aufrufen (nicht SAP Gui HTML!)

SAP Gui über Link aufrufen (nicht SAP Gui HTML!)

Februar 3, 2021 4 Von SAP Guy

Dieses Thema taucht gefühlt immer mal wieder auf. Häufig soll aus einem anderen Programm in das SAP abgesprungen und direkt eine Transaktion mit entsprechenden Parametern aufgerufen werden. Der Absprung per Hyperlink stellt in den meisten Fällen den einfachsten Weg dar, allerdings findet man im Internet nur Informationen darüber wie man dann den SAP Gui HTML im Browser öffnet.
In manchen Fällen mag das die Lösung sein, in vielen ist es nicht gewünscht, da die SAP Gui verwendet werden soll.

Wie also kann man die SAP Gui über einen Link mit Parametern öffnen? Ich habe dazu im Internet keine Informationen gefunden und daher selbst eine Lösung entwickelt.
Gleich Vorweg: Diese Lösung funktioniert, ist aber je nach Anwendungsfall nicht sehr komfortabel. Im vorliegenden Fall sollte sie für ein IT-Team genutzt werden, wodurch Themen wie Administratorrechte (auf Windows-Ebene) uninteressant waren.

Nun also zu den einzelnen Schritten die zur Umsetzung der Lösung nötig waren.

SAP Gui per Kommandozeile aufrufen mit sapshcut.exe

Dieser Schritt bildet die Grundlage für den Aufruf der SAP Gui über einen Hyperlink. Dazu gibt es das Tool “sapshcut.exe” welches sich im Installationspfad der SAP Gui befindet. Dieses Tool bietet die Möglichkeit ein SAP Fenster über die Kommandozeile zu öffnen. Beispielsweise würde der folgende Befehl das System “PRO” mit dem Mandanten “100”, der Sprache “DE” öffnen und dort die Transaktion “IE03” aufrufen, die Equipmentnummer “4711” in das entsprechende Feld einfügen und dann direkt in dieses Equipment springen.

Dieser Befehl kann in der Kommandozeile (“cmd”) oder bei Ausführen (Windowstaste + R, bzw. “run”) genutzt werden.

sapshcut.exe -system=PRO -client=100 -language=DE -reuse=1 -command="*IE03 RM63E-EQUNR=4711;"

Aber Achtung: im SAP Logon muss ein Eintrag mit diesem System hinterlegt sein, ansonsten funktioniert der Aufruf nicht.

Dies war der erste Schritt, nun geht es daran diesen Befehl irgendwie mit einem Hyperlink zu verknüpfen. Da man den Befehl für sapshcut.exe nicht über einen Hyperlink ausführen kann, muss ein Programm zwischengeschaltet werden, welches den Aufruf durchführt. Die Idee ist folgende: Der Benutzer klickt auf einen Link. Dieser startet eine lokale Anwendung und übergibt dieser die Equipmentnummer. Diese führt den Befehl für sapshcut.exe aus und öffnet somit einen neuen SAP Modus mit dem Equipment.

Elemente für Aufruf der SAP Gui über einen Hyperlink
Elemente zum Aufruf der SAP Gui über einen Hyperlink

Anwendung zum Aufruf in C#

Der erste wichtige Punkt ist eine kleine Kommandozeilenanwendung die den Befehl ausführt. Diese habe ich schnell mit C# geschrieben. Diese Anwendung nimmt beim Aufruf einen Parameter entgegen. Im Parameter ist die Equipmentnummer enthalten, diese wird vom Rest getrennt und dann in die Parameter für den Aufruf von sapshcut.exe eingefügt. Danach wird der Aufruf gestartet.

using System;
using System.Diagnostics;

namespace CALLSAP
{
    class Program 
    {
        static void Main(string[] args)
        {
            string[] CommandLineArgs = Environment.GetCommandLineArgs();

            //CommandLineArgs[0]: Immer der Dateipfad, [1] damit das übergebene Argument aus dem Aufruf
            if (CommandLineArgs.Length > 1)
            {
                string args_equi = CommandLineArgs[1].ToString();   //erstmal komplett auslesen. Da ist aber noch der Programmaufruf "callsap:" dabei
                string equi = args_equi.Replace("callsap:", "") ;    //Daher hier das "callsap:" entfernen um die Equipmentnummer zu erhalten
                string prg = "C:\\Program Files (x86)\\SAP\\FrontEnd\\SAPgui\\sapshcut.exe";    //Aufzurufendes Programm
                string parameter = "/C -system=PRO -client=100 -language=DE -reuse=1 -command=\"*IE03 RM63E-EQUNR=" + equi + ";\"";    //Parameter für das Programm.
                System.Diagnostics.Process.Start(prg, parameter);   //und go
            }
        }
    }
}

Zum Test aufrufen kann man das Programm mit folgender Anweisung:

callsap.exe callsap:1001601

Aber auch dieses Programm muss jetzt irgendwie über einen Hyperlink aufgerufen werden. Dazu ist ein weiterer Schritt nötig.

CALLSAP als Protokoll in Registry registrieren

Diese Funktion hat wohl jeder schon einmal im Internet gesehen. Man klickt auf einen Link und es öffnet sich eine lokal installierte Software um darin etwas zu tun, z.B. das Mailprogramm beim Aufruf eines Links der mit “mailto:” beginnt. Das gleiche machen wir jetzt mit der CALLSAP Software. Der Eintrag kann entweder manuell in der Registry hinzugefügt werden oder man nutzt eine Textdatei mit der Endung “.reg” und den folgenden Inhalt:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\somsap]
@="URL:callsap Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\callsap\shell\open\command]
@="\"D:\\CALLSAP.exe\" \"%1\""

Hier ist der Pfad zur Callsap.exe wichtig. Nachdem man diese Datei einmal ausgeführt und den Eintrag in der Registry somit hinzugefügt hat, kann man nun mit “callsap:4711” das Programm aufrufen.

Als Link würde das dann wie folgt aussehen:

Link

Je nach Browser muss man noch bestätigen, dass man das Programm wirklich ausführen möchte, da dies ein Sicherheitsrisiko sein kann.

Hier noch einmal ein grober Ablaufplan wie das ganze funktioniert:

Ablaufdiagramm
Grober Ablaufplan für den Aufruf der SAP Gui

Das ist die gesamte Lösung im ersten Entwurf. Hier gibt es sicherlich noch viele Möglichkeiten zum Ausbau und sie ist auch nur intern im Unternehmen verfügbar, aber immerhin ein Weg.

Ich freue mich allerdings über jeden neuen noch einfacheren Weg um die SAP-Gui aus einer anderen Anwendung oder per Hyperlink aufzurufen. Wenn ihr also etwas habt, ab in die Kommentare damit 😉