SXPG_COMMAND_EXECUTE: Berechtigung zum Ausführen eines externen Kommandos prüfen und Kommando ausführen 

Mit diesem Funktionsbaustein können Sie die Berechtigung eines Benutzers für ein bestimmtes externes Kommando prüfen und das Kommando ausführen:

Wenn in dem Teil des Kommandos, der in der Datenbank gespeichert ist, ein SAP-Profilparameter eingefügt worden ist, dann wird der Wert dieses Parameters im Kommando substituiert. Wenn ein SAP-Anwendungsserver im Zielsystem (TARGETSYSTEM) aktiv ist, dann werden die Profilparameterwerte aus dem Profil gelesen, das in diesem System aktiv ist. In ADDITIONAL_PARAMETERS findet keine Parametersubstitution statt.

Nach der Substitution wird das Kommando auf "gefährliche" Zeichen wie z.B. das Semikolon ( ; ) in UNIX-Systemen überprüft.

Wenn ein zusätzlicher "Sicherheitsfunktionsbaustein" in der Kommandodefinition angegeben ist, dann wird dieser Funktionsbaustein während der Verarbeitung ebenfalls aufgerufen. Dieser Funktionsbaustein kann die Ausführung des Kommandos verhindern.

Wenn die Berechtigungsprüfungen erfolgreich sind, wird das Kommando im Ziel-Hostsystem ausgeführt:

Syntax:

CALL FUNCTION ‘SXPG_COMMAND_EXECUTE’
IMPORTING
COMMANDNAME = <command name in SAP System>
OPERATINGSYSTEM = <OS name> " Default SY-OPSYS
TARGETSYSTEM = <Target host name> " Default SY-HOST
STDOUT = 'X' " Log STDOUT if marked. Default
" ‘X’
STDERR = 'X' " Log STDERR if marked. Default
" ‘X’
TERMINATIONWAIT = ‘X’ " Synchronous program start,
" Wait for termination and
" event log, if returned.
" DEFAULT 'X'
TRACE = ‘ ‘ " Trace execution. Unmarked, no
" trace. If value TRACE_LEVEL3,
" trace active
ADDITIONAL_PARAMETERS = <User-specified argument string>
" DEFAULT SPACE
ABAPPROG = <ABAP program> " Default space
ABAPFORM = <ABAP form in program> " Default space
JOBCOUNT = <Job count> " Reserviert.
" 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
WRONG_ASYNCHRONOUS_PARAMETERS " Reserviert.
CAT_ENQ_TBTCO_ENTRY " Reserviert.
JOBCOUNT_GENERATION_ERROR " Reserviert.
OTHERS.

Parameter

IMPORTING-Parameter

Parametername

Verwendung

COMMANDNAME

Name der Definition des externen Kommandos wie in der Pflegefunktion (Transaktion SM69) angegeben.

OPERATING SYSTEM und TARGETSYSTEM

Hostsystem, in dem das Kommando ausgeführt werden soll. OPERATINGSYSTEM wird in der Kommandodefinition angegeben (Transaktion SM69).

TARGETSYSTEM ist der Name des Systems, in dem das Kommando ausgeführt werden soll.

ADDITIONAL_PARAMETERS

Argumente für das externe Kommando wie durch das aufrufende Programm oder den Benutzer angegeben. Diese Argumente werden an die in der Definition des Kommandos angegebenen Argumente (DEFINED_PARAMETERS) angehängt.

Diese Argumente werden auf unzulässige Zeichen wie z.B. ; unter UNIX geprüft. Probleme werden über die Ausnahme SECURITY_RISK aufgezeichnet.

STDOUT

Protokollierung von STDOUT-Ausgabedaten des externen Kommandos in EXEC_PROTOCOL, falls der Wert kein Leerzeichen ist. Bei Leerzeichen wird STDOUT ignoriert.

Die Protokollierung ist nur dann möglich, wenn der Wert für TERMINATIONWAIT kein Leerzeichen enthält (Warten auf Beendigung).

STDERR

Protokollierung von STDERR-Ausgabedaten des externen Kommandos in EXEC_PROTOCOL, falls der Wert kein Leerzeichen ist. Bei Leerzeichen wird STDERR ignoriert.

Die Protokollierung ist nur dann möglich, wenn der Wert für TERMINATIONWAIT kein Leerzeichen enthält (Warten auf Beendigung).

TERMINATIONWAIT

Warten auf Beendigung des externen Kommandos.

