SAP ABAP AA 固定资产导入程序
代码
*&---------------------------------------------------------------------*
*& Report ZRPT_FI_FIXEDASSETS_MAINTAIN
*&---------------------------------------------------------------------*
*& 固定资产导入并折旧
*&---------------------------------------------------------------------*
REPORT zrpt_fi_fixedassets_maintain.
*----------------------------------------------------------------------*
* TABLES
*----------------------------------------------------------------------*
TABLES: sscrfields.
*----------------------------------------------------------------------*
* Types
*----------------------------------------------------------------------*
TYPES: BEGIN OF type_out,posnr TYPE posnr, "序号bukrs TYPE anla-bukrs, "公司代码anln1 TYPE anla-anln1, "资产号anlkl TYPE anla-anlkl, "资产类txt50 TYPE anla-txt50, "资产描述sernr TYPE anla-sernr, "序列号invnr TYPE anla-invnr, "库存编号menge TYPE anla-menge, "数量meins TYPE anla-meins, "基本单位aktiv TYPE anla-aktiv, "资产化日期kostl TYPE anlz-kostl, "成本中心kostlv TYPE anlz-kostl, "责任成本中心werks TYPE anlz-werks, "工厂stort TYPE anlz-stort, "位置raumn TYPE anlz-raumn, "房间lifnr TYPE anla-lifnr, "供应商afabe TYPE anlb-afabe, "折旧范围kansw TYPE anlc-kansw, "购置价值knafa TYPE anlc-knafa, "累计折旧nafag TYPE anlc-nafag, "本年折旧ndjar TYPE anlb-ndjar, "使用年限ndper TYPE anlb-ndper, "期间afasl TYPE anlb-afasl, "折旧码herst TYPE anla-herst, "制造商txa50 TYPE anla-txa50, "描述扩展ord41 TYPE anla-ord41, "评审小组1ord42 TYPE anla-ord42, "评审小组2ord43 TYPE anla-ord43, "评审小组3* anln1 TYPE anla-anln1, "资产号anln2 TYPE anla-anln2, "子资产号icon TYPE icon_d, "消息类型msg TYPE bapi_msg, "消息sel TYPE c,END OF type_out.*定义内表
DATA: gt_tab TYPE TABLE OF type_out WITH HEADER LINE.*ALV定义
DATA: gt_fieldcat TYPE lvc_t_fcat,gs_fieldcat LIKE LINE OF gt_fieldcat,gt_layout TYPE TABLE OF lvc_s_layo,gs_layout TYPE lvc_s_layo,gt_events TYPE slis_t_event,gs_events LIKE LINE OF gt_events.
*----------------------------------------------------------------------*
* Definition
*----------------------------------------------------------------------*
DEFINE init_fieldcat.gs_fieldcat-fieldname = &1. " 需要输出的内表的字段名gs_fieldcat-coltext = &2. " 列名称gs_fieldcat-no_zero = &3. "可编辑gs_fieldcat-ref_table = &4.gs_fieldcat-ref_field = &5.APPEND gs_fieldcat TO gt_fieldcat.CLEAR gs_fieldcat.
END-OF-DEFINITION.*----------------------------------------------------------------------*
* Selection Screen
*----------------------------------------------------------------------*
SELECTION-SCREEN:FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.PARAMETERS: p_file LIKE rlgrap-filename.PARAMETERS: p_mjahr TYPE mjahr OBLIGATORY .PARAMETERS:P_SUB TYPE CHAR1 AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b1.SELECTION-SCREEN BEGIN OF BLOCK desc WITH FRAME TITLE blktext1.SELECTION-SCREEN COMMENT 1(78) txt1.
SELECTION-SCREEN END OF BLOCK desc.
*&---------------------------------------------------------------------*
*& Initialization
*&---------------------------------------------------------------------*
INITIALIZATION.DATA:LV_REPID TYPE SY-REPID.LV_REPID = SY-REPID.p_mjahr = sy-datum+0(4).sscrfields-functxt_01 = icon_export && '模版下载'.* 获取程序执行记录PERFORM frm_get_rptrunif(zabap_common_program) USING '20230313'CHANGING blktext1 txt1 lv_repid.
*&---------------------------------------------------------------------*
*& At Selection-Screen
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.IF sscrfields-ucomm = 'FC01'.PERFORM frm_get_model USING 'ZRPT_FI_FIXEDASSETS_MAINTAIN'.ELSEIF sy-ucomm <> 'FC01' AND p_file IS INITIAL.MESSAGE e055(00).ENDIF.AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.PERFORM frm_f4."路径搜索帮助打开*&---------------------------------------------------------------------*
*& Start-Of-Selection
*&---------------------------------------------------------------------*
START-OF-SELECTION.
DATA:LV_STDATUM TYPE SY-DATUM,LV_STUZEIT TYPE SY-UZEIT.LV_STDATUM = SY-DATUM. "程序执行日期LV_STUZEIT = SY-UZEIT. "程序执行时间PERFORM frm_upload_data.PERFORM frm_getdata.
* 写入执行记录PERFORM frm_writerptrunrecord(zabap_common_program)USING '20230313' LV_STDATUM LV_STUZEIT .PERFORM frm_layout.PERFORM frm_fieldcat.PERFORM frm_output.*&---------------------------------------------------------------------*
*& Form FRM_GETDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_getdata .LOOP AT gt_tab.gt_Tab-anln1 = |{ gt_tab-anln1 ALPHA = IN }|.gt_tab-kostl = |{ gt_tab-kostl ALPHA = IN }|.gt_tab-kostlv = |{ gt_tab-kostlv ALPHA = IN }|.gt_tab-lifnr = |{ gt_tab-lifnr ALPHA = IN }|.IF P_SUB IS NOT INITIAL.SELECT SINGLE COUNT(*)FROM ANLAWHERE BUKRS = gt_Tab-BUKRSAND ANLN1 = GT_TAB-ANLN1.IF SY-SUBRC <> 0.gt_tab-ICON = icon_led_red.gt_tab-msg = '对应的主资产不存在,无法创建'.ENDIF.ENDIF.MODIFY gt_tab.ENDLOOP.SORT gt_tab BY posnr.ENDFORM. " FRM_GETDATA
*&---------------------------------------------------------------------*
*& Form FRM_LAYOUT
*----------------------------------------------------------------------*
FORM frm_layout .gs_layout-zebra = 'X' . " 使ALV界面呈现颜色交替gs_layout-sel_mode = 'A' . " 选择模式,“A”在最左端有选择按钮gs_layout-cwidth_opt = 'X' . " 自动优化列宽gs_layout-detailinit = 'X' . " 是否出现细节屏幕gs_layout-box_fname = 'SEL' . " 选中行
ENDFORM. " FRM_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_fieldcat .PERFORM frm_field_lvc TABLES gt_fieldcat USING 'ICON' '' '' '标识' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'MSG' '' '' '消息' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'ANLN1' 'ANLA' 'ANLN1' '资产号' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'ANLN2' 'ANLA' 'ANLN2' '子资产号' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'POSNR' 'VBAP' 'POSNR' '序号' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'BUKRS' 'ANLA' 'BUKRS' '公司代码' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'ANLKL' 'ANLA' 'ANLKL' '资产类' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'TXT50' 'ANLA' 'TXT50' '资产描述' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'SERNR' 'ANLA' 'SERNR' '序列号' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'INVNR' 'ANLA' 'INVNR' '库存编号' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'MENGE' 'ANLA' 'MENGE' '数量' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'MEINS' 'ANLA' 'MEINS' '基本单位' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'AKTIV' 'ANLA' 'AKTIV' '资产化日期' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'KOSTL' 'ANLZ' 'KOSTL' '成本中心' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'KOSTLV' 'ANLZ' 'KOSTL' '责任成本中心' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'WERKS' 'ANLZ' 'WERKS' '工厂' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'STORT' 'ANLZ' 'STORT' '位置' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'RAUMN' 'ANLZ' 'RAUMN' '房间' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'LIFNR' 'ANLA' 'LIFNR' '供应商' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'AFABE' 'ANLB' 'AFABE' '折旧范围' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'KANSW' 'ANLC' 'KANSW' '购置价值' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'KNAFA' 'ANLC' 'KNAFA' '累计折旧' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'NAFAG' 'ANLC' 'NAFAG' '本年折旧' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'NDJAR' 'ANLB' 'NDJAR' '使用年限' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'NDPER' 'ANLB' 'NDPER' '期间' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'AFASL' 'ANLB' 'AFASL' '折旧码' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'HERST' 'ANLA' 'HERST' '制造商' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'TXA50' 'ANLA' 'TXA50' '描述扩展' '' '' '' '' ''.PERFORM frm_field_lvc TABLES gt_fieldcat USING 'ORD41' 'ANLA' 'ORD41' '模/盘具类型' '' '' '' '' ''.
* PERFORM frm_field_lvc TABLES gt_fieldcat USING 'ORD42' 'ANLA' 'ORD42' '标签打印' '' '' '' '' ''.
ENDFORM. " FRM_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_FIELD_LVC
*&---------------------------------------------------------------------*
* 设置字段目录
*----------------------------------------------------------------------*
FORM frm_field_lvc TABLES pt_fieldcat_lvc STRUCTURE lvc_s_fcatUSING pv_fieldname TYPE lvc_rfnamepv_ref_table TYPE lvc_tnamepv_ref_field TYPE lvc_rfnamepv_text TYPE stringpv_edit TYPE cpv_nzero TYPE cpv_f4 TYPE cpv_no_out TYPE cpv_outputlen TYPE i.DATA:ls_fieldcat_lvc TYPE lvc_s_fcat.CLEAR ls_fieldcat_lvc.ls_fieldcat_lvc-fieldname = pv_fieldname.ls_fieldcat_lvc-ref_field = pv_ref_field.ls_fieldcat_lvc-ref_table = pv_ref_table.ls_fieldcat_lvc-colddictxt = 'L'.ls_fieldcat_lvc-scrtext_l = pv_text.ls_fieldcat_lvc-edit = pv_edit.ls_fieldcat_lvc-no_zero = pv_nzero.ls_fieldcat_lvc-f4availabl = pv_f4.ls_fieldcat_lvc-no_out = pv_no_out.ls_fieldcat_lvc-outputlen = pv_outputlen.APPEND ls_fieldcat_lvc TO pt_fieldcat_lvc.
ENDFORM. "FRM_FIELD_LVC
*&---------------------------------------------------------------------*
*& Form FRM_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_output .CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'EXPORTINGi_callback_program = sy-repidi_callback_pf_status_set = 'ALV_PF_STATUS'i_callback_user_command = 'FRM_USER_COMMAD'is_layout_lvc = gs_layoutit_fieldcat_lvc = gt_fieldcatTABLESt_outtab = gt_tabEXCEPTIONSprogram_error = 1OTHERS = 2.
ENDFORM. " FRM_OUTPUT
*&---------------------------------------------------------------------*
*& Form alv_pf_status
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_pf_status USING rt_extab TYPE slis_t_extab. "#EC *SET PF-STATUS 'STANDARD'.
ENDFORM. "alv_pf_status
*&---------------------------------------------------------------------*
*& Form frm_user_commad
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_user_commad USING p_ucomm TYPE sy-ucomm p_rs_selfield TYPE slis_selfield.CASE p_ucomm.WHEN '&CRET'.PERFORM frm_create. "创建WHEN OTHERS.ENDCASE.* ALV刷新PERFORM frm_refresh.ENDFORM. "frm_user_commad
*&---------------------------------------------------------------------*
*& Form FRM_REFRESH
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_refresh .DATA: gcl_grid TYPE REF TO cl_gui_alv_grid.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = gcl_grid.gs_layout-no_toolbar = 'X' . "隐藏工具栏CALL METHOD gcl_grid->set_frontend_layoutEXPORTINGis_layout = gs_layout. " 自动优化列宽CALL METHOD gcl_grid->check_changed_data.CALL METHOD gcl_grid->refresh_table_display.
ENDFORM. "frm_refresh
*&---------------------------------------------------------------------*
*& Form FRM_F4
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_f4 .CALL FUNCTION 'WS_FILENAME_GET' "Get file nameEXPORTINGmask = ',*.* ,*.*.' "',*.xls,*.xlsx.'mode = '0'title = TEXT-h10IMPORTINGfilename = p_fileEXCEPTIONSinv_winsys = 1no_batch = 2selection_cancel = 3selection_error = 4OTHERS = 5.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CREATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_create .DATA: ls_key TYPE bapi1022_key,ls_generaldata TYPE bapi1022_feglg001,ls_generaldatax TYPE bapi1022_feglg001x,ls_postinginformation TYPE bapi1022_feglg002,ls_postinginformationx TYPE bapi1022_feglg002x,ls_timedependentdata TYPE bapi1022_feglg003,ls_timedependentdatax TYPE bapi1022_feglg003x,ls_allocations TYPE bapi1022_feglg004,ls_allocationsx TYPE bapi1022_feglg004x,ls_origin TYPE bapi1022_feglg009,ls_originx TYPE bapi1022_feglg009x,ls_depreciationareas TYPE bapi1022_dep_areas,ls_depreciationareasx TYPE bapi1022_dep_areasx,lt_depreciationareas TYPE TABLE OF bapi1022_dep_areas,lt_depreciationareasx TYPE TABLE OF bapi1022_dep_areasx,ls_cumulatedvalues TYPE bapi1022_cumval,lt_cumulatedvalues TYPE TABLE OF bapi1022_cumval,ls_postedvalues TYPE bapi1022_postval,lt_postedvalues TYPE TABLE OF bapi1022_postval,ls_extensionin TYPE bapiparex,lt_extensionin TYPE TABLE OF bapiparex,ls_return TYPE bapiret2,lt_return TYPE TABLE OF bapiret2,lt_transactions TYPE TABLE OF bapi1022_trtype,ls_transactions TYPE bapi1022_trtype.FIELD-SYMBOLS: <ls_tab> TYPE type_out.DATA:LV_XSUB TYPE CHAR1,lv_ann1 TYPE bapi1022_1-assetmaino, "固定资产编号lv_area TYPE bf_afabe_d. "折旧范围IF P_SUB IS NOT INITIAL.LV_XSUB = 'X'.ENDIF.lv_area = '01'. "LOOP AT gt_tab ASSIGNING <ls_tab> WHERE ICON <> icon_led_red.AT NEW posnr.CLEAR ls_key.ls_key-companycode = <ls_tab>-bukrs.ls_key-asset = <ls_tab>-anln1.
*-- 常规CLEAR: ls_generaldata, ls_generaldatax.ls_generaldata-assetclass = <ls_tab>-anlkl. "资产分类ls_generaldata-descript = <ls_tab>-txt50. "资产描述ls_generaldata-descript2 = <ls_tab>-txa50. "附加资产描述ls_generaldata-serial_no = <ls_tab>-sernr. "序列号ls_generaldata-invent_no = <ls_tab>-invnr. "库存编号ls_generaldata-quantity = <ls_tab>-menge. "数量ls_generaldata-base_uom = <ls_tab>-meins. "单位ls_generaldatax-assetclass = 'X'.ls_generaldatax-descript = 'X'.ls_generaldatax-descript2 = 'X'.ls_generaldatax-serial_no = 'X'.ls_generaldatax-invent_no = 'X'.ls_generaldatax-quantity = 'X'.ls_generaldatax-base_uom = 'X'.CLEAR: ls_postinginformation, ls_postinginformationx .ls_postinginformation-cap_date = <ls_tab>-aktiv. "资产化日期ls_postinginformationx-cap_date = 'X'.*-- 与时间相关CLEAR: ls_timedependentdata, ls_timedependentdatax.ls_timedependentdata-costcenter = <ls_tab>-kostl. "成本中心ls_timedependentdata-resp_cctr = <ls_tab>-kostlv. "成本中心对资产负责ls_timedependentdata-plant = <ls_tab>-werks. "工厂ls_timedependentdata-location = <ls_tab>-stort. "位置ls_timedependentdata-room = <ls_tab>-raumn. "房间ls_timedependentdatax-costcenter = 'X'.ls_timedependentdatax-resp_cctr = 'X'.ls_timedependentdatax-plant = 'X'.ls_timedependentdatax-location = 'X'.ls_timedependentdatax-room = 'X'.*-- 分配CLEAR:ls_allocations,ls_allocationsx.ls_allocations-evalgroup1 = <ls_tab>-ord41. "评估组1ls_allocations-evalgroup2 = <ls_tab>-ord42. "评估组2ls_allocations-evalgroup3 = <ls_tab>-ord43. "评估组3ls_allocationsx-evalgroup1 = 'X'.ls_allocationsx-evalgroup2 = 'X'.ls_allocationsx-evalgroup3 = 'X'.*-- 源CLEAR: ls_origin, ls_originx.ls_origin-vendor_no = <ls_tab>-lifnr. "供应商ls_origin-manufacturer = <ls_tab>-herst. "制造商IF ls_origin-vendor_no IS NOT INITIAL.ls_originx-vendor_no = 'X'.ENDIF.IF ls_origin-manufacturer IS NOT INITIAL.ls_originx-manufacturer = 'X'.ENDIF.ENDAT.*- 折旧范围CLEAR: ls_depreciationareas, ls_depreciationareasx.ls_depreciationareas-area = <ls_tab>-afabe. "折旧范围ls_depreciationareas-ulife_yrs = <ls_tab>-ndjar. "使用年限ls_depreciationareas-ulife_prds = <ls_tab>-ndper. "期间ls_depreciationareas-dep_key = <ls_tab>-afasl. "折旧码APPEND ls_depreciationareas TO lt_depreciationareas.ls_depreciationareasx-area = <ls_tab>-afabe.ls_depreciationareasx-ulife_yrs = 'X'.ls_depreciationareasx-ulife_prds = 'X'.ls_depreciationareasx-dep_key = 'X'.APPEND ls_depreciationareasx TO lt_depreciationareasx.* CLEAR: ls_depreciationareas, ls_depreciationareasx.
* ls_depreciationareas-area = '30'.
* ls_depreciationareas-ulife_yrs = <ls_tab>-ndjar.
* ls_depreciationareas-ulife_prds = <ls_tab>-ndper.
* ls_depreciationareas-dep_key = <ls_tab>-afasl.
* APPEND ls_depreciationareas TO lt_depreciationareas.
*
* ls_depreciationareasx-area = '30'.
* ls_depreciationareasx-ulife_yrs = 'X'.
* ls_depreciationareasx-ulife_prds = 'X'.
* ls_depreciationareasx-dep_key = 'X'.
* APPEND ls_depreciationareasx TO lt_depreciationareasx.IF p_mjahr <> sy-datum+0(4). "往年资产
*-- 增加累计折旧CLEAR ls_cumulatedvalues.
* ls_cumulatedvalues-fisc_year = p_mjahr. “20230624 DEL 报错往年年度不可用ls_cumulatedvalues-fisc_year = sy-datum+0(4). "20230624 ADD 会计年度换成当年
* ls_cumulatedvalues-fisc_year = sy-datum+0(4) - 1.ls_cumulatedvalues-area = <ls_tab>-afabe. "折旧范围ls_cumulatedvalues-acq_value = <ls_tab>-kansw. "购置价值ls_cumulatedvalues-ord_dep = <ls_tab>-knafa. "累计折旧APPEND ls_cumulatedvalues TO lt_cumulatedvalues.* CLEAR ls_cumulatedvalues.
* ls_cumulatedvalues-fisc_year = p_mjahr .
** ls_cumulatedvalues-fisc_year = sy-datum+0(4) - 1.
* ls_cumulatedvalues-area = '30'.
* ls_cumulatedvalues-acq_value = <ls_tab>-kansw.
* ls_cumulatedvalues-ord_dep = <ls_tab>-knafa.
* APPEND ls_cumulatedvalues TO lt_cumulatedvalues.ELSE. "本年资产
*-- 增加购置价值CLEAR:ls_transactions.ls_transactions-fisc_year = p_mjahr.ls_transactions-area = <ls_tab>-afabe. "折旧范围ls_transactions-current_no = '1'.ls_transactions-amount = <ls_tab>-kansw. "购置价值ls_transactions-assettrtyp = '100'.ls_transactions-valuedate = <ls_tab>-aktiv. "资产化日期ls_transactions-currency = 'CNY'.APPEND ls_transactions TO lt_transactions.ENDIF.
*- 增加正常折旧CLEAR ls_postedvalues.
* ls_postedvalues-fisc_year = p_mjahr. “20230624 DEL 报错往年年度不可用ls_postedvalues-fisc_year = sy-datum+0(4). "20230624 ADD 会计年度换成当年ls_postedvalues-area = <ls_tab>-afabe. "折旧范围ls_postedvalues-ord_dep = <ls_tab>-nafag. "本年折旧APPEND ls_postedvalues TO lt_postedvalues.*- 启用平行评估或者需要合并就用30
* CLEAR ls_postedvalues.
* ls_postedvalues-fisc_year = p_mjahr.
* ls_postedvalues-area = '30'.
* ls_postedvalues-ord_dep = <ls_tab>-nafag.
* APPEND ls_postedvalues TO lt_postedvalues.AT END OF posnr.CLEAR gt_tab.CALL FUNCTION 'BAPI_FIXEDASSET_OVRTAKE_CREATE'EXPORTINGkey = ls_keyCREATESUBNUMBER = LV_XSUBgeneraldata = ls_generaldatageneraldatax = ls_generaldataxpostinginformation = ls_postinginformationpostinginformationx = ls_postinginformationxtimedependentdata = ls_timedependentdatatimedependentdatax = ls_timedependentdataxallocations = ls_allocationsallocationsx = ls_allocationsxorigin = ls_originoriginx = ls_originxIMPORTINGasset = lv_ann1subnumber = gt_tab-anln2TABLESdepreciationareas = lt_depreciationareasdepreciationareasx = lt_depreciationareasxcumulatedvalues = lt_cumulatedvaluespostedvalues = lt_postedvaluestransactions = lt_transactionsextensionin = lt_extensioninreturn = lt_return.LOOP AT lt_return INTO ls_return WHERE type CA 'EXA'.IF ls_return-message IS INITIAL.MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-numberWITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4INTO ls_return-message.ENDIF.gt_tab-msg = gt_tab-msg && ls_return-message && ','.ENDLOOP.IF sy-subrc = 0 OR lv_ann1 IS INITIAL.gt_tab-icon = icon_led_red.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ELSE.gt_tab-icon = icon_led_green.gt_tab-msg = '固定资产创建成功!'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGwait = 'X'.ENDIF.gt_tab-anln1 = lv_ann1.MODIFY gt_tab TRANSPORTING anln1 anln2 icon msg WHERE posnr = <ls_tab>-posnr AND ICON <> icon_led_red.CLEAR:ls_key,ls_generaldata,ls_generaldatax,ls_postinginformation,ls_postinginformationx,ls_timedependentdata,ls_timedependentdatax,ls_allocations,ls_allocationsx,ls_origin,ls_originx,ls_depreciationareas,ls_depreciationareasx,ls_cumulatedvalues,ls_postedvalues,ls_extensionin,ls_return.CLEAR: gt_tab, lt_depreciationareas, lt_depreciationareasx,lt_transactions,lt_cumulatedvalues, lt_postedvalues,lt_extensionin, lt_return.ENDAT.ENDLOOP.UNASSIGN <ls_tab>.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_MODEL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_get_model USING p_objid TYPE wwwdata-objid.DATA: ls_objdata LIKE wwwdatatab,lv_destination LIKE rlgrap-filename,lv_rc LIKE sy-subrc,lv_errtxt TYPE string,lv_fullpath TYPE string,lv_extension TYPE string,lv_fname LIKE rlgrap-filename,ls_formkey LIKE wwwdatatab.lv_extension = p_objid.PERFORM get_file_name USING '.xls''Excel|*.xls;'CHANGING lv_fullpath.IF lv_fullpath = space.MESSAGE '请选择下载文件名' TYPE 'E'.ELSE.CONCATENATE lv_fullpath '' INTO lv_fname.SELECT SINGLE relid objidFROM wwwdataINTO CORRESPONDING FIELDS OF ls_objdataWHERE relid = 'MI'AND objid = p_objid .IF sy-subrc NE 0 OR ls_objdata-objid = space.MESSAGE e001(00) WITH '文件不存在!'.ELSE.CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGkey = ls_objdatadestination = lv_fnameIMPORTINGrc = lv_rcCHANGINGtemp = lv_fname.IF lv_rc NE 0.MESSAGE e001(00) WITH '文件下载失败!'.ENDIF.ENDIF.ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_FILE_NAME
*&---------------------------------------------------------------------*
* 获取要下载的文件名字
*----------------------------------------------------------------------*
FORM get_file_name USING p_extensionp_file_filterCHANGING p_fullpath.DATA: lv_filename TYPE string VALUE '固定资产导入模板',lv_path TYPE string,lv_fullpath TYPE string,lv_titile TYPE string,lv_init_dir TYPE string.CLEAR p_fullpath.CALL METHOD cl_gui_frontend_services=>file_save_dialogEXPORTINGwindow_title = '保存至'default_extension = 'xlsx'default_file_name = lv_filenamefile_filter = 'Excel Files (*.xlsx)'CHANGINGfilename = lv_filenamepath = lv_pathfullpath = lv_fullpathEXCEPTIONScntl_error = 1error_no_gui = 2not_supported_by_gui = 3OTHERS = 4.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.p_fullpath = lv_fullpath.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM frm_upload_data .DATA: lt_intern TYPE STANDARD TABLE OF kcde_intern_struc,ls_excel LIKE LINE OF lt_intern.FIELD-SYMBOLS: <field> TYPE any.REFRESH lt_intern.CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'EXPORTINGfilename = p_file "dataseti_begin_col = 1i_begin_row = 3i_end_col = 26i_end_row = 65535TABLESintern = lt_intern.LOOP AT lt_intern INTO ls_excel.ASSIGN COMPONENT ls_excel-col OF STRUCTURE gt_tab TO <field>.<field> = ls_excel-value.AT END OF row.CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'EXPORTINGinput = gt_tab-meinsIMPORTINGoutput = gt_tab-meinsEXCEPTIONSunit_not_found = 1OTHERS = 2.APPEND gt_tab.CLEAR gt_tab.ENDAT.ENDLOOP.LOOP AT gt_tab.gt_tab-knafa = gt_tab-knafa * -1.gt_tab-nafag = gt_tab-nafag * -1.MODIFY gt_tab.ENDLOOP.
ENDFORM.