Средствами ABAP выполнить команду непосредственно в командной строке операционной системы. Оговорюсь сразу, данный подход это совсем уж крайняя мера, безопасность может быть под вопросом. Однако, порой есть определенная необходимость.
Для работы с командной строкой можно использовать программу RSBDCOS0. Это прям классическая консоль ОС. Вводим команду, нажимаем "enter", получаем результат.
Пример с получением списка файлов в каталоге:
Из программы можно перейти в транзакции SM49 или в SM69 "Внешние команды операционной системы" . Среда->Внешние команды ОС->Управление(SM69)/Выполнить(SM49)
Здесь можно создать команду и сохранить команду операционной системы. В последствии эту команду можно переиспользовать.
Для примера создадим команду для вывода содержимого каталога.
Введем команду и параметры к ней. Сохраним.
После сохранения можно выполнить команду
Результат
В коде можно выполнять данные команды используя ФМ SXPG_STEP_COMMAND_START из данной транзакции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
DATA: lt_log TYPE TABLE OF btcxpglog. CALL FUNCTION 'SXPG_STEP_COMMAND_START' EXPORTING commandname = 'Z_TEST_COMAND' additional_parameters = "Тут можно указать параметры "В нашем случае можно в команде оставить только ls, а сюда вставлять каталог operatingsystem = sy-opsys stdincntl = 'R' stdoutcntl = 'M' stderrcntl = 'M' tracecntl = '0' termcntl = 'C' * LONG_PARAMS = "Если параметры не влазят а , можно использовать это поле TABLES log = lt_log EXCEPTIONS command_not_found = 1 parameter_expected = 2 parameters_too_long = 3 security_risk = 4 wrong_check_call_interface = 5 no_permission = 6 unknown_error = 7 communication_error = 8 system_error = 9 cannot_get_rfc_dests = 10 job_update_failed = 11 job_does_not_exist = 12 program_start_error = 13 OTHERS = 14. IF sy-subrc <> 0. ENDIF. |
Есть пример совсем уж "криминального" варианта использования.