Das klingt zwar einfach, ist es aber eigentlich nicht. Denn während man für den ALV jede Menge Excel-Funktionalitäten im Dialog hat, muss man bei Hintergrundfunktionalitäten ganz schön lange suchen. Gut, dass ich diesen Beitrag gefunden habe, der gehört auf alle Fälle auf den Notizzettel. Mit der Klasse edx_util ist das alles kein Problem.
Hier ein Beispielprogramm:
DATA gt_vbak TYPE TABLE OF vbak.
PARAMETERS: p_file TYPE path-pathextern OBLIGATORY LOWER CASE DEFAULT '/usr/sap/trans/def.xlsx'.
TRY.
* Testdaten lesen
SELECT vbeln erdat erzet ernam FROM vbak
INTO CORRESPONDING FIELDS OF TABLE gt_vbak.
IF sy-subrc = 0.
*
DATA: lv_bin_data TYPE xstring.
* Creates XLS fom the ITAB
edx_util=>create_xls_from_itab( EXPORTING i_xlsx = abap_true
IMPORTING e_xstring = lv_bin_data
CHANGING ct_data = gt_vbak ).
IF xstrlen( lv_bin_data ) > 0.
OPEN DATASET p_file FOR OUTPUT IN BINARY MODE.
IF sy-subrc EQ 0.
TRANSFER lv_bin_data TO p_file.
CLOSE DATASET p_file.
ENDIF.
ENDIF.
ENDIF.
ENDTRY.
https://www.abapforum.com/forum/viewtopic.php?p=100428&sid=82f427f9f1e4141d21077d8bef93dca4#p100428 – Ein herzliches Danke an den Autor!