天天看点

模拟SAP ALV下载XLSX文件

模拟SAP ALV下载XLSX文件

在日常项目中总能遇到要下载数据生成文件的需求,今天看了一下标准程序,做了一个模拟ALV下载数据生成XSLX的功能

模拟SAP ALV下载XLSX文件
模拟SAP ALV下载XLSX文件

代码如下:

TRY.

CL_SALV_TABLE=>FACTORY(

IMPORTING

R_SALV_TABLE = DATA(LR_TABLE)

CHANGING

T_TABLE = <FT_DATA> ).

CATCH CX_SALV_MSG. "#EC NO_HANDLER

ENDTRY.

调整字段的标题

DATA(LR_COLUMNS) = LR_TABLE->GET_COLUMNS( ).

LOOP AT GR_MAIN->GET_FIELDCAT_EXPORT_DATA( ) INTO DATA(LS_FIELDCAT).

DATA(LR_COLUMN) = LR_COLUMNS->GET_COLUMN( LS_FIELDCAT-FIELDNAME ).

IF LR_COLUMN IS NOT INITIAL.

LR_COLUMN->SET_MEDIUM_TEXT( LS_FIELDCAT-SCRTEXT_M ).

ENDIF.

ENDLOOP.

生成XML数据

DATA(LV_XML) = LR_TABLE->TO_XML( XML_TYPE = ‘10’ ).

导出XML数据并生成XLSX文件

CALL FUNCTION ‘XML_EXPORT_DIALOG’

EXPORTING

I_XML = LV_XML

I_DEFAULT_EXTENSION = GC_DEFAULT_EXTENSION

I_INITIAL_DIRECTORY = ‘’

I_DEFAULT_FILE_NAME = GC_DEFAULT_FILE_NAME

I_MASK = GC_DEFAULT_MASK

EXCEPTIONS

APPLICATION_NOT_EXECUTABLE = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.