模拟SAP ALV下载XLSX文件
在日常项目中总能遇到要下载数据生成文件的需求,今天看了一下标准程序,做了一个模拟ALV下载数据生成XSLX的功能
代码如下:
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.