Dateiausgabe in Zwischenablage umleiten

Im Forum kam die Frage auf, wie man am einfachsten das Ergebnis eines Betriebssystemkommandos beziehungsweise eines EXE-Programms in ABAP einlesen kann.

Stefan hat einen genialen Trick aufgezeigt (Danke dafür!!): Mit Hilfe des Systemkommandos CLIP wird die Ausgabe einfach in die Windows-Zwischenablage umgeleitet.

Das Einlesen der Zwischenablage in eine interne Tabelle ist mit Hilfe von CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT dann ebenfalls einfach möglich.

Demoprogramm

DATA clipboard   TYPE STANDARD TABLE OF char255 with EMPTY KEY.
cl_gui_frontend_services=>execute(
  EXPORTING
    application = 'cmd.exe'
    parameter   = '/C "dir c:\temp\*.* | clip"'
    minimized   = 'X' " disable cmd flash
    synchronous = 'X' " wait for cmd to finish
  EXCEPTIONS
    OTHERS      = 10 ).
cl_gui_frontend_services=>clipboard_import(
  IMPORTING
    data     = clipboard
    length   = DATA(length)
  EXCEPTIONS
    OTHERS   = 4 ).

cl_demo_output=>display_data( clipboard ).

Enno Wulff