sapSB
模板见文件
*
&----------------------------------------------------------------------* *& 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.

 

分类:

技术点:

相关文章: