ABAP AS91 历史资产主数据批导 资产价值批导

 *&---------------------------------------------------------------------*
*& Report ZFICZ011
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zficz011 MESSAGE-ID z_fi.
TABLES:sscrfields,anla.
TYPE-POOLS: slisicon.
*&---上传模板对应字段 begin--
*&--资产价值
TYPES:BEGIN OF ty_download,
        bukrs  TYPE anla-bukrs,
        anln1  TYPE anla-anln1,
        anln2  TYPE anla-anln2,
        gjahr  TYPE anlc-gjahr,
        kansw  TYPE anlc-kansw"资产价值
        kaufw  TYPE anlc-kaufw"减值
        afabe  TYPE anlc-afabe"实际折旧范围01
        knafa  TYPE anlc-knafa"资产以前年度折旧01
        nafag  TYPE anlc-nafag"资产当前年度折旧01
        y_dep  TYPE anlc-nafag"以前年度计划外折旧
        d_dep  TYPE anlc-nafag"当前年度计划外折旧
        afabe1 TYPE anlc-afabe"实际折旧范围32
        knafa1 TYPE anlc-knafa"资产以前年度折旧32
        nafag1 TYPE anlc-nafag"资产当前年度折旧32
        y_dep1 TYPE anlc-nafag"以前年度计划外折旧
        d_dep1 TYPE anlc-nafag"当前年度计划外折旧
        zflg   TYPE c LENGTH "当前年度购入资产标识
        aktiv  TYPE anla-aktiv"资本化日期
      END OF ty_download,
      "历史资产 --主资产
      BEGIN OF ty_download1,
        bukrs         TYPE anla-bukrs,         "公司代码
        anlkl         TYPE anla-anlkl,         "资产分类
        txt50         TYPE anla-txt50,         "描述1
        txa50         TYPE anla-txa50,         "描述2
        sernr         TYPE anla-sernr,         "序列号
        invnr         TYPE anla-invnr,         "库存编号
        menge         TYPE anla-menge,          "数量
        meins         TYPE anla-meins,          "单位
        ivdat         TYPE anla-ivdat,          "上次盘点日期
        invzu         TYPE anla-invzu,          "库存注释补充说明
        aktiv         TYPE anla-aktiv,          "资本化日期
        zzjh          TYPE anlu-zzjh   ,       "机号
        zzsbgg        TYPE anlu-zzsbgg ,       "设备规格
        zzsblb        TYPE anlu-zzsblb ,       "设备类别->设备SN号
        zzsblx        TYPE anlu-zzsblx ,       "设备类型
        zzsfjg        TYPE anlu-zzsfjg ,       "是否监管
        zzxz          TYPE anlu-zzxz   ,       "设备性质
        zzjgqk        TYPE anlu-zzjgqk ,       "监管情况
        zzjgq         TYPE anlu-zzjgq,           "监管日期
        zzbz          TYPE anlu-zzbz,          "备注
        zzsfzr        TYPE anlu-zzsfzr ,       "是否转让
        zzazdz        TYPE anlu-zzazdz ,       "安装地点
        zzzt          TYPE anlu-zzzt   ,        "状态
        zzzrsj        TYPE anlu-zzzrsj ,             "转让日期
        zzzrdd        TYPE anlu-zzzrdd ,        "转让地点
        zzzrbz        TYPE anlu-zzzrbz ,        "转让备注
        zzesyrbz      TYPE anlu-zzesyrbz,       "使用人备注
        zzjsr         TYPE anlu-zzjsr  ,        "接收人
        zzgh          TYPE anlu-zzgh   ,        "员工工号
        zzsybm        TYPE anlu-zzsybm,         "使用部门
        zzeccn        TYPE anlu-zzeccn       ,  "ECCN编码
        zzreg_country TYPE anlu-zzreg_country,  "注册国家
        zzcoo         TYPE anlu-zzcoo        ,  "原始认证的发货国--原产地国
        zzcntlv       TYPE anlu-zzcntlv      ,  "管控等级
        zzoaid        TYPE anlu-zzoaid         ,  "OA系统编号
        gsber         TYPE anlz-gsber"业务范围
        kostl         TYPE anlz-kostl  ,       "成本中心
        kostlv        TYPE anlz-kostlv  ,       "责任成本中心
        stort         TYPE anlz-stort"位置
        raumn         TYPE anlz-raumn"房间
        zzxmbh        TYPE anlu-zzxmbh"国家专项
        zzzjxz        TYPE anlu-zzzjxz,         "资金性质
        zzxmjd        TYPE anlu-zzxmjd  ,       "项目阶段
        zzdydqrq      TYPE anlu-zzdydqrq,       "抵押到期日期
        zzdyxz        TYPE anlu-zzdyxz  ,       "抵押性质
        zzstatus      TYPE anlu-zzstatus"状态
        zzhth         TYPE anlu-zzhth  ,       "合同号
        zztzwh        TYPE anlu-zztzwh ,        "投资文号
        zzdwggxm      TYPE anlu-zzdwggxm,       "在建工程公告项目
        zzstateid     TYPE anlu-zzstateid  ,    "投资类型代码
        zzmjzjxm      TYPE anlu-zzmjzjxm,       "募集资金项目
        zzanlkl       TYPE anlu-zzanlkl"OA小分类
        ord41         TYPE anla-ord41,        "分厂
        ord42         TYPE anla-ord42,        "经济用途
        ord43         TYPE anla-ord43,        "使用情况
        ord44         TYPE anla-ord44,        "资产变动方式
        anlue         TYPE anla-anlue,        "资产特级号
        lifnr         TYPE anla-lifnr ,     "供应商
        liefe         TYPE anla-liefe"资产提供者名 --供应商名称
        herst         TYPE anla-herst"制造商
        vbund         TYPE anla-vbund"贸易伙伴编号
        land1         TYPE anla-land1"原产地国家
        typbz         TYPE anla-typbz"类型名称
        aibn1         TYPE anla-aibn1"原始资产
        aibdt         TYPE anla-aibdt"购置在
        urjhr         TYPE anla-urjhr"原始购置年度
        urwrt         TYPE anla-urwrt"原始购置值
        antei         TYPE anla-antei"厂内产品百分比
        eaufn         TYPE anla-eaufn ,       "投资订单
        zzccrq        TYPE anlu-zzccrq  ,       "出厂日期
        zzjcrq        TYPE anlu-zzjcrq  ,       "进厂日期
        zzqyrq        TYPE anlu-zzqyrq  ,       "启用日期
        zzbxqx        TYPE anlu-zzbxqx  ,       "保修期
        zzgzjg        TYPE anlu-zzgzjg  ,       "购置价格(元)
        zzpgz         TYPE anlu-zzpgz   ,       "财务评估值(元)
        zzyf          TYPE anlu-zzyf    ,       "运费(元)
        zzazf         TYPE anlu-zzazf   ,       "安装费(元)
        zzqtfy        TYPE anlu-zzqtfy       ,  "其他费用(元)
        zzwbz         TYPE anlu-zzwbz        ,  "外币值
        zzshare       TYPE anlu-zzshare,        "长期待摊用类型
        leart         TYPE anla-leart"类型
        lbasw         TYPE anla-lbasw"新基值
        lkauf         TYPE anla-lkauf"采购价格
        leanz         TYPE anla-leanz"租赁付款号
        legeb         TYPE anla-legeb"租金
        afasl         TYPE anlb-afasl ,       "折旧码
        ndjar         TYPE anlb-ndjar ,       "使用年限
        ndper         TYPE anlb-ndper ,       "期间
        afabg         TYPE anlb-afabg"普通折旧开始日期
*        ndabj         TYPE anlc-ndabj,"已过期使用年限
*        ndabp         TYPE anlc-ndabp,"已过期使用期间
        ndabj         TYPE c LENGTH 3"已过期使用年限
        ndabp         TYPE c LENGTH 3"已过期使用期间
      END OF ty_download1,
      "历史资产 --子资产
      BEGIN OF ty_download2,
        bukrs     TYPE anla-bukrs,         "公司代码
        anln1     TYPE anla-anln1,
        nassets   TYPE ra02s-nassets,
        txt50     TYPE anla-txt50,         "描述1
        txa50     TYPE anla-txa50,         "描述2
        sernr     TYPE anla-sernr,         "序列号
        invnr     TYPE anla-invnr,         "库存编号
        menge     TYPE anla-menge,          "数量
        meins     TYPE anla-meins,          "单位
        ivdat     TYPE anla-ivdat,          "上次盘点日期        invzu     
TYPE anla-invzu,          "库存注释补充说明        aktiv     
TYPE anla-aktiv,          "资本化日期        gsber     
TYPE anlz-gsber"业务范围        kostl     
TYPE anlz-kostl  ,       "成本中心        kostlv    
TYPE anlz-kostlv  ,       "责任成本中心        stort     
TYPE anlz-stort"位置        raumn     
TYPE anlz-raumn"房间        zzxmbh    
TYPE anlu-zzxmbh"国家专项        zzzjxz    
TYPE anlu-zzzjxz,         "资金性质        zzxmjd    
TYPE anlu-zzxmjd  ,       "项目阶段        zzdydqrq  
TYPE anlu-zzdydqrq,       "抵押到期日期        zzdyxz    
TYPE anlu-zzdyxz  ,       "抵押性质        zzstatus  
TYPE anlu-zzstatus"状态        zzhth     
TYPE anlu-zzhth  ,       "合同号        zztzwh    
TYPE anlu-zztzwh ,        "投资文号        zzdwggxm  
TYPE anlu-zzdwggxm,       "在建工程公告项目        zzstateid 
TYPE anlu-zzstateid  ,    "投资类型代码        zzmjzjxm  
TYPE anlu-zzmjzjxm,       "募集资金项目        zzanlkl   
TYPE anlu-zzanlkl"OA小分类        ord41     
TYPE anla-ord41,        "分厂        ord42     
TYPE anla-ord42,        "经济用途        ord43     
TYPE anla-ord43,        "使用情况        ord44     
TYPE anla-ord44,        "资产变动方式        anlue     
TYPE anla-anlue,        "资产特级号        lifnr     
TYPE anla-lifnr ,     "供应商        liefe     
TYPE anla-liefe"资产提供者名 --供应商名称        herst     
TYPE anla-herst"制造商        vbund     
TYPE anla-vbund"贸易伙伴编号        land1     
TYPE anla-land1"原产地国家        typbz     
TYPE anla-typbz"类型名称        aibn1     
TYPE anla-aibn1"原始资产        aibdt     
TYPE anla-aibdt"购置在        urjhr     
TYPE anla-urjhr"原始购置年度        urwrt     
TYPE anla-urwrt"原始购置值        antei     
TYPE anla-antei"厂内产品百分比        eaufn     
TYPE anla-eaufn ,       "投资订单        zzccrq    
TYPE anlu-zzccrq  ,       "出厂日期        zzjcrq    
TYPE anlu-zzjcrq  ,       "进厂日期        zzqyrq    
TYPE anlu-zzqyrq  ,       "启用日期        zzbxqx    
TYPE anlu-zzbxqx  ,       "保修期        zzgzjg    
TYPE anlu-zzgzjg  ,       "购置价格(元)        zzpgz     
TYPE anlu-zzpgz   ,       "财务评估值(元)        zzyf      
TYPE anlu-zzyf    ,       "运费(元)        zzazf     
TYPE anlu-zzazf   ,       "安装费(元)        zzqtfy    
TYPE anlu-zzqtfy       ,  "其他费用(元)        zzwbz     
TYPE anlu-zzwbz        ,  "外币值        zzshare   
TYPE anlu-zzshare,        "长期待摊用类型        leart     
TYPE anla-leart"类型        lbasw     
TYPE anla-lbasw"新基值        lkauf     
TYPE anla-lkauf"采购价格        leanz     
TYPE anla-leanz"租赁付款号        legeb     
TYPE anla-legeb"租金        afasl     
TYPE anlb-afasl ,       "折旧码        ndjar     
TYPE anlb-ndjar ,       "使用年限        ndper     
TYPE anlb-ndper ,       "期间        afabg     
TYPE anlb-afabg"普通折旧开始日期        ndabj         
TYPE c LENGTH 3,"已过期使用年限        ndabp         
TYPE c LENGTH 3,"已过期使用期间      
END OF ty_download2,      

BEGIN OF ty_data,        light         
TYPE icon_d,        ztext         
TYPE char255,        bukrs         
TYPE anla-bukrs,         "公司代码        anlkl         
TYPE anla-anlkl,         "资产分类        anln1         
TYPE anla-anln1,        nassets       
TYPE ra02s-nassets,        txt50         
TYPE anla-txt50,         "描述1        txa50         
TYPE anla-txa50,         "描述2        sernr         
TYPE anla-sernr,         "序列号        invnr         
TYPE anla-invnr,         "库存编号        menge         
TYPE anla-menge,          "数量        meins         
TYPE anla-meins,          "单位        ivdat         
TYPE anla-ivdat,          "上次盘点日期        invzu         
TYPE anla-invzu,          "库存注释补充说明        aktiv         
TYPE anla-aktiv,          "资本化日期        zzjh          
TYPE anlu-zzjh   ,       "机号        zzsbgg        
TYPE anlu-zzsbgg ,       "设备规格        zzsblb        
TYPE anlu-zzsblb ,       "设备类别->设备SN号        zzsblx        
TYPE anlu-zzsblx ,       "设备类型        zzsfjg        
TYPE anlu-zzsfjg ,       "是否监管        zzxz          
TYPE anlu-zzxz   ,       "设备性质        zzjgqk        
TYPE anlu-zzjgqk ,       "监管情况        zzjgq         
TYPE anlu-zzjgq,           "监管日期        zzbz          
TYPE anlu-zzbz,          "备注        zzsfzr        
TYPE anlu-zzsfzr ,       "是否转让        zzazdz        
TYPE anlu-zzazdz ,       "安装地点        zzzt          
TYPE anlu-zzzt   ,        "状态        zzzrsj        
TYPE anlu-zzzrsj ,             "转让日期        zzzrdd        
TYPE anlu-zzzrdd ,        "转让地点        zzzrbz        
TYPE anlu-zzzrbz ,        "转让备注        zzesyrbz      
TYPE anlu-zzesyrbz,       "使用人备注        zzjsr         
TYPE anlu-zzjsr  ,        "接收人        zzgh          
TYPE anlu-zzgh   ,        "员工工号        zzsybm        
TYPE anlu-zzsybm,         "使用部门        zzeccn        
TYPE anlu-zzeccn       ,  "ECCN编码        zzreg_country 
TYPE anlu-zzreg_country,  "注册国家        zzcoo         
TYPE anlu-zzcoo        ,  "原始认证的发货国--原产地国        zzcntlv       
TYPE anlu-zzcntlv      ,  "管控等级        zzoaid        
TYPE anlu-zzoaid         ,  "OA系统编号        gsber         
TYPE anlz-gsber"业务范围        kostl         
TYPE anlz-kostl  ,       "成本中心        kostlv        
TYPE anlz-kostlv  ,       "责任成本中心        stort         
TYPE anlz-stort"位置        raumn         
TYPE anlz-raumn"房间        zzxmbh        
TYPE anlu-zzxmbh"国家专项        zzzjxz        
TYPE anlu-zzzjxz,         "资金性质        zzxmjd        
TYPE anlu-zzxmjd  ,       "项目阶段        zzdydqrq      
TYPE anlu-zzdydqrq,       "抵押到期日期        zzdyxz        
TYPE anlu-zzdyxz  ,       "抵押性质        zzstatus      
TYPE anlu-zzstatus"状态        zzhth         
TYPE anlu-zzhth  ,       "合同号        zztzwh        
TYPE anlu-zztzwh ,        "投资文号        zzdwggxm      
TYPE anlu-zzdwggxm,       "在建工程公告项目        zzstateid     
TYPE anlu-zzstateid  ,    "投资类型代码        zzmjzjxm      
TYPE anlu-zzmjzjxm,       "募集资金项目        zzanlkl       
TYPE anlu-zzanlkl"OA小分类        ord41         
TYPE anla-ord41,        "分厂        ord42         
TYPE anla-ord42,        "经济用途        ord43         
TYPE anla-ord43,        "使用情况        ord44         
TYPE anla-ord44,        "资产变动方式        anlue         
TYPE anla-anlue,        "资产特级号        lifnr         
TYPE anla-lifnr ,     "供应商        liefe         
TYPE anla-liefe"资产提供者名 --供应商名称        herst         
TYPE anla-herst"制造商        vbund         
TYPE anla-vbund"贸易伙伴编号        land1         
TYPE anla-land1"原产地国家        typbz         
TYPE anla-typbz"类型名称        aibn1         
TYPE anla-aibn1"原始资产        aibdt         
TYPE anla-aibdt"购置在        urjhr         
TYPE anla-urjhr"原始购置年度        urwrt         
TYPE anla-urwrt"原始购置值        antei         
TYPE anla-antei"厂内产品百分比        eaufn         
TYPE anla-eaufn ,       "投资订单        zzccrq        
TYPE anlu-zzccrq  ,       "出厂日期        zzjcrq        
TYPE anlu-zzjcrq  ,       "进厂日期        zzqyrq        
TYPE anlu-zzqyrq  ,       "启用日期        zzbxqx        
TYPE anlu-zzbxqx  ,       "保修期        zzgzjg        
TYPE anlu-zzgzjg  ,       "购置价格(元)        zzpgz         
TYPE anlu-zzpgz   ,       "财务评估值(元)        zzyf          
TYPE anlu-zzyf    ,       "运费(元)        zzazf         
TYPE anlu-zzazf   ,       "安装费(元)        zzqtfy        
TYPE anlu-zzqtfy       ,  "其他费用(元)        zzwbz         
TYPE anlu-zzwbz        ,  "外币值        zzshare       
TYPE anlu-zzshare,        "长期待摊用类型        leart         
TYPE anla-leart"类型        lbasw         
TYPE anla-lbasw"新基值        lkauf         
TYPE anla-lkauf"采购价格        leanz         
TYPE anla-leanz"租赁付款号        legeb         
TYPE anla-legeb"租金        afasl         
TYPE anlb-afasl ,       "折旧码        ndjar         
TYPE anlb-ndjar ,       "使用年限        ndper         
TYPE anlb-ndper ,       "期间        afabg         
TYPE anlb-afabg"普通折旧开始日期        ndabj         
TYPE c LENGTH 3"已过期使用年限        ndabp         
TYPE c LENGTH 3"已过期使用期间      
END OF ty_data.

TYPES:BEGIN OF ty_upload_data.        
INCLUDE TYPE ty_download.
TYPES:  light TYPE icon_d"指示灯        ztext 
TYPE char255"状态说明        sel   
TYPE c,      
END OF ty_upload_data.

TYPES:BEGIN OF ty_upload_data1.        
INCLUDE TYPE ty_download1.
TYPES:  light TYPE icon_d"指示灯        ztext 
TYPE char255"状态说明        sel   
TYPE c,      
END OF ty_upload_data1.

TYPES:BEGIN OF ty_upload_data2.        
INCLUDE TYPE ty_download2.
TYPES:  light TYPE icon_d"指示灯        ztext 
TYPE char255"状态说明        sel   
TYPE c,      
END OF ty_upload_data2.
*& ----end
DATA:lt_data      TYPE TABLE OF ty_download,     ls_data      
TYPE ty_download,     lt_upload    
TYPE TABLE OF ty_upload_data,     ls_upload    
TYPE ty_upload_data,     lt_data1     

TYPE TABLE OF ty_download1,     ls_data1     
TYPE ty_download1,     lt_data2     

TYPE TABLE OF ty_download2,     ls_data2     
TYPE ty_download2,     lt_main_data 

TYPE TABLE OF ty_data,     ls_main_data 
TYPE ty_data.

DATA:functxt  TYPE smp_dyntxt.
DATA:gs_layout    TYPE slis_layout_alv,     gt_fieldcat  
TYPE slis_t_fieldcat_alv,     gt_fieldcat1 
TYPE slis_t_fieldcat_alv,     gt_fieldcat2 
TYPE slis_t_fieldcat_alv.
DATA:   messtab LIKE bdcmsgcoll OCCURS WITH HEADER LINE.
FIELD-SYMBOLS:  <fs_fieldcat> 
TYPE slis_fieldcat_alv.
CONSTANTS:c_icon_red    TYPE icon_d VALUE '@5C@',          c_icon_green  
TYPE icon_d VALUE '@5B@',          c_icon_yellow 
TYPE icon_d VALUE '@5D@',          c_date        
TYPE c LENGTH VALUE './,-'.

SELECTION-SCREEN:BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-t01.  
PARAMETERS:p_bukrs TYPE anla-bukrs DEFAULT '1018' OBLIGATORY.  
SELECTION-SCREEN SKIP 1.  
PARAMETERS p_file TYPE char128.  
SELECTION-SCREENFUNCTION KEY .
SELECTION-SCREEN:END OF BLOCK bl1.

SELECTION-SCREEN:BEGIN OF BLOCK bl2 WITH FRAME TITLE TEXT-t02.  
PARAMETERS:r_r1 RADIOBUTTON GROUP g1  USER-COMMAND u1,             c_c1 
TYPE char1 AS CHECKBOX MODIF ID m1,             c_c2 
TYPE char1 AS CHECKBOX MODIF ID m1.  
PARAMETERS:r_r2 RADIOBUTTON GROUP g1 DEFAULT 'X'.

SELECTION-SCREEN:END OF BLOCK bl2.

INITIALIZATION.  
PERFORM frm_init_data.

AT SELECTION-SCREEN OUTPUT.  
PERFORM frm_selcet_screen_output.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.  
PERFORM frm_file_input.

AT SELECTION-SCREEN.  
CASE sscrfields-ucomm.    
WHEN 'FC01'.      
PERFORM frm_down_template .    
WHEN OTHERS.  
ENDCASE.


START-OF-SELECTION.  

PERFORM frm_check_screen.  
PERFORM frm_get_upload_data.  

IF r_r1 'X'.    
PERFORM frm_process_data.    
PERFORM frm_display_asset_data.  

ENDIF.  
IF r_r2 'X'.    
PERFORM frm_check_data.    
PERFORM frm_display_upload_data.  
ENDIF.


*&---------------------------------------------------------------------*
*&      Form  FRM_INIT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_init_data .  functxt
-icon_id   = icon_xls.  functxt
-icon_text '下载模板'.  sscrfields
-functxt_01 = functxt.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_FILE_INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_file_input .  
DATA:lt_tab         TYPE filetable,       ls_tab         
TYPE LINE OF filetable,       lv_file_filter 
TYPE string"file filter       lv_rc          
TYPE i.  
REFRESH:lt_tab.  
CLEAR:ls_tab,lv_file_filter,lv_rc.

* only for xls  lv_file_filter 
'Excel Files (*.xls)|*.xls|Excel Files (*.xlsx)|*.xlsx'.  

CALL METHOD cl_gui_frontend_services=>file_open_dialog    
EXPORTING      window_title            
'WINDOW_TITLE'      file_filter             
= lv_file_filter
*     initial_directory       = 'C:\'    
CHANGING      file_table              
= lt_tab      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.    
READ TABLE lt_tab INDEX INTO ls_tab.    
IF sy-subrc 0.      p_file 
= ls_tab.    
ENDIF.  
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_DOWN_TEMPLATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_down_template .  
DATA  lv_full_filenm   TYPE localfile.  
DATA: lc_path     TYPE string,        lc_file     
TYPE string,        lc_filter   
TYPE string,        lc_title    
TYPE string VALUE '请选择保存的路径及文件名',        lc_name     
TYPE string,        lv_fullpath 
TYPE string,        lv_tab      
TYPE char10.  
DATA lv_destination TYPE rlgrap-filename.  

DATA:lv_key   TYPE wwwdatatab,       lv_subrc 
TYPE sy-subrc.  
CLEAR:lv_full_filenm,lc_path,lc_file,lc_filter,lc_title,lc_name,lv_fullpath,        lv_destination
.  
CLEAR:lv_key,lv_subrc.  

CONCATENATE cl_gui_frontend_services=>filetype_excel              cl_gui_frontend_services
=>filetype_all         
INTO lc_filter.  
CLEAR lv_tab.  
IF r_r1 'X'.    
IF c_c1 'X'.      lv_tab 
'ZFICZ011_1'.      
CONCATENATE '期初主资产导入模板' '.' 'XLSX' INTO lc_name .    
ELSEIF c_c2 'X'.      lv_tab 
'ZFICZ011_2'.      
CONCATENATE '期初子资产导入模板' '.' 'XLSX' INTO lc_name .    
ENDIF.  
ELSEIF r_r2 'X'.    lv_tab 
'ZFICZ011'.    
CONCATENATE '期初资产价值导入模板' '.' 'XLSX' INTO lc_name .  
ENDIF.  


CALL METHOD cl_gui_frontend_services=>file_save_dialog    
EXPORTING      default_file_name 
= lc_name      window_title      
= lc_title      file_filter       
= lc_filter    
CHANGING      filename          
= lc_file      path              
= lc_path      fullpath          
= lv_fullpath.  

IF lv_fullpath IS INITIAL.    
MESSAGE s999 WITH '操作取消!'(007).    
RETURN.  
ELSE .    lv_full_filenm 
= lv_fullpath .  
ENDIF.  

SELECT SINGLE wwwdata~relid wwwdata~objid  
INTO CORRESPONDING FIELDS OF lv_key  
FROM  wwwdata  
WHERE wwwdata~relid 'MI'    
AND wwwdata~objid = lv_tab"'ZFICZ011'    
AND wwwdata~srtf2 0.  

