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