入参 | ||
IS_DATA | ||
OBJ_ID | CHAR | SAP WWW 网关对象名 |
DEFAULT_FILE_NAME | STRING | Default Extension |
DEFAULT_EXTENSION | STRING | Default File Name |
FILE_FILTER | STRING | |
FILENAME | STRING | 下载文件地址 |
IT_CELL | ||
ROW | INT4 | 行号 |
COLUMN | INT4 | 列号 |
VALUE | STRING | 单元格填充值 |
ABAP_TYPE | CHAR | 数据类型 |
出参ES_RETURN | ||
MSGTS | CHAR | 消息类型 |
MSG | CHAR | 消息文本 |
METHOD edit_excel.DATA ls_key TYPE wwwdatatab.DATA lt_mime TYPE TABLE OF w3mime.DATA lv_xstring TYPE xstring.DATA lo_reader TYPE REF TO zif_excel_reader.DATA lo_excel_writer TYPE REF TO zif_excel_writer.DATA lo_worksheet TYPE REF TO zcl_excel_worksheet.DATA lv_file TYPE xstring.DATA lv_bytecount TYPE i.DATA lt_file_tab TYPE solix_tab.SELECT SINGLE a~relid,a~objid,b~valueFROM wwwdata AS aLEFT JOIN wwwparams AS b ON a~relid = b~relidAND a~objid = b~objidAND b~name EQ 'filesize'WHERE a~srtf2 = 0AND a~relid = 'MI'AND a~objid = @is_data-obj_idINTO @DATA(ls_tempt).IF sy-subrc <> 0 .es_return = VALUE #( msg = '模板不存在,请使用SMW0上传'(001) msgts = 'E' ).EXIT.ENDIF.ls_key = VALUE #( relid = ls_tempt-relid objid = ls_tempt-objid ).CALL FUNCTION 'WWWDATA_IMPORT'EXPORTINGkey = ls_keyTABLESmime = lt_mimeEXCEPTIONSwrong_object_type = 1import_error = 2OTHERS = 3.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'EXPORTINGinput_length = CONV i( ls_tempt-value )IMPORTINGbuffer = lv_xstringTABLESbinary_tab = lt_mimeEXCEPTIONSfailed = 1OTHERS = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.CHECK lv_xstring IS NOT INITIAL.CREATE OBJECT lo_reader TYPE zcl_excel_reader_2007.DATA(lo_excel) = lo_reader->load( i_excel2007 = lv_xstring ).lo_worksheet = lo_excel->get_active_worksheet( ).DATA(lt_cell) = it_cell.SORT lt_cell BY row column.DELETE ADJACENT DUPLICATES FROM lt_cell COMPARING row column.LOOP AT lt_cell INTO DATA(ls_cell).lo_worksheet->set_cell( ip_column = ls_cell-column ip_row = ls_cell-row ip_value = ls_cell-valueip_abap_type = COND #( WHEN ls_cell-abap_type IS NOT INITIAL THEN ls_cell-abap_type ELSE cl_abap_typedescr=>typekind_string ) ).ENDLOOP.CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.lv_file = lo_excel_writer->write_file( lo_excel ).CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'EXPORTINGbuffer = lv_fileIMPORTINGoutput_length = lv_bytecountTABLESbinary_tab = lt_file_tab.cl_gui_frontend_services=>gui_download(EXPORTINGbin_filesize = lv_bytecountfilename = is_data-filenamefiletype = 'BIN'CHANGINGdata_tab = lt_file_tabEXCEPTIONSfile_write_error = 1no_batch = 2gui_refuse_filetransfer = 3invalid_type = 4no_authority = 5unknown_error = 6header_not_allowed = 7separator_not_allowed = 8filesize_not_allowed = 9header_too_long = 10dp_error_create = 11dp_error_send = 12dp_error_write = 13unknown_dp_error = 14access_denied = 15dp_out_of_memory = 16disk_full = 17dp_timeout = 18file_not_found = 19dataprovider_exception = 20control_flush_error = 21not_supported_by_gui = 22error_no_gui = 23OTHERS = 24 ).IF sy-subrc <> 0.es_return-msgts = 'E'.ENDIF.ENDMETHOD.