Ausführen einer batch-Datei auf einem NON-SAP System

Alle Fragen rund um Basisthemen
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Ausführen einer batch-Datei auf einem NON-SAP System

Beitrag von mettes (ForumUser / 8 / 6 / 0 ) »
Hallo liebe Community,

da ich nach langem Googlen zwar eine Lösung für mein Problem gefunden habe, diese allerdings nicht sehr elegant ist, wende ich mich an euch.

Mein Anliegen:
Ich möchte aus meinem ABAP Quellcode eine Batch-Datei ausführen, die auf einem externen Server (NON-SAP SYSTEM) liegt. Dieser Server hängt im gleichen Netzwerk wie der SAP Server und ist entsprechend über eine IP-Adresse ansprechbar. Über die Transaktion SM69 kann ich ja externe Kommandos pflegen, wenn ich allerdings die Adresse mit IP-Adresse (IP-Adresse/ordner/test.bat) ausführen möchte, wird die Datei nicht ausgeführt (Die Pfadangabe mit der IP-Adresse ist richtig, habe ich von meinem Client aus probiert).

Meine bisherige Lösung:
Ich lege auf den SAP Server (auf den ich ja zugreifen kann) eine weitere Batch-Datei, die mit Hilfe von PSEXEC (Remote-Programm), die Batch-Datei auf dem Server aufruft.

Allerdings muss es doch irgendwie möglich sein die Batch-Datei auf dem externen Server direkt aufrufen zu können?

Ich hoffe ihr könnt mir helfen. Danke vorab.

mfg

mettes

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Ausführen einer batch-Datei auf einem NON-SAP System

Beitrag von a-dead-trousers (Top Expert / 4445 / 226 / 1196 ) »
hi!

Ich nehme mal an euer SAP läuft auf Windows(?)

PSEXEC ist meines Erachtens das Programm der Wahl!
1. Wird dadurch das SAP System nicht mit der Abarbeitung des Befehls belastet
2. Man muss dem "Benutzer" des SAP Systems nicht die erforderlichen Berechtigungen auf dem NON-SAP-SYSTEM erteilen
(PSEXEC erlaubt die Ausführung unter einem anderen Benutzerkonto)

Zweite Möglichkeit wäre die Ausführung mittels CL_GUI_FRONTEND_SERVICES=>EXECUTE. Das funktioniert aber NICHT bei Hintergrundausführung

Dritte Möglichkeit wäre das Eintrichten eines (Web-)Services auf dem NON-SAP-SYSTEM, der die gewünschte Verarbeitung durchführt. Der kann dann vom SAP System aus mittels eines normalen HTTP-Request gestartet werden.
(Vor allem bei einem SAP interessant, dass auf Basis UNIX läuft, oder wenn auch andere Systeme dieselbe Verarbeitung brauchen)

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
mettes

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Ausführen einer batch-Datei auf einem NON-SAP System

Beitrag von mettes (ForumUser / 8 / 6 / 0 ) »
Vielen Dank erstmal für die ausführliche und kompetente Antwort :-). Dann war ich ja schon mal mit PSEXEC auf dem richtigen Weg (ja Windows).