Ist der Wert ein Leerzeichen, wird der Befehl asynchron gestartet. Ausgabedaten des Kommandos oder des Ziel-Hostsystems werden nicht gesammelt.

Ist der Wert kein Leerzeichen, wartet der Funktionsbaustein auf die Beendigung des externen Kommandos. Darüber hinaus protokolliert er STDOUT und STDERR (falls gewünscht) in EXEC_PROTOCOL, wenn TARGETSYSTEM diese Ausgabe zurückliefert.

TRACE

Trace-Ausführung durch CALL ‘writetrace’ und die lokale Trace-Funktion der Schnittstelle des externen Kommandos.

Bei Leerzeichen ‘ ‘ wird kein Trace ausgeführt. Andernfalls ist die Trace-Funktion aktiv.

Sollte NUR zum Testen verwendet werden. Das Setzen dieses Arguments hat keine Auswirkung auf die Trace-Angabe in der Definition des externen Kommandos (Transaktion SM69).

 

EXPORTING-Parameter

Parametername

Verwendung

STATUS

Liefert den Status der Ausführung des externen Kommandos zurück:

  • Wert ‘O’: Das externe Kommando wurde gestartet und erfolgreich ausgeführt.
  • Wert ‘E’: Fehler; das externe Kommando wurde nicht ausgeführt.

 

Tabellenparameter

Parametername

Verwendung

EXEC_PROTOCOL

Enthält die STDOUT- und STDERR-Ausgabe des externen Kommandos und Ausgabedaten des Ziel-Hostsystems, wenn TERMINATIONWAIT aktiv ist.

 

Ausnahmen

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 ist nicht berechtigt, dieses Kommando mit den angegebenen Argumenten im Zielsystem auszuführen.

COMMAND_NOT_FOUND

Der durch COMMANDNAME und OPERATINGSYSTEM bezeichnete Kommandoname wurde in der Pflegefunktion (Transaktion SM69) nicht definiert.

PARAMETERS_TOO_LONG

Die Kombination der ADDITIONAL_PARAMETERS und DEFINED_PARAMETERS wie in ALL_PARAMETERS zurückgeliefert überschreitet die Höchstlänge von 128 Zeichen.

SECURITY_RISK

Entweder:

  • Der Befehl enthält unzulässige Zeichen. Dabei handelt es sich um Zeichen mit möglicherweise "gefährlichen" Eigenschaften wie z.B. ; unter UNIX.

Oder:

  • Die Kommandodefinition gibt an, daß ein gesonderter Prüfbaustein ausgeführt werden soll. Dieser Funktionsbaustein hat die Ausführung des Kommandos zurückgewiesen.

WRONG_CHECK_CALL
_INTERFACE

Die Kommandodefinition gibt an, daß ein gesonderter Funktionsbaustein ausgeführt werden soll. Entweder fehlt dieser Funktionsbaustein, oder seine Schnittstelle entspricht nicht der des SAP-Standardfunktionsbausteins SXPG_DUMMY_COMMAND_CHECK. Weitere Informationen dazu finden Sie SXPG_DUMMY_COMMAND_CHECK: Schnittstelle für gesonderte Prüfmodule.

TOO_MANY_PARAMETERS

Die Kommandodefinition gibt an, daß zusätzliche Parameter (ADDITIONAL_PARAMETERS) nicht erlaubt sind. Es wurden jedoch zusätzliche Kommandoargumente angegeben.

PARAMETER_EXPECTED

Die Kommandodefinition enthält den Platzhalter ?. Das bedeutet, daß zusätzliche Parameter (ADDITIONAL_PARAMETERS) erforderlich sind. 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 Return-Code des externen Programms zu erhalten. Das SAP-Systemfeld SY-MSGV1 enthält zusätzliche Informationen zu diesem Problem.

ILLEGAL_COMMAND

Die externe Kommandodefinition wurde "illegal" modifiziert, d.h. nicht mit der Pflegefunktion (Transaktion SM69).

Das modifizierte Kommando wird im Systemprotokoll in seiner substituierten Form verzeichnet. Sie finden die Meldung unter der Systemprotokoll-ID "LC".

WRONG_ASYNCHRONOUS_
PARAMETERS

Reserviert.

CAT_ENQ_TBTCO_ENTRY
und
JOBCOUNT_GENERATION
_ERROR

Reserviert.

OTHERS

Bei Erweiterung der Schnittstelle neue Ausnahmen auffangen.