How to Execute Operating System Commands from within SAP

Introduction

I recently was asked the question, “How can you execute a command at the operating system level?”. If fact, there are times when you need a way to execute operating system commands from within SAP. Fortunately, SAP has provided several ways for us to do so.

Transaction Code: SM69 – Maintain External Operating System Commands

 SM67 - Maintain External Operating System Commands

Although SAP provides a variety of predefined operating system commands in SM69, you can add your own commands along with their corresponding parameters. Of course, the execution and maintenance of operating system commands is protected by specific SAP authorizations.

Operating Systems

You will find a selection of operating system commands for a number of Operating Systems available using SM69 including: ANYOS, UNIX, OS/400, AS/400, Windows NT, SunOS. Not only does SAP supply various operating system command options, you have the ability to create new ones as needed.

Executing operating system commands

You can execute operating system commands in several ways including:

  • use transaction code (SM49 – Execute external OS commands)
  • in an ABAP program using function modules
  • as steps in a background job (SM37 – Overview of Job Selection)
  • on-line in the CCMS menu

Executing operating system commands - (Using an ABAP function module)

Create a variable that contains the operating system command line including any desired paramenters. Use the call function to execute the command at the operating system level.

Function Module: SXPG_COMMAND_EXECUTE

call function 'SXPG_CALL_SYSTEM'
  EXPORTING
    commandname            = 'ZABAPCMD'
    additional_parameters = t_date
  TABLES
    exec_protocol          = t_btcxpm
  EXCEPTIONS
    no_permission = 1
    command_not_found = 2
    parameters_too_long = 3
    security_risk = 4
    wrong_check_call_interface = 5
    program_start_error = 6
    program_termination_error = 7
    x_error = 8
    parameter_expected = 9
    too_many_parameters = 10
    illegal_command = 11
    others = 12.

Executing operating system commands – (Using an ABAP call statement)

You also can make an ABAP call to execute an operating system command. Simply create a variable that contains the operating system command line including any desired paramenters. Then use the call function to execute the command at the operating system level. This example changes the authorizations of a file at the operating system level.

v_command = 'chmod a+rwx filename'.
call 'SYSTEM' id 'COMMAND' field v_command.

Executing operating system commands – (Using the OPEN DATASET statement)

The OPEN DATASET statement provides an additional way to execute operating system commands. The following code example gives you an idea of how to execute a file copy command in the UNIX operating system.

DATA: unixcmd(80) TYPE c.
CONSTANTS: oldfile .....
CONCATENATE 'cp' oldfile newfile INTO unixcmd SEPARATED BY space.
OPEN DATASET newfile FOR INPUT IN TEXT MODE FILTER unixcmd.
CLOSE DATASET newfile.

You can also use the DELETE DATASET command to delete files at the operating system level.

DELETE DATASET filename.

Conclusion

As you can see there are several ways that you can execute operating system commands from within SAP. Depending upon what you are trying to do, you should be able to handle it with one of these methods.

1 comment

  1. I found a great Unix tips article in the IBM website. Its a little old but I’m sure your readers will find it useful. Here’s the link http://www.ibm.com/developerworks/aix/library/au-badunixhabits.html

Leave a Reply

*