FunktionsdokumentationSXPG_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 Syntax

  1. 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
    
Ende des Codes
Parameter
IMPORTING-Parameter

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.

EXPORTING-Parameter

Parametername

Verwendung

STATUS

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

  • Wert O

    Das externe Kommando wurde gestartet und erfolgreich ausgeführt.

  • Wert E

    Fehler; externes Kommando nicht erfolgreich ausgeführt.

Tabellenparameter

Parametername

Verwendung

EXEC_PROTOCOL

Enthält die STDOUT- und STDERR-Ausgabe des externen Kommandos sowie Ausgabedaten vom Ziel-Host-System.

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 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:

  • Das Kommando 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, dass ein gesonderter Prüfbaustein ausgeführt werden muss. Dieser Funktionsbaustein hat die Ausführung des Kommandos zurückgewiesen.

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.