模板见文件
*&----------------------------------------------------------------------* *& Program ID : ZFI_FIXEDASSET_CREATE_BATCH *& Program Title : 固定资产批量导入 *& Transaction : ZFI001 *& Created By : HAND.XXX *& Created At : 2016.07.29 *&----------------------------------------------------------------------* *& Description: *& *&----------------------------------------------------------------------* *& Modification History: *&----------------------------------------------------------------------* *& Date |User ID |Transport Request | Description *&----------------------------------------------------------------------* *& *&----------------------------------------------------------------------* REPORT zfi_fixedasset_create_batch. TABLES:sscrfields. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* TYPES: BEGIN OF ty_input1, assetclass TYPE bapi1022_feglg001-assetclass, "资产分类 companycode TYPE bapi1022_key-companycode, "公司代码 asset TYPE bapi1022_reference-asset, "资产编号 新增 descript TYPE bapi1022_feglg001-descript, "资产描述 descript2 TYPE bapi1022_feglg001-descript2, "描述2 * main_descript TYPE bapi1022_feglg001-main_descript, "资产主号文本 serial_no TYPE bapi1022_feglg001-serial_no, "序列号 invent_no TYPE bapi1022_feglg001-invent_no, "存货号 quantity TYPE bapi1022_feglg001-quantity, "数量 base_uom TYPE bapi1022_feglg001-base_uom, "单位 invzu LIKE anla-invzu, " 存放地点 新增 cap_date TYPE bapi1022_feglg002-cap_date, "资本化日期 costcenter TYPE bapi1022_feglg003-costcenter, "成本中心 room TYPE bapi1022_feglg003-room, "房间 kfzkz LIKE anlz-kfzkz, "执照牌号 新增 evalgroup1 TYPE bapi1022_feglg004-evalgroup1, "状态 新增 lifnr LIKE anla-lifnr, "供应商 新增 typbz LIKE anla-typbz, "类型名 新增 * evalgroup1 TYPE bapi1022_feglg004-evalgroup1, "评估组1 * evalgroup5 TYPE bapi1022_feglg004-evalgroup5, "评估组5 * dep_key TYPE bapi1022_dep_areas-dep_key, "折旧码 * ulife_yrs TYPE bapi1022_dep_areas-ulife_yrs, "使用年 * ulife_prds TYPE bapi1022_dep_areas-ulife_prds, "使用月 herst LIKE anla-herst, "U8编码 assettrtyp TYPE bapi1022_trtype-assettrtyp, "资产交易类型 acq_value TYPE bapi1022_cumval-acq_value, "累积购置价值 ord_dep TYPE bapi1022_cumval-ord_dep, "累积普通折旧 * ord_dep1 TYPE bapi1022_postval-ord_dep, "一般折旧 * scrapvalue_prctg TYPE bapi1022_dep_areas-scrapvalue_prctg, "残值率 * scrapvalue TYPE bapi1022_cumval-acq_value, "残值 * spe_dep TYPE bapi1022_cumval-spe_dep, "累计特殊折旧 nafag LIKE anlc-nafag , "2017年1月总折旧额 ulife_yrs LIKE bapi1022_dep_areas-ulife_yrs, "使用年 ulife_prds LIKE bapi1022_dep_areas-ulife_prds, ",使用月 schrw_proz LIKE anlb-schrw_proz, "残值率 END OF ty_input1. TYPES: BEGIN OF ty_output1. INCLUDE TYPE ty_input1. INCLUDE STRUCTURE bapiret2. *TYPES: asset TYPE bapi1022_reference-asset, * subnumber TYPE bapi1022_reference-subnumber, TYPES slbox. TYPES: END OF ty_output1. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* DATA: gt_input1 TYPE STANDARD TABLE OF ty_input1. DATA: gt_output1 TYPE STANDARD TABLE OF ty_output1. DATA: gs_layout TYPE lvc_s_layo, gt_fieldcat TYPE lvc_t_fcat. DATA functxt TYPE smp_dyntxt."下载模板按钮要用到的结构 *------------------------------------------------------------------------ * *------------------------------------------------------------------------ SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-t01. PARAMETERS: p_year TYPE bapi1022_cumval-fisc_year DEFAULT sy-datum+0(4), p_area TYPE bapi1022_cumval-area OBLIGATORY DEFAULT '01', p_file TYPE string, p_test TYPE bapi1022_misc-testrun AS CHECKBOX. SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN:FUNCTION KEY 1. *------------------------------------------------------------------------ * *------------------------------------------------------------------------ INITIALIZATION. functxt-icon_id = icon_export. functxt-quickinfo = '模版下载'. functxt-icon_text = '模版下载'. sscrfields-functxt_01 = functxt. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* *设置搜索帮助 AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. PERFORM f_help_for_p_file. AT SELECTION-SCREEN. IF sscrfields-ucomm = 'FC01'. PERFORM frm_get_model USING 'ZFID008.XLS'. ENDIF. START-OF-SELECTION. * 上载数据 PERFORM f_upload_data. * 转换 PERFORM f_convert_data. * 检查 PERFORM f_check_data. PERFORM f_call_bapi. END-OF-SELECTION. PERFORM f_display_data. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_help_for_p_file . DATA: lt_file_table TYPE filetable, lv_rc TYPE i. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = '' file_filter = 'Microsoft Excel 文件 (*.XLS;*.XLSX)|*.XLS;*.XLSX' CHANGING file_table = lt_file_table rc = lv_rc EXCEPTIONS file_open_dialog_failed = 1 cntl_error = 2 error_no_gui = 3 not_supported_by_gui = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. CHECK NOT lt_file_table[] IS INITIAL. DATA(ls_file_table) = lt_file_table[ 1 ]. p_file = ls_file_table-filename. ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_upload_data. DATA: lv_i_tab_raw_data TYPE truxs_t_text_data, lv_i_filename LIKE rlgrap-filename. DATA(lv_platform_code) = cl_gui_frontend_services=>get_platform( ). IF p_file IS INITIAL . MESSAGE '文件路径为空' TYPE 'E'. ENDIF. IF lv_platform_code EQ '14'." Windows lv_i_filename = p_file. CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' EXPORTING i_line_header = 'X' i_tab_raw_data = lv_i_tab_raw_data i_filename = lv_i_filename TABLES i_tab_converted_data = gt_input1 EXCEPTIONS conversion_failed = 1 OTHERS = 2. IF sy-subrc <> 0. ENDIF. ELSEIF lv_platform_code EQ '13'." Mac cl_gui_frontend_services=>gui_upload( EXPORTING filename = p_file has_field_separator = 'X' filetype = 'ASC' codepage = '8400' CHANGING data_tab = gt_input1 EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 not_supported_by_gui = 17 error_no_gui = 18 OTHERS = 19 ). IF sy-subrc <> 0. ENDIF. ELSE. MESSAGE e001(zfico001). ENDIF. IF gt_input1[] IS INITIAL. MESSAGE 'EXCEL导入有误' TYPE 'E'. ENDIF. ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_convert_data. LOOP AT gt_input1 ASSIGNING FIELD-SYMBOL(<ls_input>). * 单位 CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' EXPORTING input = <ls_input>-base_uom language = sy-langu IMPORTING output = <ls_input>-base_uom EXCEPTIONS unit_not_found = 1 OTHERS = 2. IF sy-subrc <> 0. ENDIF. ENDLOOP. ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_check_data. ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_call_bapi. DATA: ls_key TYPE bapi1022_key, ls_generaldata TYPE bapi1022_feglg001, ls_generaldatax TYPE bapi1022_feglg001x, ls_timedependentdata TYPE bapi1022_feglg003, ls_timedependentdatax TYPE bapi1022_feglg003x, ls_postinginformation TYPE bapi1022_feglg002, ls_postinginformationx TYPE bapi1022_feglg002x, ls_allocations TYPE bapi1022_feglg004, ls_allocationsx TYPE bapi1022_feglg004x, lt_depreciationareas TYPE STANDARD TABLE OF bapi1022_dep_areas, ls_depreciationareas TYPE bapi1022_dep_areas, lt_depreciationareasx TYPE STANDARD TABLE OF bapi1022_dep_areasx, ls_depreciationareasx TYPE bapi1022_dep_areasx, lt_cumulatedvalues TYPE STANDARD TABLE OF bapi1022_cumval, lt_postedvalues TYPE STANDARD TABLE OF bapi1022_postval, lt_transactions TYPE STANDARD TABLE OF bapi1022_trtype, ls_assetcreated TYPE bapi1022_reference, lt_return TYPE STANDARD TABLE OF bapiret2. DATA: ls_output1 TYPE ty_output1. DATA: ls_inventory TYPE bapi1022_feglg011, ls_inventoryx TYPE bapi1022_feglg011x. DATA: ls_origin TYPE bapi1022_feglg009, ls_originx TYPE bapi1022_feglg009x. DATA l_yrs TYPE flag. DATA l_prds TYPE flag. FREE: gt_output1. LOOP AT gt_input1 INTO DATA(ls_input1). CLEAR: ls_key, ls_generaldata, ls_generaldatax, ls_timedependentdata, ls_timedependentdatax, ls_postinginformation, ls_postinginformationx. FREE: lt_depreciationareas, lt_depreciationareasx, lt_cumulatedvalues, lt_postedvalues, lt_transactions, lt_return. CLEAR: ls_assetcreated. ls_key-companycode = ls_input1-companycode. "公司代码 ls_key-asset = ls_input1-asset. "资产代码 CONDENSE ls_input1-assetclass. ls_generaldata-assetclass = ls_input1-assetclass. "资产分类 ls_generaldata-descript = ls_input1-descript. "资产描述 ls_generaldata-descript2 = ls_input1-descript2. "描述2 * ls_generaldata-main_descript = ls_input1-main_descript. "资产主号文本 ls_generaldata-serial_no = ls_input1-serial_no. "序列号 ls_generaldata-invent_no = ls_input1-invent_no. "存货号 ls_generaldata-quantity = ls_input1-quantity. "数量 ls_generaldata-base_uom = ls_input1-base_uom. "基本单位 ls_generaldatax-assetclass = abap_true. ls_generaldatax-descript = abap_true. ls_generaldatax-descript2 = abap_true. * ls_generaldatax-main_descript = abap_true. ls_generaldatax-serial_no = abap_true. ls_generaldatax-invent_no = abap_true. ls_generaldatax-quantity = abap_true. ls_generaldatax-base_uom = abap_true. ls_postinginformation-cap_date = ls_input1-cap_date. "资本化日期 ls_postinginformationx-cap_date = abap_true. ls_timedependentdata-costcenter = ls_input1-costcenter. "成本中心 ls_timedependentdata-room = ls_input1-room. "房间 ls_timedependentdata-plate_no = ls_input1-kfzkz. "执照牌号 ls_timedependentdatax-costcenter = abap_true. ls_timedependentdatax-room = abap_true. ls_timedependentdatax-license_plate_no = abap_true. ls_allocations-evalgroup1 = ls_input1-evalgroup1. "状态 ls_allocationsx-evalgroup1 = abap_true. * ls_allocations-evalgroup1 = ls_input1-evalgroup1. "评估组1 * ls_allocations-evalgroup5 = ls_input1-evalgroup5. "评估组5 * ls_allocationsx-evalgroup1 = abap_true. * ls_allocationsx-evalgroup5 = abap_true. IF ls_input1-ulife_yrs IS INITIAL AND ls_input1-ulife_prds IS NOT INITIAL . ls_input1-ulife_yrs = '0'. l_yrs = 'X'. l_prds = 'X'. ELSEIF ls_input1-ulife_yrs IS NOT INITIAL AND ls_input1-ulife_prds IS INITIAL . ls_input1-ulife_prds = '0'. l_yrs = 'X'. l_prds = 'X'. * ELSEIF ls_input1-ulife_yrs IS NOT INITIAL AND * ls_input1-ulife_prds IS NOT INITIAL . * * l_yrs = 'X'. * l_prds = 'X'. ELSEIF ls_input1-ulife_yrs IS NOT INITIAL AND ls_input1-ulife_prds IS NOT INITIAL . l_yrs = 'X'. l_prds = 'X'. ELSE. ENDIF. IF ls_input1-schrw_proz = 0 AND ( ls_input1-assetclass BETWEEN 'Z100' AND 'Z199' ) . lt_depreciationareas = VALUE #( ( area = p_area dep_key = 'Z04' "折旧码 ulife_yrs = ls_input1-ulife_yrs "使用年 ulife_prds = ls_input1-ulife_prds "使用月 scrapvalue_prctg = ls_input1-schrw_proz "残值率 * scrapvalue = ls_input1-scrapvalue "残值 ) ). lt_depreciationareasx = VALUE #( ( area = p_area dep_key = abap_true ulife_yrs = l_yrs ulife_prds = l_prds scrapvalue_prctg = abap_true * scrapvalue = abap_true ) ). ELSE. lt_depreciationareas = VALUE #( ( area = p_area * dep_key = ls_input1-dep_key "折旧码 ulife_yrs = ls_input1-ulife_yrs "使用年 ulife_prds = ls_input1-ulife_prds "使用月 scrapvalue_prctg = ls_input1-schrw_proz "残值率 * scrapvalue = ls_input1-scrapvalue "残值 ) ). lt_depreciationareasx = VALUE #( ( area = p_area * dep_key = abap_true ulife_yrs = l_yrs ulife_prds = l_prds scrapvalue_prctg = abap_true * scrapvalue = abap_true ) ). ENDIF. CLEAR: l_yrs,l_prds . * IF ls_input1-cap_date+0(4) LT p_year. lt_cumulatedvalues = VALUE #( ( area = p_area fisc_year = p_year acq_value = ls_input1-acq_value "累积购置价值 ord_dep = ls_input1-ord_dep "累积普通折旧 * spe_dep = ls_input1-spe_dep "累计特殊折旧 ) ). * ELSE. * lt_transactions = VALUE #( ( fisc_year = p_year ** area = p_area * current_no = '00001' * assettrtyp = ls_input1-assettrtyp "资产交易类型 * valuedate = ls_input1-cap_date "资本化日期 * amount = ls_input1-acq_value "累积购置价值 * ) ). * ENDIF. lt_postedvalues = VALUE #( ( area = p_area fisc_year = p_year ord_dep = ls_input1-nafag "一般折旧 ) ). * DATA postedvalues LIKE TABLE OF bapi1022_postval WITH HEADER LINE . ls_inventory-note = ls_input1-invzu. ls_inventoryx-note = abap_true. ls_origin-vendor_no = ls_input1-lifnr. ls_origin-type_name = ls_input1-typbz. ls_origin-manufacturer = ls_input1-herst. ls_originx-vendor_no = abap_true. ls_originx-type_name = abap_true. ls_originx-manufacturer = abap_true. CALL FUNCTION 'BAPI_FIXEDASSET_OVRTAKE_CREATE' EXPORTING key = ls_key testrun = p_test generaldata = ls_generaldata generaldatax = ls_generaldatax postinginformation = ls_postinginformation postinginformationx = ls_postinginformationx timedependentdata = ls_timedependentdata timedependentdatax = ls_timedependentdatax allocations = ls_allocations allocationsx = ls_allocationsx inventory = ls_inventory inventoryx = ls_inventoryx origin = ls_origin originx = ls_originx IMPORTING assetcreated = ls_assetcreated TABLES depreciationareas = lt_depreciationareas depreciationareasx = lt_depreciationareasx cumulatedvalues = lt_cumulatedvalues postedvalues = lt_postedvalues transactions = lt_transactions return = lt_return. CLEAR: ls_output1. MOVE-CORRESPONDING ls_input1 TO ls_output1. LOOP AT lt_return INTO DATA(ls_return) WHERE type EQ 'E' OR type EQ 'A'. ENDLOOP. IF sy-subrc EQ 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. MOVE-CORRESPONDING ls_return TO ls_output1. CLEAR: ls_output1-message. LOOP AT lt_return INTO ls_return WHERE type EQ 'E' OR type EQ 'A'. ls_output1-message = ls_output1-message && ls_return-message && ';'. ENDLOOP. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. MOVE-CORRESPONDING ls_return TO ls_output1. MOVE-CORRESPONDING ls_assetcreated TO ls_output1. IF ls_output1-type IS INITIAL. ls_output1-type = 'S'. ENDIF. IF ls_output1-message IS INITIAL. ls_output1-message = '导入成功'. ENDIF. ENDIF. APPEND ls_output1 TO gt_output1. ENDLOOP. * MESSAGE s003(zfico001). ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_display_data. PERFORM f_set_layout. PERFORM f_set_fieldcat. PERFORM f_alv_display TABLES gt_output1. ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_set_layout. CLEAR: gs_layout. gs_layout-box_fname = 'SLBOX'. gs_layout-zebra = 'X'. gs_layout-cwidth_opt = 'X'. ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_set_fieldcat. DATA: ls_fieldcat TYPE lvc_s_fcat. DEFINE set_fieldcat. CLEAR: ls_fieldcat. ls_fieldcat-fieldname = &1. ls_fieldcat-ref_field = &2. ls_fieldcat-ref_table = &3. ls_fieldcat-seltext = &4. ls_fieldcat-scrtext_l = &4. ls_fieldcat-scrtext_m = &4. ls_fieldcat-scrtext_s = &4. ls_fieldcat-coltext = &4. APPEND ls_fieldcat TO gt_fieldcat. END-OF-DEFINITION. set_fieldcat 'ASSETCLASS' 'ASSETCLASS' 'BAPI1022_FEGLG001' '资产分类' . "资产分类 set_fieldcat 'COMPANYCODE' 'COMPANYCODE' 'BAPI1022_KEY' '公司代码' . "公司代码 set_fieldcat 'ASSET' 'ASSET' 'BAPI1022_REFERENCE' '资产编号' . "资产编号 set_fieldcat 'DESCRIPT' 'DESCRIPT' 'BAPI1022_FEGLG001' '资产描述' . "资产描述 set_fieldcat 'DESCRIPT2' 'DESCRIPT2' 'BAPI1022_FEGLG001' '备注' . "描述2 * set_fieldcat 'MAIN_DESCRIPT' 'MAIN_DESCRIPT' 'BAPI1022_FEGLG001' '' '' '' ''. "资产主号文本 set_fieldcat 'SERIAL_NO' 'SERIAL_NO' 'BAPI1022_FEGLG001' '序列号' . "序列号 set_fieldcat 'INVENT_NO' 'INVENT_NO' 'BAPI1022_FEGLG001' '规格型号' . "存货号 set_fieldcat 'QUANTITY' 'QUANTITY' 'BAPI1022_FEGLG001' '数量' . "数量 set_fieldcat 'BASE_UOM' 'BASE_UOM' 'BAPI1022_FEGLG001' '基本计量单位' . "单位 set_fieldcat 'INVZU' 'INVZU' 'ANLA' '存放地点' . "存放地点 set_fieldcat 'CAP_DATE' 'CAP_DATE' 'BAPI1022_FEGLG002' '资本化日期' . "资本化日期 set_fieldcat 'COSTCENTER' 'COSTCENTER' 'BAPI1022_FEGLG003' '成本中心' . "成本中心 set_fieldcat 'ROOM' 'ROOM' 'BAPI1022_FEGLG003' '使用人' . "房间 set_fieldcat 'KFZKZ' 'KFZKZ' 'ANLZ' '申请人' . "执照牌号 set_fieldcat 'EVALGROUP1' 'EVALGROUP1' 'BAPI1022_FEGLG004' '状态' . "状态 set_fieldcat 'LIFNR' 'LIFNR' 'ANLA' '供应商' . "供应商 set_fieldcat 'TYPBZ' 'TYPBZ' 'ANLA' '使用部门' . "类型名 set_fieldcat 'HERST' 'HERST' 'ANLA' 'U8编码' . "U8编码 set_fieldcat 'ASSETTRTYP' 'ASSETTRTYP' 'BAPI1022_TRTYPE' '事务类型' . "资产交易类型 set_fieldcat 'ACQ_VALUE' 'ACQ_VALUE' 'BAPI1022_CUMVAL' '资产购置价值' . "累积购置价值 set_fieldcat 'ORD_DEP' 'ORD_DEP' 'BAPI1022_CUMVAL' '累积普通折旧截止到2016年12月31日' . "累积普通折旧 set_fieldcat 'NAFAG' 'ANLC' 'ANLC' '2017年1月总折旧额' . "2017年1月总折旧额 set_fieldcat 'ULIFE_YRS' 'ULIFE_YRS' 'BAPI1022_DEP_AREAS' '使用年' . "累积普通折旧 set_fieldcat 'ULIFE_PRDS' 'ULIFE_PRDS' 'BAPI1022_DEP_AREAS' '使用月' . "累积普通折旧 set_fieldcat 'SCHRW_PROZ' 'SCHRW_PROZ' 'ANLV' '残值率(%)' . "累积普通折旧 * set_fieldcat 'ORD_DEP1' 'ORD_DEP1' 'BAPI1022_POSTVAL' '一般折旧'. * set_fieldcat 'SCRAPVALUE' 'SCRAPVALUE' 'BAPI1022_CUMVAL' '一般折旧'. set_fieldcat 'TYPE' 'TYPE' 'BAPIRET2' '执行结果' . set_fieldcat 'MESSAGE' 'MESSAGE' 'BAPIRET2' '返回消息' . ENDFORM. *-----------------------------------------------------------------------* * *-----------------------------------------------------------------------* FORM f_alv_display TABLES it_table. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' EXPORTING i_callback_program = sy-repid is_layout_lvc = gs_layout it_fieldcat_lvc = gt_fieldcat i_save = 'A' TABLES t_outtab = it_table EXCEPTIONS program_error = 1 OTHERS = 2. IF sy-subrc <> 0. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_GET_MODEL *&---------------------------------------------------------------------* * 下载模板 *----------------------------------------------------------------------* * -->P_0146 text *----------------------------------------------------------------------* FORM frm_get_model USING p_objid TYPE wwwdata-objid. DATA: l_objdata LIKE wwwdatatab, l_destination LIKE rlgrap-filename, l_rc LIKE sy-subrc, l_errtxt TYPE string. DATA: l_fullpath TYPE string, l_extension TYPE string, l_fname LIKE rlgrap-filename, l_formkey LIKE wwwdatatab. l_extension = p_objid. PERFORM get_file_name USING '.xls' 'Excel|*.xls;' CHANGING l_fullpath. IF l_fullpath = space. MESSAGE '请选择下载文件名' TYPE 'E'. ELSE. CONCATENATE l_fullpath '' INTO l_fname. SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF l_objdata WHERE relid = 'MI' AND objid = p_objid . IF sy-subrc NE 0 OR l_objdata-objid = space. MESSAGE e001(00) WITH '文件不存在!'. ELSE. CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING key = l_objdata destination = l_fname IMPORTING rc = l_rc CHANGING temp = l_fname. IF l_rc NE 0. MESSAGE e001(00) WITH '文件下载失败!'. ENDIF. ENDIF. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form GET_FILE_NAME *&---------------------------------------------------------------------* * 获取要下载的文件名字 *----------------------------------------------------------------------* * -->P_0274 text * -->P_0275 text * <--P_L_FULLPATH text *----------------------------------------------------------------------* FORM get_file_name USING p_extension p_file_filter CHANGING p_fullpath. DATA: l_filename TYPE string, l_path TYPE string, l_fullpath TYPE string, l_titile TYPE string, l_init_dir TYPE string. CLEAR p_fullpath. l_titile = TEXT-t04. l_init_dir = TEXT-t03. CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING window_title = l_titile default_extension = '.xls' initial_directory = l_init_dir prompt_on_overwrite = 'X' file_filter = p_file_filter CHANGING filename = l_filename path = l_path fullpath = l_fullpath EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. p_fullpath = l_fullpath. ENDFORM.
^_^很多人都把资料锁进了note里,以后还怎么百度呢^_^
浙公网安备 33010602011771号