SXPG_CALL_SYSTEM: Externes Kommando ausführen (Schnellverfahren)
Mit diesem Funktionsbaustein können Sie:
die Berechtigung eines Benutzers zur Ausführung eines Befehls überprüfen
den Befehl ausführen
Um das System zu bestimmen, in dem das Kommando ausgeführt werden soll, verwendet der Funktionsbaustein standardmäßig das aktuelle Host-System und den aktuellen Betriebssystemtyp des Benutzers.
Da der Funktionsbaustein RFC-fähig ist, können Sie die RFC-Schnittstelle (Remote Function Call-Schnittstelle) verwenden, um den Funktionsbaustein in einem anderen SAP-Anwendungs-Server auszuführen. Das externe Kommando wird dann dementsprechend im Host-System des anderen SAP-Servers ausgeführt.
SXPG_CALL_SYSTEM wendet die nachfolgenden Regeln an, um festzustellen, welche Variante eines Kommandos für die Ausführung herangezogen wird:
Existiert ein Kommando mit dem gleichen Betriebssystemtyp wie im Systemfeld SY-OPSYS, so wird diese Definition für die Ausführung des Kommandos verwendet.
Andernfalls wird die Syntaxgruppe für SY-OPSYS ermittelt. Eine Syntaxgruppe ist ein SAP-Konstrukt, das Betriebssysteme gruppiert, die die gleiche Syntax für Befehle und Dateinamen verwenden. Existiert ein Kommando, dessen Betriebsystemtyp zur ermittelten Syntaxgruppe passt, so wird diese Definition des Kommandos verwendet.
Wenn für die Syntaxgruppe keine passende Definition gefunden wird, sucht der Funktionsbaustein nach einer Definition mit dem Betriebssystemtyp "ANYOS" (in allen unterstützten Betriebssystemen ausführbar). Diese Definition wird dann verwendet.
Andernfalls wird die Ausnahme COMMAND_NOT_FOUND ausgelöst.
Syntax
CALL FUNCTION ‘SXPG_CALL_SYSTEM’
IMPORTING
COMMANDNAME = <SAP command name> " DEFAULT '*'
ADDITIONAL_PARAMETERS = <Argument string> default <space>
EXPORTING
STATUS = <Exit status of command>
TABLES
EXEC_PROTOCOL = <Log> " In structure BTCXPM. Can
" contain STDOUT, STDERR
EXCEPTIONS
NO_PERMISSION " Command rejected by User exit auth.
" check
COMMAND_NOT_FOUND " Command not defined in SAP database
PARAMETERS_TOO_LONG " Complete parameter string exceeds
" 128 characters
SECURITY_RISK " Security check failed
WRONG_CHECK_CALL_INTERFACE " Problem with function
" module for additional
" security check
PROGRAM_START_ERROR " Error while starting program
PROGRAM_TERMINATION_ERROR " Error while requesting final
" status of program
X_ERROR " Reserved
PARAMETER_EXPECTED " Required parameter not specified
TOO_MANY_PARAMETERS " User arguments not allowed by
" supplied in call
ILLEGAL_COMMAND " Command not legitimately defined
OTHERS
Parametername |
Verwendung |
COMMANDNAME |
Name der Definition des externen Kommandos wie in der Pflegefunktion angegeben (Transaktion SM69). |
PARAMETERS |
Argumente für das externe Betriebsystemkommando wie in der Definition im SAP-System und vom aufrufenden Programm oder Benutzer angegeben. Diese Argumente werden auf unzulässige Zeichen geprüft, z.B. das Zeichen ; unter UNIX. Probleme werden über die Ausnahme SECURITY_RISK verzeichnet. |
Parametername |
Verwendung |
STATUS |
Liefert den Status nach Ausführung des externen Kommandos zurück:
|
Parametername |
Verwendung |
EXEC_PROTOCOL |
Enthält die STDOUT- und STDERR-Ausgabe des externen Kommandos sowie Ausgabedaten vom Ziel-Host-System. |
Name |
Bedeutung |
X_ERROR |
Reserviert. |
NO_PERMISSION |
Die Prüfung (AUTHORITY-CHECK) der Berechtigung des Benutzers für das Berechtigungsobjekt S_LOG_COM ist gescheitert. Der Benutzer darf dieses Kommando mit diesen Argumenten im Zielsystem nicht ausführen. |
COMMAND_NOT_FOUND |
Kommandoname (identifiziert durch COMMANDNAME und OPERATINGSYSTEM) wurde in der Pflegefunktion (Transaktion SM69) nicht definiert. |
PARAMETERS_TOO_LONG |
Die Länge der kombinierten Argumente (ADDITIONAL_PARAMETERS und DEFINED_PARAMETERS wie in ALL_PARAMETERS zurückgeliefert) überschreitet das Maximum von 128 Zeichen. |
SECURITY_RISK |
Entweder:
|
WRONG_CHECK_CALL_ INTERFACE |
Die Kommandodefinition gibt an, dass ein gesonderter Prüfbaustein ausgeführt werden soll. Entweder ist dieser Funktionsbaustein nicht vorhanden, oder die für diesen Funktionsbaustein definierte Schnittstelle entspricht nicht der des SAP-Standardfunktionsbausteins SXPG_DUMMY_COMMAND_CHECK. Weitere Informationen finden Sie in SXPG_DUMMY_COMMAND_CHECK: Schnittstelle für gesonderte Prüfmodule. |
TOO_MANY_PARAMETERS |
Die Kommandodefinition gibt an, dass benutzerdefinierte Argumente für das externe Kommando nicht zulässig sind. Es wurden jedoch zusätzliche Argumente angegeben. |
PARAMETER_EXPECTED |
Die Kommandodefinition enthält den Platzhalter ?. Das bedeutet, dass benutzerdefinierte Argumente erwartet werden. Es wurden jedoch keine zusätzlichen Argumente angegeben. |
PROGRAM_START_ERROR |
Fehler beim Starten des externen Kommandos. Das SAP-Systemfeld SY-MSGV1 enthält zusätzliche Informationen zu diesem Problem. |
PROGRAM_TERMINATION_ ERROR |
Fehler beim Versuch, den Returncode des externen Programms zu erhalten. Das SAP-Systemfeld SY-MSGV1 enthält zusätzliche Informationen zu diesem Problem. |
ILLEGAL_COMMAND |
Die externe Kommandodefinition wurde auf nicht zulässige Weise modifiziert, also nicht mit der Pflegefunktion (Transaktion SM69). Das modifizierte Kommando ist im Systemprotokoll in seiner substituierten Form enthalten. Die Meldung ist unter der Systemprotokoll-ID LC zu finden. |
OTHERS |
Bei Erweiterung der Schnittstelle neue Ausnahmen auffangen. |