Das Problem ist nun das PSEXEC auf dem Server nicht wie gewünscht ausgeführt wird (PSEXEC muss zur Installation in den Ordner "C:\Windows\system32\" kopiert werden). Ruft man nun über cmd psexec auf passiert allerdings nichts, normalerweise müssten die Befehle angezeigt werden. Auch ein Aufruf über die cmd mit den entsprechenden Remote-Parametern funktioniert nicht (auf meinem Client funktionert es mit den gleichen Parametern einwandfrei). Dort bin ich Moment noch am recherchieren....

Die letzte Möglichkeit (WEB-Service) ist sicherlich auch elegant, aber ich denke erstmal mit etwas höherem Aufwand verbunden. Da ich noch relativ neu in der Thematik bin behalte ich mir dies erstmal im Hinterkopf.

Ich habe heute die Variante mit der Methode Execute versucht. Nach Aufruf dieser Methode öffnet sich das Authifizierungsfenster (Benutzername und Passwort). Ich vermute, dass liegt an den Berechtigungen? Allerdings konnte ich mich mit meinen Benutzerdaten, die ich eingebe, wenn ich mich über remote-desktop-verbindung auf das system zugreiffe, nicht einloggen.

Ist meine Vermutung richtig?

LG
mettes

Re: Ausführen einer batch-Datei auf einem NON-SAP System

Beitrag von a-dead-trousers (Top Expert / 4445 / 226 / 1196 ) »
mettes hat geschrieben:Das Problem ist nun das PSEXEC auf dem Server nicht wie gewünscht ausgeführt wird (PSEXEC muss zur Installation in den Ordner "C:\Windows\system32\" kopiert werden). Ruft man nun über cmd psexec auf passiert allerdings nichts, normalerweise müssten die Befehle angezeigt werden. Auch ein Aufruf über die cmd mit den entsprechenden Remote-Parametern funktioniert nicht (auf meinem Client funktionert es mit den gleichen Parametern einwandfrei). Dort bin ich Moment noch am recherchieren....
Hast du PSEXEC auf dem Quellsystem (von wo aus die batch-Datei gestartet werden soll) oder auf dem Zielsystem (wo die batch-Dtei ausgeführt werden soll) installiert? Normalerweise reicht die Installation auf dem Quellsystem. Damit übrigens die Kurzform "psexec" funktioniert, muss der Pfad wo die Datei liegt, in der PATH-Umgebungsvariable eingetragen sein. Ansonsten musst du den kompletten Namen des Programms angeben, also mit Pfad. Es kann auch sein, dass du die Datei unter dem Benutzer A angelegt hast, aber Benutzer B (SAP?) darf aufgrund der Berechtigungen nicht darauf zugreifen. Am Besten du schaust dir auch die Dateiberechtigungen durch und prüfst ob der Benutzer unter dem das SAP-System läuft auch berechtigt ist die Datei auszuführen.
mettes hat geschrieben:Ich habe heute die Variante mit der Methode Execute versucht. Nach Aufruf dieser Methode öffnet sich das Authifizierungsfenster (Benutzername und Passwort). Ich vermute, dass liegt an den Berechtigungen? Allerdings konnte ich mich mit meinen Benutzerdaten, die ich eingebe, wenn ich mich über remote-desktop-verbindung auf das system zugreiffe, nicht einloggen.
Welches Authentifizierungsfenster? Windows oder SAP?

Es wäre möglich, dass PSEXEC auf dem Zielsystem nicht ausgeführt werden kann, weil die dafür nötigen Windows Funktionen (aus Sicherheitsgründen) deaktiviert wurden. Vielleicht fragst du mal bei eurer Netzwerk/Server-Truppe nach.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
mettes

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Ausführen einer batch-Datei auf einem NON-SAP System

Beitrag von mettes (ForumUser / 8 / 6 / 0 ) »
a-dead-trousers hat geschrieben:Hast du PSEXEC auf dem Quellsystem (von wo aus die batch-Datei gestartet werden soll) oder auf dem Zielsystem (wo die batch-Dtei ausgeführt werden soll) installiert?
PSEXEC habe ich auf dem Quellsystem installiert. Ich habe jetzt die Ursache gefunden. Und zwar wurde PSEXEC nicht richtig ausgeführt, da es ein Problem mit dem Programm gab, dass auf dem NON-SAP System liegt und per Batch-Datei aufgerufen wird. Leider kam keine Fehlermeldung in PSEXEC....
a-dead-trousers hat geschrieben:Welches Authentifizierungsfenster? Windows oder SAP?
Windows. Das Authentifizierungsfenster kann umgangen werden, indem man in dem PSEXEC Aufruf einen Benutzernamen und Kennwort einfügt (-u User -p Passwort).

Jetzt nochmal zurück zur Ausgangsproblematik -> Aufruf einer Batch-Datei auf einem NON-SAP System. Momentan habe ich es mit der Methode cl_gui_frontend_services=>execute realisisert. Es wird also eine Batch-Datei (start-batch) aufgerufen, die auf dem Client liegt und per PSEXEC die Batch-Datei auf dem NON-SAP System per Remote aufruft. Alternativ könnte ich noch die start-batch vom Applikationsserver ausführen. Das ginge mit der Methode 'SXPG_COMMAND_EXECUTE'.

Jetz habe ich gesehen, dass diese Methode 'SXPG_COMMAND_EXECUTE' noch den Paramter "Targetsystem" hat. Wäre es nicht möglich, mit dieser Methode die Batch-Datei auf dem NON-SAP System direkt aufzurufen?

Mein aktuelles Problem ist nämlich noch, dass die Methode cl_gui_frontend_services=>execute keinen exitcode von der Batchdatei liefert. Diesen benötige ich allerdings zur weiterverarbeitung.
a-dead-trousers hat geschrieben:PSEXEC ist meines Erachtens das Programm der Wahl!
1. Wird dadurch das SAP System nicht mit der Abarbeitung des Befehls belastet
2. Man muss dem "Benutzer" des SAP Systems nicht die erforderlichen Berechtigungen auf dem NON-SAP-SYSTEM erteilen
(PSEXEC erlaubt die Ausführung unter einem anderen Benutzerkonto)
Kannst du mir hier noch mal erläutern, welche Berechtigungen du genau meinst bzw. welches Konzept mit Berechtigungen dahinter stecken würde. Würde das auch über einen Funktionsaufruf gehen?

Re: Ausführen einer batch-Datei auf einem NON-SAP System

Beitrag von a-dead-trousers (Top Expert / 4445 / 226 / 1196 ) »
mettes hat geschrieben:Kannst du mir hier noch mal erläutern, welche Berechtigungen du genau meinst bzw. welches Konzept mit Berechtigungen dahinter stecken würde. Würde das auch über einen Funktionsaufruf gehen?
-u User -p Passwort
mettes hat geschrieben:Jetz habe ich gesehen, dass diese Methode 'SXPG_COMMAND_EXECUTE' noch den Paramter "Targetsystem" hat. Wäre es nicht möglich, mit dieser Methode die Batch-Datei auf dem NON-SAP System direkt aufzurufen?
Nö, soweit ich weiß handelt es sich hierbei um den RFC Aufruf des Betriebssystem-Komandos, sprich einen Befehl auf einem anderen SAP-System ausführen.
mettes hat geschrieben:Es wird also eine Batch-Datei (start-batch) aufgerufen, die auf dem Client liegt und per PSEXEC die Batch-Datei auf dem NON-SAP System per Remote aufruft.
Kannst du die start-batch nicht einfach weglassen? PSEXEC sollte sich auch direkt aufrufen lassen.
Generell würde ich in deinem Fall zu SXPG_COMMAND_EXECUTE raten, weil man dann die Verarbeitung im Hintergrund auch durchführen lassen kann.
mettes hat geschrieben:Mein aktuelles Problem ist nämlich noch, dass die Methode cl_gui_frontend_services=>execute keinen exitcode von der Batchdatei liefert. Diesen benötige ich allerdings zur weiterverarbeitung.
Wie schon zuvor erwähnt: SXPG_COMMAND_EXECUTE und lass die start-batch weg, dann solltest du den Exit-Code der PSEXEC-Ausführung erhalten. Wie man aber den Exit-Code des Remote-Systems erhält bzw. ob das überhaupt geht musst du bei Sysinternals (Microsoft) nachfragen.

lg ADT

EDIT: Theoretisch solltest du bei SXPG_COMMAND_EXECUTE das komplette Protokoll der Programmausführung zurückgelierfert bekommen. Das könntest du ja in deinem batch soweit verringern (@echo off), dass nur noch die Fehler angezeigt werden. Und die könntest du ja dann alternativ zum Returncode auswerten.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
mettes

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Ausführen einer batch-Datei auf einem NON-SAP System

Beitrag von mettes (ForumUser / 8 / 6 / 0 ) »
Ok vielen Dank für deine Hilfe. Die startBatch habe ich weiterhin verwendet, da ich nicht die Zugangsdaten des NON-SAP Systems für PSEXEC im Quelltext preisgeben möchte.

mfg

mettes

Seite 1 von 1

Vergleichbare Themen

5
Antw.
3619
Views
Batch Datei ausführen im Backend
von Adrian » 28.10.2013 16:24 • Verfasst in ABAP® für Anfänger
24
Antw.
7584
Views
Batch Input mehrmals ausführen
von errorist » 26.06.2008 11:48 • Verfasst in ABAP® für Anfänger
7
Antw.
8205
Views
HR: Batch-Input Mappe erstellen, Maßnahme ausführen
von sgevolker » 15.05.2006 18:19 • Verfasst in ABAP® Core
1
Antw.
1290
Views
Datei auf dem Applikationsserver ausführen
von Vlad » 20.02.2006 11:39 • Verfasst in ABAP® Core
6
Antw.
5967
Views
Datei jeden Formats in ABAP-Quelltext einbetten u. ausführen
von Stefan Schnell » 10.10.2012 11:08 • Verfasst in Tips + Tricks & FAQs

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

BAPI_GOODSMVT_CREATE
vor 22 Stunden von retsch 1 / 49
SAP GUI Installation Probleme
vor 2 Tagen von Romaniac gelöst 2 / 320
Erweiterung in ME51N/ME52N:
vor 5 Tagen von ABAPlerv 1 / 522
Erweiterung in ME51N/ME52N:
vor 5 Tagen von ABAPlerv 1 / 447
DIN Norm Klassifizierung
vor 6 Tagen von Radinator 2 / 3456

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

BAPI_GOODSMVT_CREATE
vor 22 Stunden von retsch 1 / 49
SAP GUI Installation Probleme
vor 2 Tagen von Romaniac gelöst 2 / 320
Erweiterung in ME51N/ME52N:
vor 5 Tagen von ABAPlerv 1 / 522
Erweiterung in ME51N/ME52N:
vor 5 Tagen von ABAPlerv 1 / 447
DIN Norm Klassifizierung
vor 6 Tagen von Radinator 2 / 3456

Unbeantwortete Forenbeiträge

BAPI_GOODSMVT_CREATE
vor 22 Stunden von retsch 1 / 49
Erweiterung in ME51N/ME52N:
vor 5 Tagen von ABAPlerv 1 / 522
Erweiterung in ME51N/ME52N:
vor 5 Tagen von ABAPlerv 1 / 447