Предлагаемая ниже программа, в ТОМ ЧИСЛЕ отвечает и на поставленный вопрос,
кроме того - дополнительно к предудыщей демонстирует возможность выгрузки содержимого любой таблички
в Excel ЧЕРЕЗ БУФЕР.
Code:
REPORT ZEXCEL_BUFFER .
INCLUDE OLE2INCL.
DATA: H_EXCEL TYPE OLE2_OBJECT,
H_MAPL TYPE OLE2_OBJECT,
H_SHEET TYPE OLE2_OBJECT,
H_RANGE TYPE OLE2_OBJECT,
SELECTION TYPE OLE2_OBJECT,
VR TYPE REF TO DATA,
BEGIN OF NTAB OCCURS 0,
POSITION LIKE DD03L-POSITION,
FIELDNAME LIKE DD03L-FIELDNAME,
END OF NTAB,
LD_SEPARATOR TYPE C,
STRK TYPE STRING,
DD02 LIKE DD02L,
BEGIN OF ST OCCURS 0,
ST(1024),
END OF ST,
LD_RC TYPE I,
NI TYPE I.
PARAMETERS: TABNAM(16) OBLIGATORY, "Имя таблицы
NYA(10) DEFAULT 'A1' OBLIGATORY. "Начальная ячейка в Excel
CONSTANTS: GC_HEX_TAB TYPE X VALUE 09.
FIELD-SYMBOLS: <FIELD>,
<FS>,
<PS>,
<P> TYPE STANDARD TABLE.
ASSIGN LD_SEPARATOR TO <FIELD> TYPE 'X'.
<FIELD> = GC_HEX_TAB.
CLEAR: DD02.
SELECT SINGLE * FROM DD02L INTO DD02 WHERE TABNAME = TABNAM.
CHECK NOT DD02-TABNAME IS INITIAL.
CREATE DATA VR TYPE STANDARD TABLE OF (TABNAM).
ASSIGN VR->* TO <P>.
CHECK SY-SUBRC = 0.
SELECT * FROM (TABNAM) APPENDING TABLE <P>.
CHECK SY-SUBRC = 0.
CLEAR: ST, NTAB. REFRESH: ST, NTAB.
SELECT FIELDNAME POSITION INTO CORRESPONDING FIELDS OF TABLE NTAB
FROM DD03L WHERE TABNAME = TABNAM
AND AS4LOCAL = 'A' .
SORT NTAB BY POSITION.
LOOP AT NTAB.
IF SY-TABIX NE 1.
CONCATENATE ST-ST NTAB-FIELDNAME INTO ST-ST
SEPARATED BY LD_SEPARATOR.
ELSE.
ST-ST = NTAB-FIELDNAME.
ENDIF.
ENDLOOP.
APPEND ST.
CLEAR ST.
LOOP AT <P> ASSIGNING <PS>.
CLEAR: ST-ST.
NI = 1.
DO.
ASSIGN COMPONENT NI OF
STRUCTURE <PS> TO <FS>.
IF SY-SUBRC <> 0. EXIT. ENDIF.
STRK = <FS>.
CONDENSE: STRK.
IF NI <> 1.
CONCATENATE ST-ST STRK INTO ST-ST
SEPARATED BY LD_SEPARATOR.
ELSE.
ST-ST = STRK.
ENDIF.
ADD 1 TO NI.
ENDDO.
APPEND ST.
ENDLOOP.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
IMPORTING
DATA = ST[]
CHANGING
RC = LD_RC
EXCEPTIONS
CNTL_ERROR = 1
OTHERS = 4.
CREATE OBJECT H_EXCEL 'EXCEL.APPLICATION'.
SET PROPERTY OF H_EXCEL 'Visible' = 0.
CALL METHOD OF H_EXCEL 'Workbooks' = H_MAPL.
CALL METHOD OF H_MAPL 'Add'.
CALL METHOD OF H_EXCEL 'ACTIVESHEET' = H_SHEET.
CALL METHOD OF H_SHEET 'RANGE' = H_RANGE EXPORTING #1 = 'A1'.
CALL METHOD OF H_RANGE 'SELECT' = SELECTION.
CALL METHOD OF H_SHEET 'PASTE'.
CALL METHOD OF H_SHEET 'RANGE' = H_RANGE EXPORTING #1 = 'A1'.
CALL METHOD OF H_RANGE 'SELECT' = SELECTION.
SET PROPERTY OF H_EXCEL 'Visible' = 1.
FREE OBJECT H_EXCEL.
FREE OBJECT H_MAPL.