| 入参 | ||
| 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.