IF sy-subrc <> 0.    
MESSAGE e000 WITH '模版文件不存在!'(006.     "The excel template  no existed !  
ENDIF.  lv_destination 

= lv_fullpath.  

CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'    
EXPORTING      
key         = lv_key      destination 
= lv_destination    
IMPORTING      rc          
= lv_subrc.  
IF lv_fullpath IS NOT INITIAL .    
IF sy-subrc NE 0.      
MESSAGE e000 WITH '下载失败!'(004.    
ELSE .      
MESSAGE s000 WITH '下载成功!'(005.    
ENDIF.  
ELSE .    
MESSAGE s000 WITH '请指定文件保存路径!'(008.  
ENDIF .
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_upload_data .  
DATA:BEGIN OF lt_excel OCCURS .         
INCLUDE STRUCTURE  zalsmex_tabline .  
DATA:END   OF lt_excel .  
DATA:ls_excel     LIKE LINE OF lt_excel,       lv_filename  
TYPE localfile,       lv_begin_col 
TYPE i,       lv_begin_row 
TYPE i,       lv_end_col   
TYPE i,       lv_end_row   
TYPE i.  
FIELD-SYMBOLS:<fs_field>.  

REFRESH lt_excel.  
CLEAR:lv_filename,lv_begin_col,lv_begin_row,lv_end_col,lv_end_row,ls_excel,lt_upload,ls_upload.

* 本地文件路径  lv_filename 
= p_file .  
IF r_r1 'X'.    
IF c_c1 'X'.      
"主资产      lv_begin_col 
2.      lv_begin_row 
4.      lv_end_col   
92.      lv_end_row   
10000.    
ENDIF.    
IF c_c2 'X'.      
"子资产      lv_begin_col 
2.      lv_begin_row 
4.      lv_end_col   
69.      lv_end_row   
10000.    
ENDIF.  
ENDIF.  

"资产价值  
IF r_r2 'X'.    lv_begin_col 
2.    lv_begin_row 
3.    lv_end_col   
19.    lv_end_row   
10000.  
ENDIF.



* 读取本地EXCEL文件数据  
CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'    
EXPORTING      filename                
= lv_filename      i_begin_col             
= lv_begin_col      i_begin_row             
= lv_begin_row      i_end_col               
= lv_end_col      i_end_row               
= lv_end_row    
TABLES      intern                  
= lt_excel    
EXCEPTIONS      inconsistent_parameters 
1      upload_ole              
2      
OTHERS                  3.  

IF lt_excel[] IS INITIAL.    
MESSAGE s001 DISPLAY LIKE 'E'.    
LEAVE LIST-PROCESSING.  
ENDIF.  

CLEAR:ls_upload,ls_data,lt_data,lt_upload,        ls_data1
,lt_data1,ls_data2,lt_data2,lt_main_data,ls_main_data.  

IF r_r1 'X'.    
"创建主资产    
IF c_c1 'X'.      
LOOP AT lt_excel INTO ls_excel.        
ASSIGN COMPONENT ls_excel-col OF STRUCTURE ls_data1 TO <fs_field>.        <fs_field> 
= ls_excel-value.        

AT END OF row.          
MOVE-CORRESPONDING ls_data1 TO ls_main_data.          
APPEND ls_main_data TO lt_main_data.          
CLEAR:ls_main_data,ls_data1.        
ENDAT.      
ENDLOOP.      

IF  lt_main_data IS INITIAL.        
MESSAGE s001 DISPLAY LIKE 'E'.        
LEAVE LIST-PROCESSING.      
ENDIF.    

ELSEIF c_c2 'X'.      
"创建子资产      
LOOP AT lt_excel INTO ls_excel.        
ASSIGN COMPONENT ls_excel-col OF STRUCTURE ls_data2 TO <fs_field>.        <fs_field> 
= ls_excel-value.        

AT END OF row.          
MOVE-CORRESPONDING ls_data2 TO ls_main_data.          
APPEND ls_main_data TO lt_main_data.          
CLEAR:ls_main_data,ls_data2.        
ENDAT.      
ENDLOOP.      

IF  lt_main_data IS INITIAL.        
MESSAGE s001 DISPLAY LIKE 'E'.        
LEAVE LIST-PROCESSING.      
ENDIF.    

ENDIF.  
ENDIF.  


"创建资产价值  
IF r_r2 'X'.    
LOOP AT lt_excel INTO ls_excel.      
ASSIGN COMPONENT ls_excel-col OF STRUCTURE ls_data TO <fs_field>.      <fs_field> 
= ls_excel-value.      

AT END OF row.        
MOVE-CORRESPONDING ls_data TO ls_upload.        
APPEND ls_upload TO lt_upload.        
CLEAR:ls_upload,ls_data.      
ENDAT.    
ENDLOOP.    

IF  lt_upload[] IS INITIAL.      
MESSAGE s001 DISPLAY LIKE 'E'.      
LEAVE LIST-PROCESSING.    
ENDIF.  
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_CHECK_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_check_data .  
DATA:lv_bukrs TYPE t001-bukrs.  

LOOP AT lt_upload INTO ls_upload.    ls_upload
-light = c_icon_yellow.    
"公司代码检查    
IF ls_upload-bukrs IS INITIAL.      ls_upload
-light = c_icon_red.      
CONCATENATE ls_upload-ztext '公司代码不能为空' INTO ls_upload-ztext SEPARATED BY ','.    
ELSE.      
CLEAR lv_bukrs.      
SELECT SINGLE bukrs INTO lv_bukrs FROM t001 WHERE bukrs = ls_upload-bukrs.      
IF lv_bukrs IS INITIAL.        ls_upload
-light = c_icon_red.        
CONCATENATE ls_upload-ztext '公司代码不存在' INTO ls_upload-ztext SEPARATED BY ','.      
ELSE.
*        AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
*         ID 'BUKRS' FIELD ls_upload-bukrs.
*        IF sy-subrc <> 0.
*          ls_upload-light = c_icon_red.
*          CONCATENATE ls_upload-ztext '您没有该公司权限' INTO ls_upload-ztext SEPARATED BY ','.
*        ENDIF.        
IF ls_upload-bukrs NE p_bukrs.          ls_upload
-light = c_icon_red.          
CONCATENATE ls_upload-ztext '公司代码与选择屏幕公司代码不一致' INTO ls_upload-ztext SEPARATED BY ','.        
ENDIF.      
ENDIF.    
ENDIF.    

IF ls_upload-gjahr IS INITIAL.      ls_upload
-light = c_icon_red.      
CONCATENATE ls_upload-ztext '会计年度不能为空' INTO ls_upload-ztext SEPARATED BY ','.    
ENDIF.    

IF ls_upload-anln1 IS INITIAL.      ls_upload
-light = c_icon_red.      
CONCATENATE ls_upload-ztext '主资产号不能为空' INTO ls_upload-ztext SEPARATED BY ','.    
ELSE.      ls_upload
-anln1 = |{ ls_upload-anln1 ALPHA IN }|.      ls_upload
-anln2 = |{ ls_upload-anln2 ALPHA IN }|.      
SELECT SINGLE anln1 INTO @DATA(lv_anln1)        
FROM anla        
WHERE bukrs = @ls_upload-bukrs          
AND anln1 = @ls_upload-anln1          
AND anln2 = @ls_upload-anln2.      
IF lv_anln1 IS INITIAL.        ls_upload
-light = c_icon_red.        
CONCATENATE ls_upload-ztext '资产号在该公司代码下不存在,请先创建资产' INTO ls_upload-ztext SEPARATED BY ','.      
ENDIF.    
ENDIF.    

IF ls_upload-aktiv IS NOT INITIAL.      
IF ls_upload-aktiv CA c_date.        ls_upload
-light = c_icon_red.        
CONCATENATE ls_upload-ztext '资本化日期不能包含任何字符,格式为YYYYMMDD' INTO ls_upload-ztext SEPARATED BY ','.      
ENDIF.    
ENDIF.    

MODIFY lt_upload FROM ls_upload.  
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_DISPLAY_UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_display_upload_data .  
REFRESH gt_fieldcat.  
CLEAR gs_layout.  
PERFORM frm_set_displayfield.  gs_layout
-zebra 'X'.  gs_layout
-colwidth_optimize 'X'.  gs_layout
-box_fieldname 'SEL'.  

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'    
EXPORTING
*     i_grid_title             = gv_title      i_callback_program       
= sy-repid      i_callback_pf_status_set 
'SET_PF_STATUS'      i_callback_user_command  
'USER_COMMAND'      is_layout                
= gs_layout      it_fieldcat              
= gt_fieldcat    
TABLES      t_outtab                 
= lt_upload    
EXCEPTIONS      program_error            
1      
OTHERS                   2.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_SET_DISPLAYFIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_set_displayfield .  
PERFORM frm_field_set TABLES gt_fieldcat USING 'LIGHT' '指示灯' '10'.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'ZTEXT' '消息' '20'.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'BUKRS' '公司代码' '8'.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'ANLN1' '主资产号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'ANLN2' '次级资产编号' ''.  

PERFORM frm_field_set TABLES gt_fieldcat USING 'GJAHR' '会计年度' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'KANSW' '资产价值' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'KAUFW' '当前年度减值' ''.  

PERFORM frm_field_set TABLES gt_fieldcat USING 'AFABE' '实际折旧范围' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'KNAFA' '资产以前年度折旧' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'NAFAG' '资产当前年度折旧' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'Y_DEP' '以前年度计划外折旧' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'D_DEP' '当前年度计划外折旧' ''.  

PERFORM frm_field_set TABLES gt_fieldcat USING 'AFABE1' '实际折旧范围' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'KNAFA1' '资产以前年度折旧' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'NAFAG1' '资产当前年度折旧' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'Y_DEP1' '以前年度计划外折旧' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'D_DEP1' '当前年度计划外折旧' ''.  

PERFORM frm_field_set TABLES gt_fieldcat USING 'ZFLG' '当前年度购入资产' ''.  
PERFORM frm_field_set TABLES gt_fieldcat USING 'AKTIV' '资本化日期' ''.



ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_FIELD_SET
*&---------------------------------------------------------------------*
FORM frm_field_set  TABLES   pt_fieldcat TYPE slis_t_fieldcat_alv                    
USING    p_fieldname                             p_seltext                             p_outputlen

.  

APPEND INITIAL LINE TO pt_fieldcat ASSIGNING <fs_fieldcat>.  <fs_fieldcat>
-fieldname = p_fieldname.  <fs_fieldcat>
-seltext_s = p_seltext.  <fs_fieldcat>
-seltext_m = p_seltext.  <fs_fieldcat>
-seltext_l = p_seltext.  <fs_fieldcat>
-outputlen = p_outputlen.

ENDFORM.

*----------------------------------------------------------------------*
* set_pf_status
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.  

SET PF-STATUS 'STATUS_01'.  
SET TITLEBAR 'TITLE_01'.

ENDFORM.

*----------------------------------------------------------------------*
* user_command
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm                                    rs_selfield 
TYPE slis_selfield.  
SORT lt_upload.  
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.  
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'    
IMPORTING      e_grid 
= lr_grid.  

CALL METHOD lr_grid->check_changed_data.  rs_selfield
-refresh 'X'.  "自动刷新  

CASE r_ucomm.    
WHEN 'ZUPLOAD'.      
IF r_r1 'X'.        
READ TABLE lt_main_data INTO ls_main_data WITH KEY light = c_icon_red.        
IF sy-subrc 0.          
MESSAGE s003 DISPLAY LIKE 'E'.          
RETURN.        
ENDIF.        
PERFORM frm_run_bapi.      

ENDIF.      
IF r_r2 'X'.        
READ TABLE lt_upload INTO ls_upload WITH KEY light = c_icon_red.        
IF sy-subrc 0.          
MESSAGE s003 DISPLAY LIKE 'E'.          
LEAVE LIST-PROCESSING.        
ELSE.          
READ TABLE lt_upload INTO ls_upload WITH KEY sel 'X'.          
IF sy-subrc <> 0.            
MESSAGE '请选择你要上传的数据' TYPE 'E'.            
LEAVE LIST-PROCESSING.          
ENDIF.          
READ TABLE lt_upload INTO ls_upload WITH KEY light = c_icon_green.          
IF sy-subrc 0.            
MESSAGE '数据已上传成功,请勿重复操作' TYPE 'S' DISPLAY LIKE 'E'.          
ELSE.            
PERFORM frm_upload_data.          
ENDIF.        

ENDIF.      
ENDIF.    
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.      
LEAVE TO SCREEN 0.  

ENDCASE.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  frm_upload_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_upload_data .  
DATA:lv_answer TYPE c,       x_options 
TYPE ctu_params,       lv_flg    
TYPE c.  
DATA:lw_key             TYPE TABLE OF bapi1022_key WITH HEADER LINE,       lt_cumulatedvalues 
TYPE TABLE OF bapi1022_cumval,       lt_postedvalues    
TYPE TABLE OF bapi1022_postval,       lt_transactions    
TYPE TABLE OF bapi1022_trtype,       lt_return          
TYPE TABLE OF bapiret2,       lw_return          
TYPE bapiret2.
* 弹出确认窗口  
CLEAR:lv_answer,lv_flg.  
CALL FUNCTION 'POPUP_TO_CONFIRM'    
EXPORTING      
titlebar       '确认窗口'      text_question  
'是否确认上传?'      text_button_1  
'确认'    
IMPORTING      answer         
= lv_answer    
EXCEPTIONS      text_not_found 
1      
OTHERS         2.  
CASE lv_answer.    
WHEN '1'.      

LOOP AT lt_upload INTO ls_upload.        ls_upload
-anln1 = |{ ls_upload-anln1 ALPHA IN }|.        ls_upload
-anln2 = |{ ls_upload-anln2 ALPHA IN }|.        

PERFORM frm_set_bapi_data TABLES lt_cumulatedvalues lt_postedvalues lt_transactions                                  
USING ls_upload CHANGING lw_key.        


CALL FUNCTION 'BAPI_FIXEDASSET_OVRTAKE_POST'          
EXPORTING            
key             = lw_key          
TABLES            cumulatedvalues 
= lt_cumulatedvalues            postedvalues    
= lt_postedvalues            transactions    
= lt_transactions            
return          = lt_return.        
CLEAR lv_flg.        
LOOP AT lt_return INTO lw_return WHERE type 'E' OR type 'A'.          
IF ls_upload-ztext IS INITIAL.            ls_upload
-ztext = lw_return-message.          
ELSE.            ls_upload
-ztext = ls_upload-ztext && ',' && lw_return-message.          
ENDIF.          lv_flg 
'X'.        
ENDLOOP.        
IF lv_flg ''.          ls_upload
-light = c_icon_green.          ls_upload
-ztext '上传成功'.          
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'            
EXPORTING              
wait 'X'.        
ELSE.          
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.          ls_upload
-light = c_icon_red.        
ENDIF.        
MODIFY lt_upload FROM ls_upload TRANSPORTING light ztext.      
ENDLOOP.    

WHEN OTHERS.  
ENDCASE.



ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_bapi_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LS_UPLOAD
*&      <-- KEY
*&      <-- LT_CUMULATEDVALUES
*&      <-- LT_POSTEDVALUES
*&      <-- LT_TRANSACTIONS
*&---------------------------------------------------------------------*
FORM frm_set_bapi_data TABLES p_cumulatedvalues STRUCTURE bapi1022_cumval                              p_postedvalues 
STRUCTURE bapi1022_postval                              p_transactions 
STRUCTURE bapi1022_trtype                       
USING   ps_upload TYPE ty_upload_data CHANGING p_key TYPE bapi1022_key.  
CLEAR:p_key,p_cumulatedvalues,p_postedvalues,p_transactions        
,p_cumulatedvalues[],p_postedvalues[],p_transactions[].  p_key

-companycode = ps_upload-bukrs.  p_key
-asset = ps_upload-anln1.  p_key
-subnumber = ps_upload-anln2.  
IF ps_upload-zflg ''.    
"01折旧范围    
IF ps_upload-afabe IS NOT INITIAL .      p_cumulatedvalues
-fisc_year = ps_upload-gjahr.      p_cumulatedvalues
-area = ps_upload-afabe."折旧范围      p_cumulatedvalues
-acq_value = ps_upload-kansw."资产价值      p_cumulatedvalues
-rev_repl = ps_upload-kaufw."减值      p_cumulatedvalues
-ord_dep = ps_upload-knafa."以前年度折旧      p_cumulatedvalues
-unp_dep = ps_upload-y_dep."以前年度计划外折旧      
APPEND p_cumulatedvalues.    
ENDIF.    

"32折旧范围    
IF ps_upload-afabe1 IS NOT INITIAL.      p_cumulatedvalues
-fisc_year = ps_upload-gjahr.      p_cumulatedvalues
-area = ps_upload-afabe1."折旧范围      p_cumulatedvalues
-acq_value = ps_upload-kansw."资产价值      p_cumulatedvalues
-rev_repl = ps_upload-kaufw."减值      p_cumulatedvalues
-ord_dep = ps_upload-knafa1."以前年度折旧      p_cumulatedvalues
-unp_dep = ps_upload-y_dep1."以前年度计划外折旧      
APPEND p_cumulatedvalues.    
ENDIF.  

ELSE.    
"01    
IF ps_upload-afabe IS NOT INITIAL.      p_transactions
-fisc_year = ps_upload-gjahr.      p_transactions
-current_no '000001'.      p_transactions
-area = ps_upload-afabe.      p_transactions
-valuedate = ps_upload-aktiv.      p_transactions
-assettrtyp '100'."资产交易类型      p_transactions
-amount = ps_upload-kansw."资产价值      
IF ps_upload-d_dep IS NOT INITIAL."当前年计划外折旧        p_transactions
-assettrtyp '650'.      
ENDIF.      
APPEND p_transactions.    
ENDIF.    
"32    
IF ps_upload-afabe1 IS NOT INITIAL.      p_transactions
-fisc_year = ps_upload-gjahr.      p_transactions
-current_no '000001'.      p_transactions
-area = ps_upload-afabe1.      p_transactions
-valuedate = ps_upload-aktiv.      p_transactions
-assettrtyp '100'."资产交易类型      p_transactions
-amount = ps_upload-kansw."资产价值      
IF ps_upload-d_dep1 IS NOT INITIAL."当前年计划外折旧        p_transactions
-assettrtyp '650'.      
ENDIF.      
APPEND p_transactions.    
ENDIF.  

ENDIF.  
"01  
IF ps_upload-afabe IS NOT INITIAL.    p_postedvalues
-fisc_year = ps_upload-gjahr.    p_postedvalues
-area = ps_upload-afabe.    p_postedvalues
-ord_dep = ps_upload-nafag.    p_postedvalues
-unp_dep = ps_upload-d_dep."当前年度计划外折旧    
APPEND p_postedvalues.  
ENDIF.  
"32  
IF ps_upload-afabe1 IS NOT INITIAL .    p_postedvalues
-fisc_year = ps_upload-gjahr.    p_postedvalues
-area = ps_upload-afabe1.    p_postedvalues
-ord_dep = ps_upload-nafag1.    p_postedvalues
-unp_dep = ps_upload-d_dep1."当前年度计划外折旧    
APPEND p_postedvalues.  
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_screen
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_check_screen .  
IF p_file IS INITIAL.    
MESSAGE '请选择需要上传的文件!' TYPE 'S' DISPLAY LIKE 'E'.    
LEAVE LIST-PROCESSING.  
ENDIF.  
IF r_r1 'X'.    
IF c_c1 IS INITIAL AND c_c2 IS INITIAL.      
MESSAGE '请选择创建主资产还是子资产!' TYPE 'S' DISPLAY LIKE 'E'.      
LEAVE LIST-PROCESSING.    
ENDIF.    
IF c_c1 IS NOT INITIAL AND c_c2 IS NOT INITIAL.      
MESSAGE '主资产和子资产导入只能选择一项!' TYPE 'S' DISPLAY LIKE 'E'.      
LEAVE LIST-PROCESSING.    
ENDIF.  
ENDIF.  

AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'   
ID 'BUKRS' FIELD p_bukrs   
ID 'ACTVT' FIELD '03'.  
IF sy-subrc <> 0.    
MESSAGE s800(frWITH p_bukrs DISPLAY LIKE 'E'.    
LEAVE LIST-PROCESSING.  
ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_asset_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_process_data .  
DATA:lv_flg TYPE c.  
IF lt_main_data IS NOT INITIAL.    
LOOP AT lt_main_data INTO ls_main_data.      ls_main_data

-light = c_icon_yellow.      
IF ls_main_data-bukrs <> p_bukrs.        ls_main_data
-ztext 'EXCEL中公司代码与筛选屏幕输入的公司代码不一致!'.        ls_main_data
-light = c_icon_red.      
ENDIF.      

IF ls_main_data-anlkl IS NOT INITIAL.        
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'          
EXPORTING            
input  = ls_main_data-anlkl          
IMPORTING            
output = ls_main_data-anlkl.      
ENDIF.      

"成本中心、责任成本中心增加前导0      

IF ls_main_data-kostl IS NOT INITIAL.        
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'          
EXPORTING            
input  = ls_main_data-kostl          
IMPORTING            
output = ls_main_data-kostl.      
ENDIF.      

IF ls_main_data-kostlv IS NOT INITIAL.        
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'          
EXPORTING            
input  = ls_main_data-kostlv          
IMPORTING            
output = ls_main_data-kostlv.      
ENDIF.      
IF ls_main_data-anln1 IS NOT INITIAL.        
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'          
EXPORTING            
input  = ls_main_data-anln1          
IMPORTING            
output = ls_main_data-anln1.      
ENDIF.      
"内外部单位      
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'        
EXPORTING          
input    = ls_main_data-meins          
language = sy-langu        
IMPORTING          
output   = ls_main_data-meins.      

"在建工程公告      
IF ls_main_data-zzdwggxm IS NOT INITIAL.        
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'          
EXPORTING            
input  = ls_main_data-zzdwggxm          
IMPORTING            
output = ls_main_data-zzdwggxm.      
ENDIF.      

CLEAR lv_flg.      

PERFORM frm_check_amount CHANGING ls_main_data-zzgzjg lv_flg.      
PERFORM frm_check_amount CHANGING ls_main_data-zzpgz lv_flg.      
PERFORM frm_check_amount CHANGING ls_main_data-zzyf lv_flg.      
PERFORM frm_check_amount CHANGING ls_main_data-zzazf lv_flg.      
PERFORM frm_check_amount CHANGING ls_main_data-zzqtfy lv_flg.      
IF lv_flg 'X'.        ls_main_data
-ztext '金额字段格式不正确,不能带有金额分割符!'.        ls_main_data
-light = c_icon_red.      
ENDIF.      

CLEAR lv_flg."金额长度不一致 分开校验      
PERFORM frm_check_amount1 CHANGING ls_main_data-urwrt lv_flg.      
PERFORM frm_check_amount1 CHANGING ls_main_data-lbasw lv_flg.      
PERFORM frm_check_amount1 CHANGING ls_main_data-lkauf lv_flg.      
PERFORM frm_check_amount1 CHANGING ls_main_data-legeb lv_flg.      
IF lv_flg 'X'.        ls_main_data
-ztext '金额字段格式不正确,不能带有金额分割符!'.        ls_main_data
-light = c_icon_red.      
ENDIF.      

CLEAR lv_flg.      
PERFORM frm_check_date CHANGING ls_main_data-ivdat lv_flg."上次盘点日期      
PERFORM frm_check_date CHANGING ls_main_data-aktiv lv_flg."资本化日期      
PERFORM frm_check_date CHANGING ls_main_data-zzjgq lv_flg."监管日期      
PERFORM frm_check_date CHANGING ls_main_data-zzzrsj lv_flg."转让日期      
PERFORM frm_check_date CHANGING ls_main_data-zzdydqrq lv_flg."抵押到期日期      
PERFORM frm_check_date CHANGING ls_main_data-aibdt lv_flg."原始购置日期      
PERFORM frm_check_date CHANGING ls_main_data-zzccrq lv_flg."出厂日期      
PERFORM frm_check_date CHANGING ls_main_data-zzjcrq lv_flg."进厂日期      
PERFORM frm_check_date CHANGING ls_main_data-zzqyrq lv_flg."启用日期      
PERFORM frm_check_date CHANGING ls_main_data-afabg lv_flg."折旧开始日期      
IF lv_flg 'X'.        ls_main_data
-ztext '日期格式不正确,应为8位不带符号的YYYYMMDD格式!'.        ls_main_data
-light = c_icon_red.      
ENDIF.      
"数据检查      
PERFORM check_asset_data CHANGING ls_main_data .      

MODIFY lt_main_data FROM ls_main_data.    
ENDLOOP.  
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form check_asset_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM check_asset_data CHANGING ps_main_data TYPE ty_data.  
IF ps_main_data-bukrs IS INITIAL.    ps_main_data
-ztext = ps_main_data-ztext && ',' && '公司代码不能为空'.    ps_main_data
-light = c_icon_red.  
ELSE.    
SELECT SINGLE bukrs INTO @DATA(lv_bukrsFROM t001 WHERE bukrs = @ps_main_data-bukrs.    
IF lv_bukrs IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '公司代码不存在'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  
"主资产  
IF c_c1 'X'.    
IF ps_main_data-anlkl IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '资产分类不能为空'.      ps_main_data
-light = c_icon_red.    
ELSE.      
SELECT SINGLE anlkl INTO @DATA(lv_anlkl1FROM anka WHERE anlkl = @ps_main_data-anlkl AND xloev ''.      
IF lv_anlkl1 IS INITIAL.        ps_main_data
-ztext = ps_main_data-ztext  && ';' && '资产分类不存在'.        ps_main_data
-light = c_icon_red.      
ELSE.        
IF ps_main_data-anlkl+0(2'Z9'.          
IF ps_main_data-ndabj IS INITIAL.            ps_main_data
-ztext = ps_main_data-ztext  && ';' && '已过期使用年限不能为空'.            ps_main_data
-light = c_icon_red.          
ENDIF.          
IF ps_main_data-ndabp IS INITIAL.            ps_main_data
-ztext = ps_main_data-ztext  && ';' && '到期使用期限不能为空'.            ps_main_data
-light = c_icon_red.          
ENDIF.        
ENDIF.      
ENDIF.    
ENDIF.  

ENDIF.  
"子资产  
IF c_c2 'X'.    
IF ps_main_data-anln1 IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '创建子资产时资产号不能为空'.      ps_main_data
-light = c_icon_red.    
ELSE.      
SELECT SINGLE anln1 INTO @DATA(lv_anln1FROM anla WHERE bukrs = @ps_main_data-bukrs AND anln1 = @ps_main_data-anln1.      
IF lv_anln1 IS INITIAL.        ps_main_data
-ztext = ps_main_data-ztext  && ';' && '资产编号不存在!'.        ps_main_data
-light = c_icon_red.      
ELSE.        
IF ps_main_data-nassets OR ps_main_data-nassets IS INITIAL.          ps_main_data
-ztext = ps_main_data-ztext  && ';' && '创建子资产时,资产子编号数量必须大于0!'.          ps_main_data
-light = c_icon_red.        
ELSEIF ps_main_data-nassets > 100.          ps_main_data
-ztext = ps_main_data-ztext  && ';' && '子资产创建个数不能超过100!'.          ps_main_data
-light = c_icon_red.        
ENDIF.      
ENDIF.    
ENDIF.  
ENDIF.  
"描述1  
IF ps_main_data-txt50 IS INITIAL.    ps_main_data
-ztext = ps_main_data-ztext  && ';' && '描述1不能为空'.    ps_main_data
-light = c_icon_red.  
ENDIF.

*  "描述2
*  IF ps_main_data-txa50 IS INITIAL.
*    ps_main_data-ztext = ps_main_data-ztext  && ';' && '描述2不能为空'.
*    ps_main_data-light = c_icon_red.
*  ENDIF.
*
*  "数量
*  IF ps_main_data-menge IS INITIAL.
*    ps_main_data-ztext = ps_main_data-ztext  && ';' && '数量不能为空'.
*    ps_main_data-light = c_icon_red.
*  ENDIF.  
"单位  
IF ps_main_data-meins IS NOT INITIAL.    
SELECT SINGLE msehi INTO @DATA(lv_meinsFROM t006 WHERE msehi = @ps_main_data-meins.    
IF lv_meins IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '单位不存在'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  
"成本中心  
IF ps_main_data-kostl IS INITIAL.    ps_main_data
-ztext = ps_main_data-ztext  && ';' && '成本中心不能为空'.    ps_main_data
-light = c_icon_red.  
ELSE.    
IF ps_main_data-bukrs IS NOT INITIAL.      
SELECT SINGLE kostl INTO @DATA(lv_kostlFROM csks WHERE kokrs '1000' AND bukrs = @ps_main_data-bukrs AND kostl = @ps_main_data-kostl.      
IF lv_kostl IS INITIAL.        ps_main_data
-ztext = ps_main_data-ztext  && ';' && '成本中心不存在'.        ps_main_data
-light = c_icon_red.      
ENDIF.    
ENDIF.  
ENDIF.  

"责任成本中心  
IF ps_main_data-bukrs IS NOT INITIAL AND ps_main_data-kostlv IS NOT INITIAL.    
SELECT SINGLE kostl INTO @DATA(lv_kostlvFROM csks WHERE kokrs '1000' AND bukrs = @ps_main_data-bukrs AND kostl = @ps_main_data-kostlv.    
IF lv_kostlv IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '责任成本中心不存在'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  
"状态  
DATA:lv_zt   TYPE string,       lv_zt_l 
TYPE string.  
DATA:it_taba TYPE STANDARD TABLE OF dd07v,       it_tabb 
TYPE STANDARD TABLE OF dd07v.  
CLEAR:lv_zt,lv_zt_l,it_taba.  
CALL FUNCTION 'DD_DOMA_GET'    
EXPORTING      domain_name   
'ZDSTAT'
*     get_state     = 'm'      langu         
= sy-langu
*     prid          = 0      withtext      
'X'    
TABLES      dd07v_tab_a   
= it_taba      dd07v_tab_n   
= it_tabb    
EXCEPTIONS      illegal_value 
1      op_failure    
2      
OTHERS        3.  
IF sy-subrc <> 0.  
ENDIF.  

LOOP AT it_taba INTO DATA(ls_taba1).    
CONCATENATE ls_taba1-domvalue_l lv_zt INTO lv_zt SEPARATED BY ','.    
CONCATENATE ls_taba1-ddtext lv_zt_l INTO lv_zt_l SEPARATED BY ','.  
ENDLOOP.  
IF ps_main_data-zzstatus IS NOT INITIAL.    
IF lv_zt CO ps_main_data-zzstatus.    
ELSE.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '状态不存在,只能填入:' && lv_zt && ',描述为:' && lv_zt_l.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  
"在建工程公告项目  
IF ps_main_data-zzdwggxm IS NOT INITIAL.    
SELECT SINGLE zzdwggxm INTO @DATA(lv_zzdwggxmFROM ztfi0076 WHERE bukrs = @ps_main_data-bukrs AND zzdwggxm = @ps_main_data-zzdwggxm .    
IF lv_zzdwggxm IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && '项目不存在ZTFI0076表'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  

"投资类型代码  
IF ps_main_data-zzstateid IS NOT INITIAL.    
SELECT SINGLE zzstateid INTO @DATA(lv_zzstateidFROM ztfi_aux_type WHERE zzstateid = @ps_main_data-zzstateid AND spras = @sy-langu.    
IF lv_zzstateid IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '投资类型代码不存在'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  

"募集资金项目  
IF ps_main_data-bukrs IS NOT INITIAL AND ps_main_data-zzmjzjxm IS NOT INITIAL.    
SELECT SINGLE zzmjzjxm INTO @DATA(lv_mjzjxmFROM ztfi0079 WHERE bukrs = @ps_main_data-bukrs AND zzmjzjxm = @ps_main_data-zzmjzjxm.    
IF lv_mjzjxm IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '募集资金项目不存在'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  

"摊销费用类型  
IF ps_main_data-anlkl 'Z7100' OR ps_main_data-anlkl 'Z7200'  OR ps_main_data-anlkl 'Z7300'.    

IF ps_main_data-zzshare IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '摊销费用类型不能为空'.      ps_main_data
-light = c_icon_red.    
ELSE.      
IF ps_main_data-bukrs IS NOT INITIAL.        
SELECT SINGLE zzshare INTO @DATA(lv_zzshareFROM ztfi0001 WHERE bukrs = @ps_main_data-bukrs AND zzshare = @ps_main_data-zzshare.        
IF lv_zzshare IS INITIAL.          ps_main_data
-ztext = ps_main_data-ztext  && ';' && '摊销费用类型不存在'.          ps_main_data
-light = c_icon_red.        
ENDIF.      
ENDIF.    
ENDIF.  
ENDIF.  

"厂内产品百分比  
IF ps_main_data-antei IS NOT INITIAL.    
DATA lv_antei TYPE c LENGTH 25.    lv_antei 
= ps_main_data-antei.    
IF lv_antei CA '%'.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '厂内产品百分比不能带%号'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  
"是否监管  
IF ps_main_data-zzsfjg IS NOT INITIAL.    
IF ps_main_data-zzsfjg 'Y' OR ps_main_data-zzsfjg 'N'.    
ELSE.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '是否监管只能填入Y或N'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  
"是否转让  
IF ps_main_data-zzsfzr IS NOT INITIAL.    
IF ps_main_data-zzsfzr 'Y' OR ps_main_data-zzsfzr 'N'.    
ELSE.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '是否转让只能填入Y或N'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  
"折旧码不为空时,计划使用年限和期间不能为空  
IF ps_main_data-afasl IS NOT INITIAL.    
IF ps_main_data-ndjar IS INITIAL AND ps_main_data-ndper IS INITIAL.      ps_main_data
-ztext = ps_main_data-ztext  && ';' && '输入折旧码时,使用年限、使用期间不能为空'.      ps_main_data
-light = c_icon_red.    
ENDIF.  
ENDIF.  

"资本化日期 AKTIV  
IF ps_main_data-aktiv IS INITIAL.    ps_main_data
-ztext = ps_main_data-ztext  && ';' && '资本化日期不能为空'.    ps_main_data
-light = c_icon_red.  
ENDIF.

*  IF ps_main_data-anlkl+0(2) = 'Z9'.
*    IF ps_main_data-eaufn IS INITIAL.
*      ps_main_data-light = c_icon_red.
*      CONCATENATE ps_main_data-ztext '在建工程类型创建时投资订单不能为空' INTO ps_main_data-ztext SEPARATED BY ','.
*    ENDIF.
*  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_amount
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- LS_MAIN_DATA_ZZGZJG
*&      <-- LV_FLG
*&---------------------------------------------------------------------*
FORM frm_check_amount  CHANGING cv_field TYPE zegzjg cv_flg TYPE c.  
DATA:lv_amount TYPE c LENGTH 20.  lv_amount 
= cv_field.  
DATA(lv_symbol',,。'.  
IF lv_amount CA lv_symbol.    cv_flg 
'X'.  
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_amount1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- LS_MAIN_DATA_URWRT
*&      <-- LV_FLG
*&---------------------------------------------------------------------*
FORM frm_check_amount1  CHANGING cv_field TYPE urwrt cv_flg TYPE c.  
DATA:lv_amount TYPE c LENGTH 25.  lv_amount 
= cv_field.  
DATA(lv_symbol',,。'.  
IF lv_amount CA lv_symbol.    cv_flg 
'X'.  
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_check_date
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- LS_MAIN_DATA_AIBDT
*&      <-- LV_FLG
*&---------------------------------------------------------------------*
FORM frm_check_date  CHANGING cv_field TYPE sy-datum cv_flg TYPE c.  
DATA(lv_symbol',,。.-/\'.  
IF cv_field CA lv_symbol.    cv_flg 
'X'.  
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_display_asset_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_display_asset_data .  
REFRESH gt_fieldcat1.  
CLEAR gs_layout.  
PERFORM frm_set_displayfield1.  gs_layout
-zebra 'X'.  gs_layout
-colwidth_optimize 'X'.
*  gs_layout-box_fieldname = 'SEL'.  

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'    
EXPORTING
*     i_grid_title             = gv_title      i_callback_program       
= sy-repid      i_callback_pf_status_set 
'SET_PF_STATUS'      i_callback_user_command  
'USER_COMMAND'      is_layout                
= gs_layout      it_fieldcat              
= gt_fieldcat1    
TABLES      t_outtab                 
= lt_main_data    
EXCEPTIONS      program_error            
1      
OTHERS                   2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_displayfield1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_displayfield1 .  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LIGHT' '指示灯' '10'.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZTEXT' '消息' '20'.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'BUKRS' '公司代码' '8'.  
IF c_c1 'X'.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ANLKL' '资产分类' ''.  
ENDIF.  
IF c_c2 'X'.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ANLN1' '资产主编号' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'NASSETS' '资产子编号数量' ''.  
ENDIF.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'TXT50' '描述1' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'TXA50' '描述2' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'SERNR' '序列号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'INVNR' '库存编号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'MENGE' '数量' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'MEINS' '单位' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'IVDAT' '上次盘点日期' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'INVZU' '库存注释' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'AKTIV' '资本化日期' ''.  
IF c_c1 'X'.    

PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZJH' '机号' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSBGG' '设备规格' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSBLB' '设备SN号' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSBLX' '设备类型' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSFJG' '是否监管' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZXZ' '设备性质' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZJGQK' '监管情况' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZJGQ' '监管日期' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZBZ' '备注' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSFZR' '是否转让' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZAZDZ' '安装地点' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZZT' '状态' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZZRSJ' '转让日期' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZZRDD' '转让地点' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZZRBZ' '转让备注' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZESYRBZ' '使用人备注' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZJSR' '接收人' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZGH' '员工号' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSYBM' '使用部门' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZECCN' 'ECCN编码' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZREG_COUNTRY' '注册国家' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZCOO' '原产地国' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZCNTLV' '管控等级' ''.    
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZOAID' 'OA系统编号' ''.  

ENDIF.  

PERFORM frm_field_set TABLES gt_fieldcat1 USING 'GSBER' '业务范围' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'KOSTL' '成本中心' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'KOSTLV' '责任成本中心' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'STORT' '位置' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'RAUMN' '房间' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZXMBH' '国家专项' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZZJXZ' '资金性质' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZXMJD' '项目阶段' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZDYDQRQ' '抵押到期日期' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZDYXZ' '抵押性质' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSTATUS' '状态' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZHTH' '合同号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZTZWH' '投资文号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZDWGGXM' '在建工程公告项目' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSTATEID' '投资类型代码' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZMJZJXM' '募集资金项目' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZANLKL' 'OA小分类' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ORD41' '分厂' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ORD42' '经济用途' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ORD43' '使用情况' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ORD44' '资产变动方式' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ANLUE' '资产特级号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LIFNR' '供应商' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LIEFE' '供应商名称' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'HERST' '制造商' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'VBUND' '贸易伙伴编号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LAND1' '原产地国家' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'TYPBZ' '类型名称' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'AIBN1' '原始资产' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'AIBDT' '购置在' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'URJHR' '原始购置年度' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'URWRT' '原始购置值' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ANTEI' '厂内产品百分比' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'EAUFN' '投资订单' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZCCRQ' '出厂日期' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZJCRQ' '进厂日期' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZQYRQ' '启用日期' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZBXQX' '保修期' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZGZJG' '购置价格(元)' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZPGZ' '财务评估值(元)' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZYF' '运费(元)' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZAZF' '安装费(元)' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZQTFY' '其它费用(元)' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZWBZ' '外币值' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'ZZSHARE' '长期待摊费用类型' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LEART' '类型' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LBASW' '新基值' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LKAUF' '采购价格' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LEANZ' '租赁付款号' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'LEGEB' '租金' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'AFASL' '折旧码' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'NDJAR' '使用年限' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'NDPER' '期间' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'AFABG' '普通折旧开始日期' ''.  

PERFORM frm_field_set TABLES gt_fieldcat1 USING 'NDABJ' '已过期使用年限' ''.  
PERFORM frm_field_set TABLES gt_fieldcat1 USING 'NDABP' '已过期使用期间' ''.


ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_run_bapi
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_run_bapi .  
DATA: ls_key                  TYPE bapi1022_key,        l_asset                 
TYPE bapi1022_1-assetmaino,        ls_generaldata          
TYPE bapi1022_feglg001,        ls_generaldatax         
TYPE bapi1022_feglg001x,        ls_createsubnumber      
TYPE bapi1022_misc-xsubno,        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,        ls_leasing              
TYPE bapi1022_feglg005"租赁        ls_leasingx             
TYPE bapi1022_feglg005x"租赁        ls_networthvaluation    
TYPE bapi1022_feglg006,        ls_networthvaluationx   
TYPE bapi1022_feglg006x,        ls_origin               
TYPE bapi1022_feglg009,        ls_originx              
TYPE bapi1022_feglg009x,        ls_investacctassignmnt  
TYPE bapi1022_feglg010"源--投资订单        ls_investacctassignmntx 
TYPE bapi1022_feglg010x"源--投资订单        lt_depreciationareas    
TYPE STANDARD TABLE OF bapi1022_dep_areas,        lt_depreciationareasx   
TYPE STANDARD TABLE OF bapi1022_dep_areasx,        ls_depreciationareas    
TYPE bapi1022_dep_areas,        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,        lt_extensionin          
TYPE TABLE OF bapiparex,        ls_extensionin          
TYPE bapiparex,        ls_assetcreated         
TYPE bapi1022_reference,        lt_return               
TYPE STANDARD TABLE OF bapiret2,        ls_return               
TYPE bapiret2.  
DATA: lv_afapl TYPE ankb-afapl,        ls_anlu  
TYPE anlu,        lv_flg   
TYPE c,        lv_time  
TYPE n.  
DATA: ls_inventory  TYPE  bapi1022_feglg011,        ls_inventoryx 
TYPE  bapi1022_feglg011x.  
LOOP AT lt_main_data INTO ls_main_data.    
CLEAR lv_time.    
IF c_c1 'X'.      lv_time 
1.    
ELSEIF c_c2 'X'.      lv_time 
=  ls_main_data-nassets.    
ENDIF.    

DO lv_time TIMES.      
CLEAR:ls_key,ls_generaldata,ls_generaldatax,ls_timedependentdata,ls_timedependentdatax,ls_postinginformation,ls_postinginformationx,            ls_allocations
,ls_allocationsx,ls_networthvaluation,ls_networthvaluationx,ls_origin,ls_originx,ls_createsubnumber,            lt_depreciationareas
,lt_depreciationareasx,lt_extensionin,ls_extensionin,lt_return,ls_return,lv_flg,l_asset.      ls_key

-companycode = ls_main_data-bukrs.      ls_key
-subnumber = ls_main_data-nassets.      ls_generaldata

-descript = ls_main_data-txt50.      ls_generaldata
-descript2 = ls_main_data-txa50.      
IF c_c1 'X'."主资产        ls_generaldata
-assetclass = ls_main_data-anlkl.        ls_generaldata
-acct_detrm = ls_generaldata-assetclass.  "科目定位码      
ENDIF.      

IF c_c2 'X'."子资产        ls_key
-asset = ls_main_data-anln1.        ls_createsubnumber 
'X'.      
ENDIF.      ls_generaldata

-serial_no     = ls_main_data-sernr.  "序列号      ls_generaldata
-quantity      = ls_main_data-menge.  "数量      ls_generaldata
-base_uom      = ls_main_data-meins.  "单位      ls_generaldata
-invent_no     = ls_main_data-invnr.  "存货号      ls_generaldatax

-assetclass 'X'.      ls_generaldatax
-descript   'X'.      ls_generaldatax
-descript2  'X'.      ls_generaldatax
-serial_no  'X'.      ls_generaldatax
-quantity   'X'.      ls_generaldatax
-base_uom   'X'.      ls_generaldatax
-invent_no  'X'.      ls_postinginformation

-cap_date = ls_main_data-aktiv.      ls_postinginformationx
-cap_date 'X'.

*&时间相关      ls_timedependentdata
-bus_area   = ls_main_data-gsber.  "业务范围      ls_timedependentdata
-costcenter  = ls_main_data-kostl"成本中心      ls_timedependentdata
-resp_cctr   = ls_main_data-kostlv."责任成本中心      ls_timedependentdata
-location   = ls_main_data-stort."位置      ls_timedependentdata
-room        = ls_main_data-raumn"房间      

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'        
EXPORTING          
input  = ls_main_data-eaufn        
IMPORTING          
output = ls_main_data-eaufn.      ls_timedependentdatax
-bus_area 'X'.      ls_timedependentdatax
-costcenter 'X'.      ls_timedependentdatax
-resp_cctr  'X' .      ls_timedependentdatax
-location  'X' .      ls_timedependentdatax
-room       'X' .
*&分配      ls_allocations
-evalgroup1 = ls_main_data-ord41."分厂      ls_allocations
-evalgroup2 = ls_main_data-ord42."经济用途      ls_allocations
-evalgroup3 = ls_main_data-ord43."使用情况      ls_allocations
-evalgroup4 = ls_main_data-ord44."资产变动方式      ls_allocations

-assetsupno = ls_main_data-anlue."资产特级号      ls_allocationsx

-evalgroup1 'X'.      ls_allocationsx
-evalgroup2 'X'.      ls_allocationsx
-evalgroup3 'X'.      ls_allocationsx
-evalgroup4 'X'.      ls_allocationsx
-assetsupno 'X'.
*&源      ls_origin
-vendor_no = ls_main_data-lifnr."供应商编号      ls_origin
-vendor = ls_main_data-liefe."供应商名称      ls_origin
-manufacturer = ls_main_data-herst."制造商
*&投资订单      ls_investacctassignmnt
-invest_ord = ls_main_data-eaufn.      ls_investacctassignmntx
-invest_ord 'X'.      

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'        
EXPORTING          
input  = ls_main_data-vbund        
IMPORTING          
output = ls_main_data-vbund.      ls_origin
-trade_id = ls_main_data-vbund."贸易伙伴编号      ls_origin
-country = ls_main_data-land1."原产地国家      ls_origin
-type_name = ls_main_data-typbz."类型名称      
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'        
EXPORTING          
input  = ls_main_data-aibn1        
IMPORTING          
output = ls_main_data-aibn1.      ls_origin
-orig_asset = ls_main_data-aibn1."原始资产      ls_origin
-orig_acq_date = ls_main_data-aibdt."购置在      ls_origin
-orig_acq_yr = ls_main_data-urjhr."原始购置年度      ls_origin
-orig_value = ls_main_data-urwrt."原始值      ls_origin
-inhouse_prod_percentage = ls_main_data-antei."场内产品百分比
*  lw_original_copy-inhouse_prod_percentage = i_data-eaufn."投资订单      ls_originx
-vendor_no 'X'.      ls_originx
-vendor 'X'.      ls_originx
-manufacturer 'X'.      ls_originx
-trade_id 'X'.      ls_originx
-country 'X'.      ls_originx
-type_name 'X'.      ls_originx
-orig_asset 'X'.      ls_originx
-orig_acq_date 'X'.      ls_originx
-orig_acq_year 'X'.      ls_originx
-orig_value 'X'.      ls_originx
-inhouse_prod_percentage 'X'.

*&租赁      ls_leasing
-type = ls_main_data-leart."类型      ls_leasing
-base_value = ls_main_data-lbasw."新基值      ls_leasing
-purchprice = ls_main_data-lkauf."采购价格      ls_leasing
-no_paymnts = ls_main_data-leanz."租赁付款号      ls_leasing
-payment = ls_main_data-legeb."租金      ls_leasingx

-type 'X'."类型      ls_leasingx
-base_value 'X'."新基值      ls_leasingx
-purchprice 'X'."采购价格      ls_leasingx
-no_paymnts 'X'."租赁付款号      ls_leasingx
-payment 'X'."租金
*&折旧范围      
IF ls_main_data-anlkl+0(2'Z9'."在建工程无折旧        ls_depreciationareas
-area '01'.        ls_depreciationareas
-dep_key '0000'."折旧码        ls_depreciationareas
-ulife_yrs ''."使用年限        ls_depreciationareas
-ulife_prds ''."期间        ls_depreciationareas
-odep_start_date '00000000'."普通折旧开始日期        ls_depreciationareas

-exp_ulife_yrs = ls_main_data-ndabj."已过期使用年限        ls_depreciationareas
-exp_ulife_prds = ls_main_data-ndabp."到期使用期限        ls_depreciationareasx

-area '01'.        
IF ls_main_data-afasl <> ''.          ls_depreciationareasx
-dep_key 'X'."折旧码        
ENDIF.        ls_depreciationareasx
-ulife_yrs 'X'."折旧码        ls_depreciationareasx
-ulife_prds 'X'."期间        ls_depreciationareasx
-odep_start_date 'X'."普通折旧开始日期        ls_depreciationareasx

-exp_ulife_yrs 'X'."已过期使用年限        ls_depreciationareasx
-exp_ulife_prds 'X'."到期使用期限        

APPEND ls_depreciationareas TO lt_depreciationareas.        
APPEND ls_depreciationareasx TO lt_depreciationareasx.      

ELSE."最终资产        
IF ls_main_data-afasl IS INITIAL.          
"根据资产类别获取折旧区间          
IF ls_main_data-bukrs+0(2'10'.            lv_afapl 
'JCN'.          
ELSE.            
IF ls_main_data-bukrs+0(2'11' OR ls_main_data-bukrs+0(2'12'.              lv_afapl 
'JCN2'.            
ENDIF.          
ENDIF.          
SELECT afabe,afasl,ndjar,ndper            
INTO TABLE @DATA(lt_ankb)            
FROM ankb            
WHERE anlkl = @ls_generaldata-assetclass              
AND afapl = @lv_afapl.          

LOOP AT lt_ankb INTO DATA(ls_ankb).            ls_depreciationareas
-area = ls_ankb-afabe."折旧范围            ls_depreciationareas
-dep_key = ls_ankb-afasl."折旧码            ls_depreciationareas
-ulife_yrs = ls_ankb-ndjar."使用年限            ls_depreciationareas
-ulife_prds = ls_ankb-ndper."期间
*    lw_depreciationareas-odep_start_date = i_data-afabg."普通折旧开始日期            ls_depreciationareasx

-area = ls_ankb-afabe."折旧范围            
IF ls_main_data-afasl <> ''.              ls_depreciationareasx
-dep_key 'X'."折旧码            
ENDIF.            ls_depreciationareasx
-ulife_yrs 'X'."折旧码            ls_depreciationareasx
-ulife_prds 'X'."期间
*      lw_depreciationareasx-odep_start_date = 'X'."普通折旧开始日期            
APPEND ls_depreciationareas TO lt_depreciationareas.            
APPEND ls_depreciationareasx TO lt_depreciationareasx.          
ENDLOOP.        

ELSE.          ls_depreciationareas

-area '01'.          ls_depreciationareas
-dep_key = ls_main_data-afasl."折旧码          ls_depreciationareas
-ulife_yrs = ls_main_data-ndjar."使用年限          ls_depreciationareas
-ulife_prds = ls_main_data-ndper."期间          ls_depreciationareas
-odep_start_date = ls_main_data-afabg."普通折旧开始日期          
IF c_c1 'X'.            ls_depreciationareas
-exp_ulife_yrs = ls_main_data-ndabj."已过期使用年限            ls_depreciationareas
-exp_ulife_prds = ls_main_data-ndabp."到期使用期限          
ENDIF.          ls_depreciationareasx


-area '01'.          
IF ls_main_data-afasl <> ''.            ls_depreciationareasx
-dep_key 'X'."折旧码          
ENDIF.          ls_depreciationareasx
-ulife_yrs 'X'."折旧码          ls_depreciationareasx
-ulife_prds 'X'."期间          ls_depreciationareasx
-odep_start_date 'X'."普通折旧开始日期          

IF c_c1 'X'.            ls_depreciationareasx
-exp_ulife_yrs 'X'."已过期使用年限            ls_depreciationareasx
-exp_ulife_prds 'X'."到期使用期限          
ENDIF.          

APPEND ls_depreciationareas TO lt_depreciationareas.          
APPEND ls_depreciationareasx TO lt_depreciationareasx.        
ENDIF.      

ENDIF.

*&主资产增强字段      
IF c_c1 'X'.        
PERFORM frm_enhance_fields USING ls_main_data CHANGING ls_anlu lv_flg.      
ENDIF.
*&子资产增强字段      
IF c_c2 'X'.        
PERFORM frm_enhance_fields1 USING ls_main_data CHANGING ls_anlu lv_flg.      
ENDIF.
* 由于BAPI_TE_ANLU中包含的增强字段过多,
* 直接使用BAPI创建包含增强字段的资产会报错,
* 所以将数据通过MEMORY传入增强进行赋值      
IF lv_flg = abap_true.        ls_extensionin
-structure  'BAPI_TE_ANLU'.        ls_extensionin
-valuepart1 ''.        
APPEND ls_extensionin TO lt_extensionin.        
EXPORT tab_anlu = ls_anlu TO MEMORY ID 'ZFI_UPDATE_ASSET'.      

ENDIF.      

CALL FUNCTION 'BAPI_FIXEDASSET_OVRTAKE_CREATE'        
EXPORTING          
key                  = ls_key          createsubnumber      
= ls_createsubnumber
*         TESTRUN              = ' '          generaldata          
= ls_generaldata          generaldatax         
= ls_generaldatax          postinginformation   
= ls_postinginformation          postinginformationx  
= ls_postinginformationx          timedependentdata    
= ls_timedependentdata          timedependentdatax   
= ls_timedependentdatax          allocations          
= ls_allocations          allocationsx         
= ls_allocationsx          investacctassignmnt  
= ls_investacctassignmnt          investacctassignmntx 
= ls_investacctassignmntx          origin               
= ls_origin          originx              
= ls_originx          networthvaluation    
= ls_networthvaluation          networthvaluationx   
= ls_networthvaluationx          leasing              
= ls_leasing          leasingx             
= ls_leasingx        
IMPORTING
*         COMPANYCODE          =          asset                
= l_asset
*         SUBNUMBER            =
*         ASSETCREATED         =        
TABLES          depreciationareas    
= lt_depreciationareas          depreciationareasx   
= lt_depreciationareasx          extensionin          
= lt_extensionin          
return               = lt_return.      

LOOP AT lt_return INTO ls_return WHERE type 'E' OR type 'A'.        ls_main_data
-light = c_icon_red.        ls_main_data
-ztext = ls_main_data-ztext && ls_return-message.      
ENDLOOP.      
IF ls_main_data-light = c_icon_red.        
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.      
ELSE.        
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'          
EXPORTING            
wait = abap_true.        ls_main_data

-light = c_icon_green.        ls_main_data
-ztext '资产创建成功:' && l_asset.      
ENDIF.    

ENDDO.    
MODIFY lt_main_data FROM ls_main_data TRANSPORTING ztext light.  
ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_enhance_fields
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LS_MAIN_DATA
*&      <-- LS_ANLU
*&---------------------------------------------------------------------*
FORM frm_enhance_fields  USING  i_data TYPE ty_data                         
CHANGING c_anlu TYPE anlu c_flg TYPE c.  
CLEAR:c_anlu,c_flg.  
"机号  
IF i_data-zzjh IS NOT INITIAL.    c_anlu
-zzjh = i_data-zzjh.    c_flg 
= abap_true.  
ENDIF.  
"设备规格  
IF i_data-zzsbgg IS NOT INITIAL.    c_anlu
-zzsbgg = i_data-zzsbgg.    c_flg 
= abap_true.  
ENDIF.  
"设备类别---设备SN号  
IF i_data-zzsblb IS NOT INITIAL.    c_anlu
-zzsblb = i_data-zzsblb.    c_flg 
= abap_true.  
ENDIF.  
"设备类型  
IF i_data-zzsblx IS NOT INITIAL.    c_anlu
-zzsblx = i_data-zzsblx.    c_flg 
= abap_true.  
ENDIF.  
"是否监管  
IF i_data-zzsfjg IS NOT INITIAL.    
IF  i_data-zzsfjg 'Y'.      c_anlu
-zzsfjg 'X'.      c_flg 
= abap_true.    
ELSEIF i_data-zzsfjg 'N'.      c_anlu
-zzsfjg ''.      c_flg 
= abap_true.    
ENDIF.  
ENDIF.  
"设备性质  
IF i_data-zzxz IS NOT INITIAL.    c_anlu
-zzxz = i_data-zzxz.    c_flg 
= abap_true.  
ENDIF.  
"监管情况  
IF i_data-zzjgqk IS NOT INITIAL.    c_anlu
-zzjgqk = i_data-zzjgqk.    c_flg 
= abap_true.  
ENDIF.  
"监管日期  
IF i_data-zzjgq IS NOT INITIAL.    c_anlu
-zzjgq = i_data-zzjgq.    c_flg 
= abap_true.  
ENDIF.  
"是否转让  
IF i_data-zzsfzr IS NOT INITIAL.    
IF i_data-zzsfzr 'Y'.      c_flg 
= abap_true.      c_anlu
-zzsfzr 'X'.    
ELSEIF i_data-zzsfzr 'N'.      c_flg 
= abap_true.      c_anlu
-zzsfzr ''.    
ENDIF.  

ENDIF.  
"安装地点  
IF i_data-zzazdz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzazdz = i_data-zzazdz.  
ENDIF.  

"状态  
IF i_data-zzzt IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzzt = i_data-zzzt.  
ENDIF.  

"转让日期  
IF i_data-zzzrsj IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzzrsj = i_data-zzzrsj.  
ENDIF.  

"转让地点  
IF i_data-zzzrdd IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzzrdd = i_data-zzzrdd.  
ENDIF.  

"接收人  
IF i_data-zzjsr IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzjsr = i_data-zzjsr.  
ENDIF.  

"转让备注  
IF i_data-zzzrbz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzzrbz = i_data-zzzrbz.  
ENDIF.  

"使用人备注  
IF i_data-zzesyrbz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzesyrbz = i_data-zzesyrbz.  
ENDIF.  

"使用者工号  
IF i_data-zzgh IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzgh = i_data-zzgh.  
ENDIF.  

"使用部门  
IF i_data-zzsybm IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzsybm = i_data-zzsybm.  
ENDIF.  

"ECCN编码  
IF i_data-zzeccn IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzeccn = i_data-zzeccn.  
ENDIF.  

"注册国家  
IF i_data-zzreg_country IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzreg_country = i_data-zzreg_country.  
ENDIF.  

"原始认证的发货国 ---原产地国  
IF i_data-zzcoo IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzcoo = i_data-zzcoo.  
ENDIF.  

"管控等级  
IF i_data-zzcntlv IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzcntlv = i_data-zzcntlv.  
ENDIF.  
"OA系统编号  
IF i_data-zzoaid IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzoaid = i_data-zzoaid.  
ENDIF.  
"备注  
IF i_data-zzbz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzbz = i_data-zzbz.  
ENDIF.  

"合同号  
IF i_data-zzhth IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzhth = i_data-zzhth.  
ENDIF.  

"投资文号  
IF i_data-zztzwh IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zztzwh = i_data-zztzwh.  
ENDIF.  

"在建工程工号项目  
IF i_data-zzdwggxm IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzdwggxm = i_data-zzdwggxm.  
ENDIF.  

"投资类型代码  
IF i_data-zzstateid IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzstateid = i_data-zzstateid.  
ENDIF.  

"政府补贴项目 ---国家专项  
IF i_data-zzxmbh IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzxmbh = i_data-zzxmbh.  
ENDIF.  

"资金性质  
IF i_data-zzzjxz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzzjxz = i_data-zzzjxz.  
ENDIF.  

"项目阶段  
IF i_data-zzxmjd IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzxmjd = i_data-zzxmjd.  
ENDIF.  

"募集资金项目  
IF i_data-zzmjzjxm IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzmjzjxm = i_data-zzmjzjxm.  
ENDIF.  

"OA小类编号  
IF i_data-zzanlkl IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzanlkl = i_data-zzanlkl.  
ENDIF.

*  "募集资金有效开始日
*  IF i_data-zzmjzjks IS NOT INITIAL.
*    c_flg = abap_true.
*    c_anlu-zzmjzjks = i_data-zzmjzjks.
*  ENDIF.
*
*  "募集资金有效截止日
*  IF i_data-zzmjzjjz IS NOT INITIAL.
*    c_flg = abap_true.
*    c_anlu-zzmjzjjz = i_data-zzmjzjjz.
*  ENDIF.  

"抵押到期日期  
IF i_data-zzdydqrq IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzdydqrq = i_data-zzdydqrq.  
ENDIF.  

"抵押性质  
IF i_data-zzdyxz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzdyxz = i_data-zzdyxz.  
ENDIF.

*  "资产关联主要编号
*  IF i_data-zzzcglbh1 IS NOT INITIAL.
*    c_flg = abap_true.
*    c_anlu-zzzcglbh1 = i_data-zzzcglbh1.
*  ENDIF.
*
*  "资产关联子编号
*  IF i_data-zzzcglbh2 IS NOT INITIAL.
*    c_flg = abap_true.
*    c_anlu-zzzcglbh2 = i_data-zzzcglbh2.
*  ENDIF.  

"状态  
IF i_data-zzstatus IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzstatus = i_data-zzstatus.  
ENDIF.  

"出厂日期  
IF i_data-zzccrq IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzccrq = i_data-zzccrq.  
ENDIF.  

"进厂日期  
IF i_data-zzjcrq IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzjcrq = i_data-zzjcrq.  
ENDIF.  

"启用日期  
IF i_data-zzqyrq IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzqyrq = i_data-zzqyrq.  
ENDIF.  

"保修期  
IF i_data-zzbxqx IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzbxqx = i_data-zzbxqx.  
ENDIF.  

"购置价格(元)  
IF i_data-zzgzjg IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzgzjg = i_data-zzgzjg.  
ENDIF.  

"财务评估值(元)  
IF i_data-zzpgz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzpgz = i_data-zzpgz.  
ENDIF.  

"运费(元)  
IF i_data-zzyf IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzyf = i_data-zzyf.  
ENDIF.  

"安装费(元)  
IF i_data-zzazf IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzazf = i_data-zzazf.  
ENDIF.  

"其他费用(元)  
IF i_data-zzqtfy IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzqtfy = i_data-zzqtfy.  
ENDIF.  

"外币值  
IF i_data-zzwbz IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzwbz = i_data-zzwbz.  
ENDIF.

*  "外币值币种
*  IF i_data-zzwbz_waers IS NOT INITIAL.
*    c_flg = abap_true.
*    c_anlu-zzwbz_waers = i_data-zzwbz_waers.
*  ENDIF.  

"长期待摊用类型  
IF i_data-zzshare IS NOT INITIAL.    c_flg 
= abap_true.    c_anlu
-zzshare = i_data-zzshare.  
ENDIF.

*  "实物资产状态
*  IF i_data-zzstatus IS NOT INITIAL.
*    c_flg = abap_true.
*    c_anlu-zzstatus = i_data-zzstatus.
*  ENDIF.
*
*  "是否募投
*  IF i_data-zzsfmt IS NOT INITIAL.
*    c_flg = abap_true.
*    c_anlu-zzsfmt = i_data-zzsfmt.
*  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_enhance_fields1
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> LS_MAIN_DATA
*&      <-- LS_ANLU
*&      <-- LV_FLG
*&---------------------------------------------------------------------*
FORM frm_enhance_fields1  USING  i_data TYPE ty_data                          
CHANGING c_anlu TYPE anlu c_flg TYPE c.
*&--若EXCEL模板中增强字段为空,则创建子资产时会自动带入主资产的增强字段值,
*&--要先查出主资产增强字段值判断筛选再赋值,不进行此操作子资产的增强字段会被覆盖为空  
CLEAR:c_anlu,c_flg.  c_flg 
= abap_true.  

SELECT *    
INTO TABLE @DATA(lt_anlu)    
FROM anlu    
WHERE bukrs = @i_data-bukrs      
AND anln1 = @i_data-anln1      
AND anln2 '0000'.  
READ TABLE lt_anlu INTO DATA(ls_anluINDEX 1.  
"机号  
IF i_data-zzjh IS NOT INITIAL.    c_anlu
-zzjh = i_data-zzjh.  
ELSE.    c_anlu
-zzjh = ls_anlu-zzjh.  
ENDIF.  
"设备规格  
IF i_data-zzsbgg IS NOT INITIAL.    c_anlu
-zzsbgg = i_data-zzsbgg.  
ENDIF.  
"设备类别---设备SN号  
IF i_data-zzsblb IS NOT INITIAL.    c_anlu
-zzsblb = i_data-zzsblb.  
ELSE.    c_anlu
-zzsblb = ls_anlu-zzsblb.  
ENDIF.  
"设备类型  
IF i_data-zzsblx IS NOT INITIAL.    c_anlu
-zzsblx = i_data-zzsblx.  
ELSE.    c_anlu
-zzsblx = ls_anlu-zzsblx.  
ENDIF.  
"是否监管  
IF i_data-zzsfjg IS NOT INITIAL.    
IF  i_data-zzsfjg 'Y'.      c_anlu
-zzsfjg 'X'.    
ELSEIF i_data-zzsfjg 'N'.      c_anlu
-zzsfjg ''.    
ENDIF.  
ELSE.    c_anlu
-zzsfjg = ls_anlu-zzsfjg.  
ENDIF.  
"设备性质  
IF i_data-zzxz IS NOT INITIAL.    c_anlu
-zzxz = i_data-zzxz.  
ELSE.    c_anlu
-zzxz = ls_anlu-zzxz.  
ENDIF.  
"监管情况  
IF i_data-zzjgqk IS NOT INITIAL.    c_anlu
-zzjgqk = i_data-zzjgqk.  
ELSE.    c_anlu
-zzjgqk = ls_anlu-zzjgqk.  
ENDIF.  
"监管日期  
IF i_data-zzjgq IS NOT INITIAL.    c_anlu
-zzjgq = i_data-zzjgq.  
ELSE.    c_anlu
-zzjgq = ls_anlu-zzjgq.  
ENDIF.  
"是否转让  
IF i_data-zzsfzr IS NOT INITIAL.    
IF i_data-zzsfzr 'Y'.      c_anlu
-zzsfzr 'X'.    
ELSEIF i_data-zzsfzr 'N'.      c_anlu
-zzsfzr ''.    
ENDIF.  
ELSE.    c_anlu
-zzsfzr = ls_anlu-zzsfzr.  
ENDIF.  
"安装地点  
IF i_data-zzazdz IS NOT INITIAL.    c_anlu
-zzazdz = i_data-zzazdz.  
ELSE.    c_anlu
-zzazdz = ls_anlu-zzazdz.  
ENDIF.  

"状态  
IF i_data-zzzt IS NOT INITIAL.    c_anlu
-zzzt = i_data-zzzt.  
ELSE.    c_anlu
-zzzt = ls_anlu-zzzt.  
ENDIF.  

"转让日期  
IF i_data-zzzrsj IS NOT INITIAL.    c_anlu
-zzzrsj = i_data-zzzrsj.  
ELSE.    c_anlu
-zzzrsj = ls_anlu-zzzrsj.  
ENDIF.  

"转让地点  
IF i_data-zzzrdd IS NOT INITIAL.    c_anlu
-zzzrdd = i_data-zzzrdd.  
ELSE.    c_anlu
-zzzrdd = ls_anlu-zzzrdd.  
ENDIF.  

"接收人  
IF i_data-zzjsr IS NOT INITIAL.    c_anlu
-zzjsr = i_data-zzjsr.  
ELSE.    c_anlu
-zzjsr = ls_anlu-zzjsr.  
ENDIF.  

"转让备注  
IF i_data-zzzrbz IS NOT INITIAL.    c_anlu
-zzzrbz = i_data-zzzrbz.  
ELSE.    c_anlu
-zzzrbz = ls_anlu-zzzrbz.  
ENDIF.  

"使用人备注  
IF i_data-zzesyrbz IS NOT INITIAL.    c_anlu
-zzesyrbz = i_data-zzesyrbz.  
ELSE.    c_anlu
-zzesyrbz = ls_anlu-zzesyrbz.  
ENDIF.  

"使用者工号  
IF i_data-zzgh IS NOT INITIAL.    c_anlu
-zzgh = i_data-zzgh.  
ELSE.    c_anlu
-zzgh = ls_anlu-zzgh.  
ENDIF.  

"使用部门  
IF i_data-zzsybm IS NOT INITIAL.    c_anlu
-zzsybm = i_data-zzsybm.  
ELSE.    c_anlu
-zzsybm = ls_anlu-zzsybm.  
ENDIF.  

"ECCN编码  
IF i_data-zzeccn IS NOT INITIAL.    c_anlu
-zzeccn = i_data-zzeccn.  
ELSE.    c_anlu
-zzeccn = ls_anlu-zzeccn.  
ENDIF.  

"注册国家  
IF i_data-zzreg_country IS NOT INITIAL.    c_anlu
-zzreg_country = i_data-zzreg_country.  
ELSE.    c_anlu
-zzreg_country = ls_anlu-zzreg_country.  
ENDIF.  

"原始认证的发货国 ---原产地国  
IF i_data-zzcoo IS NOT INITIAL.    c_anlu
-zzcoo = i_data-zzcoo.  
ELSE.    c_anlu
-zzcoo = ls_anlu-zzcoo.  
ENDIF.  

"管控等级  
IF i_data-zzcntlv IS NOT INITIAL.    c_anlu
-zzcntlv = i_data-zzcntlv.  
ELSE.    c_anlu
-zzcntlv = ls_anlu-zzcntlv.  
ENDIF.  
"OA系统编号  
IF i_data-zzoaid IS NOT INITIAL.    c_anlu
-zzoaid = i_data-zzoaid.  
ELSE.    c_anlu
-zzoaid = ls_anlu-zzoaid.  
ENDIF.  
"备注  
IF i_data-zzbz IS NOT INITIAL.    c_anlu
-zzbz = i_data-zzbz.  
ELSE.    c_anlu
-zzbz = ls_anlu-zzbz.  
ENDIF.  

"合同号  
IF i_data-zzhth IS NOT INITIAL.    c_anlu
-zzhth = i_data-zzhth.  
ELSE.    c_anlu
-zzhth = ls_anlu-zzhth.  
ENDIF.  

"投资文号  
IF i_data-zztzwh IS NOT INITIAL.    c_anlu
-zztzwh = i_data-zztzwh.  
ELSE.    c_anlu
-zztzwh = ls_anlu-zztzwh.  
ENDIF.  

"在建工程工号项目  
IF i_data-zzdwggxm IS NOT INITIAL.    c_anlu
-zzdwggxm = i_data-zzdwggxm.  
ELSE.    c_anlu
-zzdwggxm = ls_anlu-zzdwggxm.  
ENDIF.  

"投资类型代码  
IF i_data-zzstateid IS NOT INITIAL.    c_anlu
-zzstateid = i_data-zzstateid.  
ELSE.    c_anlu
-zzstateid = ls_anlu-zzstateid.  
ENDIF.  

"政府补贴项目 ---国家专项  
IF i_data-zzxmbh IS NOT INITIAL.    c_anlu
-zzxmbh = i_data-zzxmbh.  
ELSE.    c_anlu
-zzxmbh = ls_anlu-zzxmbh.  
ENDIF.  

"资金性质  
IF i_data-zzzjxz IS NOT INITIAL.    c_anlu
-zzzjxz = i_data-zzzjxz.  
ELSE.    c_anlu
-zzzjxz = ls_anlu-zzzjxz.  
ENDIF.  

"项目阶段  
IF i_data-zzxmjd IS NOT INITIAL.    c_anlu
-zzxmjd = i_data-zzxmjd.  
ELSE.    c_anlu
-zzxmjd = ls_anlu-zzxmjd.  
ENDIF.  

"募集资金项目  
IF i_data-zzmjzjxm IS NOT INITIAL.    c_anlu
-zzmjzjxm = i_data-zzmjzjxm.  
ELSE.    c_anlu
-zzmjzjxm = ls_anlu-zzmjzjxm.  
ENDIF.  

"OA小类编号  
IF i_data-zzanlkl IS NOT INITIAL.    c_anlu
-zzanlkl = i_data-zzanlkl.  
ELSE.    c_anlu
-zzanlkl = ls_anlu-zzanlkl.  
ENDIF.

*  "募集资金有效开始日
*  IF i_data-zzmjzjks IS NOT INITIAL.
*    c_anlu-zzmjzjks = i_data-zzmjzjks.
*  ENDIF.
*
*  "募集资金有效截止日
*  IF i_data-zzmjzjjz IS NOT INITIAL.
*    c_anlu-zzmjzjjz = i_data-zzmjzjjz.
*  ENDIF.  

"抵押到期日期  
IF i_data-zzdydqrq IS NOT INITIAL.    c_anlu
-zzdydqrq = i_data-zzdydqrq.  
ELSE.    c_anlu
-zzdydqrq = ls_anlu-zzdydqrq.  
ENDIF.  

"抵押性质  
IF i_data-zzdyxz IS NOT INITIAL.    c_anlu
-zzdyxz = i_data-zzdyxz.  
ELSE.    c_anlu
-zzdyxz = ls_anlu-zzdyxz.  
ENDIF.  

"资产关联主要编号  c_anlu
-zzzcglbh1 = ls_anlu-zzzcglbh1.  

"资产关联子编号  c_anlu
-zzzcglbh2 = ls_anlu-zzzcglbh2.  

"状态  
IF i_data-zzstatus IS NOT INITIAL.    c_anlu
-zzstatus = i_data-zzstatus.  
ELSE.    c_anlu
-zzstatus = ls_anlu-zzstatus.  
ENDIF.  

"出厂日期  
IF i_data-zzccrq IS NOT INITIAL.    c_anlu
-zzccrq = i_data-zzccrq.  
ELSE.    c_anlu
-zzccrq = ls_anlu-zzccrq.  
ENDIF.  

"进厂日期  
IF i_data-zzjcrq IS NOT INITIAL.    c_anlu
-zzjcrq = i_data-zzjcrq.  
ELSE.    c_anlu
-zzjcrq = ls_anlu-zzjcrq.  
ENDIF.  

"启用日期  
IF i_data-zzqyrq IS NOT INITIAL.    c_anlu
-zzqyrq = i_data-zzqyrq.  
ELSE.    c_anlu
-zzqyrq = ls_anlu-zzqyrq.  
ENDIF.  

"保修期  
IF i_data-zzbxqx IS NOT INITIAL.    c_anlu
-zzbxqx = i_data-zzbxqx.  
ELSE.    c_anlu
-zzbxqx = ls_anlu-zzbxqx.  
ENDIF.  

"购置价格(元)  
IF i_data-zzgzjg IS NOT INITIAL.    c_anlu
-zzgzjg = i_data-zzgzjg.  
ELSE.    c_anlu
-zzgzjg = ls_anlu-zzgzjg.  
ENDIF.  

"财务评估值(元)  
IF i_data-zzpgz IS NOT INITIAL.    c_anlu
-zzpgz = i_data-zzpgz.  
ELSE.    c_anlu
-zzpgz = ls_anlu-zzpgz.  
ENDIF.  

"运费(元)  
IF i_data-zzyf IS NOT INITIAL.    c_anlu
-zzyf = i_data-zzyf.  
ELSE.    c_anlu
-zzyf = ls_anlu-zzyf.  
ENDIF.  

"安装费(元)  
IF i_data-zzazf IS NOT INITIAL.    c_anlu
-zzazf = i_data-zzazf.  
ELSE.    c_anlu
-zzazf = ls_anlu-zzazf.  
ENDIF.  

"其他费用(元)  
IF i_data-zzqtfy IS NOT INITIAL.    c_anlu
-zzqtfy = i_data-zzqtfy.  
ELSE.    c_anlu
-zzqtfy = ls_anlu-zzqtfy.  
ENDIF.  

"外币值  
IF i_data-zzwbz IS NOT INITIAL.    c_anlu
-zzwbz = i_data-zzwbz.  
ELSE.    c_anlu
-zzwbz = ls_anlu-zzwbz.  
ENDIF.

*  "外币值币种
*  IF i_data-zzwbz_waers IS NOT INITIAL.
*    c_anlu-zzwbz_waers = i_data-zzwbz_waers.
*  ENDIF.  

"长期待摊用类型  
IF i_data-zzshare IS NOT INITIAL.    c_anlu
-zzshare = i_data-zzshare.  
ELSE.    c_anlu
-zzshare = ls_anlu-zzshare.  
ENDIF.

*  "实物资产状态
*  IF i_data-zzstatus IS NOT INITIAL.
*    c_anlu-zzstatus = i_data-zzstatus.
*  ENDIF.
*
*  "是否募投
*  IF i_data-zzsfmt IS NOT INITIAL.
*    c_anlu-zzsfmt = i_data-zzsfmt.
*  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_selcet_screen_output
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_selcet_screen_output .  
LOOP AT SCREEN.    
IF screen-group1 'M1'.      
IF r_r1 ''.        
screen-active 0.      
ELSEIF r_r1 'X'.        
screen-active 1.      
ENDIF.      

MODIFY SCREEN.    
ENDIF.  
ENDLOOP.
ENDFORM.

 

posted @ 2023-09-25 13:48  年轻的小菜鸟  阅读(130)  评论(0编辑  收藏  举报