固定资产期初导入

REPORT zfit018.

INCLUDE zfit018_top.
*&---------------------------------------------------------------------*
*& SELECTION-SCREEN
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_fpath TYPE localfile.
SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN FUNCTION KEY 1.

*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
  PERFORM frm_initial_program.

*----------------------------------------------------------------------*
* F4 Value Help
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fpath.
  PERFORM frm_file_open_dialog USING 'X' CHANGING p_fpath.

*----------------------------------------------------------------------*
* At selection-screen
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
  IF sy-ucomm EQ 'FC01'.
    PERFORM frm_donwload_template.
  ENDIF.

*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM frm_check_upload_file.
  PERFORM frm_parse_excel_content.
  PERFORM frm_display_alv.

*&---------------------------------------------------------------------*
*& END-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.

  INCLUDE zfiT018_frm.
*&---------------------------------------------------------------------*
*& 包含               ZFIT018_TOP
*&---------------------------------------------------------------------*
TABLES: sscrfields.
TYPE-POOLS:slis.

DATA:BEGIN OF gs_alv,
       zligh       TYPE char4,
       anln1       TYPE anla-anln1  , "主编号
       anln2       TYPE anla-anln2  , "子编号
       bukrs       TYPE anla-bukrs  , "公司代码
       anlkl       TYPE anla-anlkl  , "资产分类
       txt50       TYPE anla-txt50  , "资产描述
       txa50       TYPE anla-txa50  , "附加资产描述
       menge       TYPE anla-menge  , "数量
       meins       TYPE anla-meins  , "计量单位
       aktiv       TYPE anla-aktiv  , "资本化日期
       anlhtxt     TYPE anlh-anlhtxt, "资产主号文本
       kostl       TYPE kostl       , "使用部门(成本中心)
       herst       TYPE anla-herst  , "制造商(文本)
       zvendor     TYPE ze_vendor,    "历史供应商
       ztrans      TYPE ze_trans,     "是否在建工程转入
       zinvoice    TYPE ze_invoice,   "历史资产发票凭证
       zcont       TYPE ze_cont,      "历史采购合同号
       zstort      TYPE ze_stort,     "资产存放地点
       zdepart     TYPE ze_depart,    "使用部门
       zlease      TYPE ze_lease,     "是否融资租赁
       zcaufn      TYPE anlu-zcaufn,  "内部订单
       ulife_yrs   TYPE bf_ndjar    , "计划年使用期
       ulife_prds  TYPE bf_ndper    , "期间
       dep_key     TYPE bf_afasl    , "折旧码
       scrap_prctg TYPE schrw_proz  , "残值率(账面折旧)
       ord_dep     TYPE char20    ,   "账面原值
       zyqnlj      TYPE char20      , "以前年度累计折旧(截止2020年12月底)
       zdqnlj      TYPE char20      , "当前年度累计折旧(2021年1月~4月底)
       gsber       TYPE anlz-gsber,   "业务范围
       werks       TYPE anlz-werks,   "工厂
       ndabj       TYPE anlc-ndabj,   "已过期使用年限
       ndabp       TYPE anlc-ndabp,   "到期使用期限
       zmess       TYPE bapiret2-message.
DATA: END OF gs_alv.

DATA: gt_alv LIKE STANDARD TABLE OF gs_alv.
DATA: gt_slis_t_fieldcat_alv TYPE slis_t_fieldcat_alv,
      gs_slis_fieldcat_alv   TYPE slis_fieldcat_alv.
* Constants Definition
CONSTANTS:
  con_ext_nam_xls TYPE string VALUE 'XLSX',
* Answer Type
  con_answer_1    TYPE c      VALUE '1',
  con_answer_a    TYPE c      VALUE 'A'.

DATA:
  gs_key                 LIKE  bapi1022_key,
  gs_reference           LIKE  bapi1022_reference,
  gs_createsubnumber     LIKE  bapi1022_misc-xsubno,
  gs_creategroupasset    LIKE  bapi1022_misc-xanlgr,
  gs_testrun             LIKE  bapi1022_misc-testrun,
  gs_generaldata         LIKE  bapi1022_feglg001,
  gs_generaldatax        LIKE  bapi1022_feglg001x,
  gv_anla                TYPE  bapi1022_misc-xsubno,
  gs_inventory           LIKE  bapi1022_feglg011,
  gs_inventoryx          LIKE  bapi1022_feglg011x,
  gs_postinginformation  LIKE  bapi1022_feglg002,
  gs_postinginformationx LIKE  bapi1022_feglg002x,
  gs_timedependentdata   LIKE  bapi1022_feglg003,
  gs_timedependentdatax  LIKE  bapi1022_feglg003x,
  gs_allocations         LIKE  bapi1022_feglg004,
  gs_allocationsx        LIKE  bapi1022_feglg004x,
  gs_extensionin         TYPE bapiparex,
  gt_extensionin         TYPE STANDARD TABLE OF bapiparex,
  gs_anlu                TYPE bapi_te_anlu.

DATA:
  gt_depreciationareas  TYPE TABLE OF bapi1022_dep_areas,
  gs_depreciationareas  TYPE bapi1022_dep_areas,
  gt_depreciationareasx TYPE TABLE OF bapi1022_dep_areasx,
  gs_depreciationareasx TYPE bapi1022_dep_areasx,
  gt_postedvalues       TYPE STANDARD TABLE OF bapi1022_postval,
  gs_postedvalues       TYPE bapi1022_postval,
  gt_cumulatedvalues    TYPE TABLE OF bapi1022_cumval,
  gs_cumulatedvalues    TYPE bapi1022_cumval,
  gt_return_dis         TYPE TABLE OF bapiret2,
  gs_return_dis         TYPE bapiret2,
  gt_transactions       TYPE TABLE OF bapi1022_trtype,
  gs_transactions       TYPE bapi1022_trtype,
  gs_origin             TYPE bapi1022_feglg009,
  gs_originx            TYPE bapi1022_feglg009x,
  gt_return             TYPE TABLE OF bapiret2,
  gs_return             TYPE bapiret2.

DATA:
  gv_companycode  LIKE bapi1022_1-comp_code,
  gv_asset        LIKE bapi1022_1-assetmaino,
  gv_subnumber    LIKE bapi1022_1-assetsubno,
  gv_assetcreated LIKE bapi1022_reference,
  gv_index        TYPE sy-tabix,
  gs_ztfi00x      TYPE ztfi00x,
  gt_ztfi00x      TYPE STANDARD TABLE OF ztfi00x.
*&---------------------------------------------------------------------*
*& 包含               ZFIT018_FRM
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& 包含               ZFII0006_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  initial_program
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_initial_program .
  sscrfields-functxt_01 = '@49@下载模板'(002).
ENDFORM. " initial_program
*&---------------------------------------------------------------------*
*&      Form  donwload_template
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_donwload_template .
  DATA: lv_filename  TYPE string,
        lv_obj_name  TYPE wwwdatatab-objid,
        lv_file_name TYPE string,
        lv_filepath  TYPE string,
        lv_rc        TYPE sy-subrc.

  lv_obj_name = 'ZFIT018'.
  lv_file_name = TEXT-012 && '-' && sy-datum && sy-uzeit+0(4).
  CALL METHOD zcl_bc_util=>download_web_object
    EXPORTING
      iv_relid             = 'MI'
      iv_objid             = lv_obj_name
      iv_default_file_name = lv_file_name
    IMPORTING
      ev_rc                = lv_rc
      ev_filepath          = lv_filepath.
  IF lv_rc <> 0.
    MESSAGE '下载模板失败' TYPE 'E'.
    RETURN.
  ENDIF.
ENDFORM. " donwload_template

*&---------------------------------------------------------------------*
*&      Form  CHECK_UPLOAD_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_check_upload_file .
  DATA: lv_check_result TYPE abap_bool.
  PERFORM check_file_exist USING p_fpath CHANGING lv_check_result.
  IF lv_check_result EQ abap_false.
    MESSAGE '文件不存在'(003) TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.
ENDFORM. " CHECK_UPLOAD_FILE

*&---------------------------------------------------------------------*
*&      Form  FILE_OPEN_DIALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_file_open_dialog USING iv_check_file
                      CHANGING cv_filename.
  DATA: lv_return_code  TYPE i,
        lv_check_result TYPE c.
  DATA: lt_files TYPE STANDARD TABLE OF file_table,
        ls_file  TYPE file_table.
  CLEAR cv_filename.
  cl_gui_frontend_services=>file_open_dialog(
    EXPORTING
      default_extension       = con_ext_nam_xls " Default Extension
      multiselection          = abap_false      " Multiple selections
    CHANGING
      file_table              = lt_files        " Table Holding
      rc                      = lv_return_code  " Return Code
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
      not_supported_by_gui    = 4
      OTHERS                  = 5
  ).

  IF lv_return_code EQ 0 OR sy-subrc NE 0.
    EXIT.
  ENDIF.

  READ TABLE lt_files INTO ls_file INDEX 1.
  CHECK sy-subrc EQ 0.

  IF iv_check_file EQ abap_true.
    PERFORM check_file_exist USING ls_file-filename
                          CHANGING lv_check_result.
    IF lv_check_result EQ abap_false.
      EXIT.
    ENDIF.
  ENDIF.

  cv_filename = ls_file-filename.
ENDFORM. " FILE_OPEN_DIALOG
*&---------------------------------------------------------------------*
*&      Form  CHECK_FILE_EXIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM check_file_exist USING iv_filename
                    CHANGING cv_check_result.
  DATA: lv_filename    TYPE string,
        lv_return_bool TYPE c.
  CLEAR cv_check_result.

  lv_filename = iv_filename.
  cl_gui_frontend_services=>file_exist(
    EXPORTING
      file                 = lv_filename       " File to Check
    RECEIVING
      result               = lv_return_bool    " Result
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      OTHERS               = 5
  ).
  IF sy-subrc       NE 0 OR
     lv_return_bool EQ abap_false.
    cv_check_result = abap_false.
    EXIT.
  ENDIF.

  cv_check_result = abap_true.
ENDFORM. " CHECK_FILE_EXIST
*&---------------------------------------------------------------------*
*&      Form  parse_excel_content
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_parse_excel_content .
  DATA: ls_file_content TYPE alsmex_tabline,
        lt_file_content TYPE STANDARD TABLE OF alsmex_tabline,
        lt_file_content_tmp TYPE STANDARD TABLE OF alsmex_tabline.

  DATA: lv_index       TYPE sy-tabix,
        lv_flg_new     TYPE c,
        lv_col         TYPE i,
        lv_row         TYPE i,
        lv_col_gap     TYPE i,
        ls_file_content_bak TYPE alsmex_tabline,
        lv_tabix         TYPE i.

  FIELD-SYMBOLS:<fs_comp> TYPE any,
                <fs_file_content> TYPE alsmex_tabline,
                <fs_file_content_bak> TYPE alsmex_tabline.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename                = p_fpath
      i_begin_col             = 2
      i_begin_row             = 3
      i_end_col               = 29
      i_end_row               = 9999
    TABLES
      intern                  = lt_file_content
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  SORT lt_file_content BY row ASCENDING
                          col ASCENDING.

  "Excel中存在单元格中带双引号且发生回行的脏数据,进行特殊处理‘
  LOOP AT lt_file_content ASSIGNING <fs_file_content>.

    lv_tabix = sy-tabix.

    ls_file_content = <fs_file_content>.

    AT NEW row.
        CLEAR: lv_flg_new,
               ls_file_content_bak.

      IF strlen( ls_file_content-value ) <> 4.
        lv_flg_new = 'X'.
        CONTINUE.
      ENDIF.
    ENDAT.

    IF lv_flg_new IS NOT INITIAL.
      ls_file_content-row = lv_row.
      IF ls_file_content_bak IS INITIAL.
        lv_col_gap = <fs_file_content>-col - 1.
      ELSE.
        lv_col_gap = <fs_file_content>-col - ls_file_content_bak-col.
      ENDIF.
      ls_file_content-col = lv_col + lv_col_gap.
    ELSE.
      IF ls_file_content-value = '"'.
        lv_tabix = lv_tabix + 1.
        LOOP AT lt_file_content ASSIGNING <fs_file_content_bak>
          FROM lv_tabix.
          IF <fs_file_content_bak>-row <> <fs_file_content>-row.
            EXIT.
          ENDIF.
          <fs_file_content_bak>-col = <fs_file_content_bak>-col - 1.
        ENDLOOP.
        CONTINUE.
      ENDIF.
    ENDIF.

    APPEND ls_file_content TO lt_file_content_tmp.

    lv_row = ls_file_content-row.
    lv_col = ls_file_content-col.
    ls_file_content_bak = <fs_file_content>.
  ENDLOOP.

  LOOP AT lt_file_content_tmp INTO ls_file_content.
    MOVE ls_file_content-col TO lv_index.
    IF ls_file_content-col < 29.
      lv_index = lv_index + 3.
      ASSIGN COMPONENT lv_index OF STRUCTURE gs_alv TO <fs_comp>.
      CHECK sy-subrc EQ 0.
      REPLACE ALL OCCURRENCES OF '"' IN ls_file_content-value WITH space.
      CONDENSE ls_file_content-value.
      TRY.
      MOVE ls_file_content-value TO <fs_comp>.
      CATCH cx_root.

      ENDTRY.
    ENDIF.

    AT END OF row.
      APPEND gs_alv TO gt_alv.
      gs_alv-zligh = icon_green_light.
      CLEAR gs_alv.
    ENDAT.
  ENDLOOP.
  SORT gt_alv BY bukrs.
ENDFORM. " parse_excel_content
*&---------------------------------------------------------------------*
*&      Form  display_alv_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_display_alv.
  DATA: ls_layout  TYPE slis_layout_alv.

  ls_layout-zebra             = 'X'.
  ls_layout-colwidth_optimize = abap_true.

  PERFORM frm_set_fieldcat.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'FRM_PF_STATUS'
      i_callback_user_command  = 'FRM_USER_COMMAND'
      is_layout                = ls_layout
      it_fieldcat              = gt_slis_t_fieldcat_alv
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_alv
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
  ENDIF.

ENDFORM. " display_alv_data

FORM frm_set_fieldcat.
  CLEAR gt_slis_t_fieldcat_alv.

  PERFORM add_fieldcat USING:
    'ZLIGH' '指示灯',
    'ANLN1' '主编号',
    'ANLN2' '子编号',
    'BUKRS' '公司代码',
    'ANLKL' '资产分类',
    'TXT50' '资产描述',
    'TXA50' '附加资产描述',
    'MENGE' '数量',
    'MEINS' '计量单位',
    'AKTIV' '资本化日期',
    'ANLHTXT' '资产主号文本',
    'KOSTL' '使用部门',
    'HERST' '制造商',
    'ZVENDOR' '资产供应商信息',
    'ZTRANS' '是否在建工程转入',
    'ZINVOICE' '历史资产发票凭证',
    'ZCONT'  '历史采购合同号',
    'ZSTORT' '资产存放地点',
    'ZDEPART' '使用部门',
    'ZLEASE' '是否融资租赁',
    'ZCAUFN' '内部订单',
    'ULIFE_YRS' '使用年限',
    'ULIFE_PRDS' '期间',
    'DEP_KEY'  '折旧码',
    'SCRAP_PRCTG' '残值率',
    'ORD_DEP' '账面原值',
    'ZYQNLJ' '以前年度累计折旧(截止2020年12月底)',
    'ZDQNLJ' '当前年度累计折旧(2021年1月~4月底)',
    'GSBER' '业务范围',
    'WERKS' '工厂',
    'NDABJ' '已过期使用年限',
    'NDABP' '到期使用期限',
    'ZMESS' '消息文本'.
ENDFORM.

FORM add_fieldcat USING p_fieldname TYPE slis_fieldname
                        p_seltext   TYPE char100 .
  CLEAR gs_slis_fieldcat_alv.
  gs_slis_fieldcat_alv-fieldname  = p_fieldname.
  gs_slis_fieldcat_alv-seltext_l  = p_seltext.
  APPEND gs_slis_fieldcat_alv TO gt_slis_t_fieldcat_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PF_STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_pf_status USING lt_extab TYPE slis_t_extab.
  SET PF-STATUS 'PF_STATUS' EXCLUDING lt_extab.
ENDFORM. " PF_STATUS
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_user_command USING ok_code TYPE sy-ucomm
                            re_selfield TYPE slis_selfield.
  CASE ok_code.
    WHEN '&IMPORT'.
      PERFORM frm_create_asset.
  ENDCASE.
  re_selfield-refresh = 'X'.
ENDFORM. " USER_COMMAND
*&---------------------------------------------------------------------*
*& Form FRM_CREATE_ASSET
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_create_asset .

  LOOP AT gt_alv ASSIGNING FIELD-SYMBOL(<fs_area>).

    gv_index = sy-tabix.

    PERFORM frm_set_bapi_para USING <fs_area>.

    PERFORM frm_post_assets USING <fs_area>.
  ENDLOOP.

  IF gt_ztfi00x IS NOT INITIAL.
    MODIFY ztfi00x FROM TABLE gt_ztfi00x.
    IF sy-subrc = 0.
      COMMIT WORK.
    ELSE.
      ROLLBACK WORK.
    ENDIF.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_BAPI_PARA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> PS_AREA
*&---------------------------------------------------------------------*
FORM frm_set_bapi_para USING ps_area LIKE gs_alv.
  "设置参数
  CLEAR gs_key.
  gs_key-companycode =  ps_area-bukrs.

  CLEAR gs_generaldata.
  gs_generaldata-assetclass    = ps_area-anlkl   .
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input         = gs_generaldata-assetclass
    IMPORTING
     output        = gs_generaldata-assetclass.

  gs_generaldata-descript      = ps_area-txt50   .
  gs_generaldata-descript2     = ps_area-txa50   .
  gs_generaldata-main_descript = ps_area-anlhtxt .
  gs_generaldata-quantity      = ps_area-menge   .
  CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
    EXPORTING
      input          = ps_area-meins
      language       = sy-langu
    IMPORTING
      output         = ps_area-meins
    EXCEPTIONS
      unit_not_found = 1
      OTHERS         = 2.
  gs_generaldata-base_uom    = ps_area-meins  .

  CLEAR gs_generaldatax.
  gs_generaldatax-assetclass    =  'X'.
  gs_generaldatax-descript      =  'X'.
  gs_generaldatax-descript2     =  'X'.
  gs_generaldatax-main_descript =  'X'.
  gs_generaldatax-quantity      =  'X'.
  gs_generaldatax-base_uom      =  'X'.

  "过账数据
  CLEAR:
  gs_postinginformation,
  gs_postinginformationx.
  "资本化日期
  gs_postinginformation-cap_date =  ps_area-aktiv.
  gs_postinginformationx-cap_date = 'X'.

  CLEAR:
  gs_timedependentdata,
  gs_timedependentdatax.
  "成本中心
  gs_timedependentdata-costcenter = ps_area-kostl.
  gs_timedependentdatax-costcenter = 'X'.
  "业务范围
  gs_timedependentdata-bus_area = ps_area-gsber.
  gs_timedependentdatax-bus_area = 'X'.
  "工厂
  gs_timedependentdata-plant = ps_area-werks.
  gs_timedependentdatax-plant = 'X'.

  CLEAR: gs_origin.
  gs_origin-manufacturer = ps_area-herst.

  CLEAR: gs_originx.
  gs_originx-manufacturer = abap_true.

  CLEAR:
  gt_postedvalues,
  gs_postedvalues.
  IF ps_area-zdqnlj IS NOT INITIAL.
    gs_postedvalues-fisc_year = '2021'.
    gs_postedvalues-area      = '01'.
    TRY.
      REPLACE ALL OCCURRENCES OF',' IN  ps_area-zdqnlj WITH space.
      CONDENSE ps_area-zdqnlj.
      gs_postedvalues-ord_dep   = ps_area-zdqnlj.
    CATCH cx_root.
      CLEAR: gs_postedvalues-ord_dep.
    ENDTRY.
    APPEND gs_postedvalues TO gt_postedvalues.
  ENDIF.

  CLEAR:
  gt_depreciationareasx,
  gt_depreciationareas.

  CLEAR gs_depreciationareas.
  gs_depreciationareas-area               = '01' .
  gs_depreciationareas-dep_key            = ps_area-dep_key.
  gs_depreciationareas-ulife_yrs          = ps_area-ulife_yrs   .
  gs_depreciationareas-ulife_prds         = ps_area-ulife_prds  .
  gs_depreciationareas-scrapvalue_prctg   = ps_area-scrap_prctg .
  gs_depreciationareas-exp_ulife_yrs      = ps_area-ndabj.
  gs_depreciationareas-exp_ulife_prds     = ps_area-ndabp.
  APPEND gs_depreciationareas TO gt_depreciationareas.

  CLEAR gs_depreciationareasx.
  gs_depreciationareasx-area               =  '01' .
  gs_depreciationareasx-dep_key            =  'X'  .
  gs_depreciationareasx-ulife_yrs          =  'X'  .
  gs_depreciationareasx-ulife_prds         =  'X'  .
  gs_depreciationareasx-scrapvalue_prctg   =  'X'  .
  gs_depreciationareasx-exp_ulife_yrs      =  'X'  .
  gs_depreciationareasx-exp_ulife_prds     =  'X'  .
  APPEND gs_depreciationareasx TO gt_depreciationareasx.

  "本年折旧
  CLEAR:gt_transactions,
        gs_transactions.
  IF ps_area-aktiv >= '20210101'.
    gs_transactions-fisc_year   = '2021'.
    gs_transactions-area        = '01'.
    gs_transactions-current_no  = '0001'.
    gs_transactions-valuedate   = ps_area-aktiv.
    gs_transactions-assettrtyp  = '100'.
    TRY.
      REPLACE ALL OCCURRENCES OF ',' IN ps_area-ord_dep WITH space.
      CONDENSE ps_area-ord_dep.
      gs_transactions-amount      = ps_area-ord_dep.
    CATCH cx_root.
      CLEAR: gs_transactions-amount.
    ENDTRY.
    APPEND gs_transactions TO gt_transactions.
  ENDIF.
  "历史折旧
  CLEAR:gt_cumulatedvalues,
        gs_cumulatedvalues.
  IF ps_area-aktiv < '20210101'.
    gs_cumulatedvalues-fisc_year = '2021'.
    gs_cumulatedvalues-area      = '01'.
    TRY.
      REPLACE ALL OCCURRENCES OF',' IN  ps_area-ord_dep WITH space.
      CONDENSE ps_area-ord_dep.
      gs_cumulatedvalues-acq_value = ps_area-ord_dep.
    CATCH cx_root.
      CLEAR: gs_cumulatedvalues-acq_value.
    ENDTRY.
    TRY.
      REPLACE ALL OCCURRENCES OF',' IN  ps_area-zyqnlj WITH space.
      CONDENSE ps_area-zyqnlj.
      gs_cumulatedvalues-ord_dep   = ps_area-zyqnlj.
    CATCH cx_root.
      CLEAR: gs_cumulatedvalues-ord_dep.
    ENDTRY.
    APPEND gs_cumulatedvalues TO gt_cumulatedvalues.
  ENDIF.
  "增强字段
  CLEAR: gs_extensionin,
         gt_extensionin,
         gs_anlu.
  gs_anlu-ztrans   = ps_area-ztrans.
  gs_anlu-zinvoice = ps_area-zinvoice.
  gs_anlu-zcont    = ps_area-zcont.
  gs_anlu-zstort   = ps_area-zstort.
  gs_anlu-zdepart  = ps_area-zdepart.
  gs_anlu-zlease   = ps_area-zlease.
  gs_anlu-zcaufn   = ps_area-zcaufn.
  gs_anlu-zvendor  = ps_area-zvendor.

  gs_extensionin-structure = 'BAPI_TE_ANLU'.
  gs_extensionin-valuepart1 = gs_anlu.
  gs_extensionin-valuepart2 = gs_anlu-zvendor+46(4).
  APPEND gs_extensionin TO gt_extensionin.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_POST_ASSETS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_post_assets USING ps_area LIKE gs_alv.
  DATA lv_postf(1) TYPE c.
  CLEAR gt_return.
  CALL FUNCTION 'BAPI_FIXEDASSET_OVRTAKE_CREATE'
    EXPORTING
      key                 = gs_key
      createsubnumber     = gv_anla
      generaldata         = gs_generaldata
      generaldatax        = gs_generaldatax
      postinginformation  = gs_postinginformation
      postinginformationx = gs_postinginformationx
      timedependentdata   = gs_timedependentdata
      timedependentdatax  = gs_timedependentdatax
      origin              = gs_origin
      originx             = gs_originx
    IMPORTING
      companycode         = gv_companycode
      asset               = gv_asset
      subnumber           = gv_subnumber
      assetcreated        = gv_assetcreated
    TABLES
      depreciationareas   = gt_depreciationareas
      depreciationareasx  = gt_depreciationareasx
      extensionin         = gt_extensionin
      postedvalues        = gt_postedvalues
      cumulatedvalues     = gt_cumulatedvalues
      transactions        = gt_transactions
      return              = gt_return.
  CLEAR   lv_postf.
  LOOP AT gt_return INTO gs_return WHERE type EQ 'E' OR type EQ 'A'.
    ps_area-zmess = ps_area-zmess && gs_return-message && ';'.
    lv_postf = abap_true.
  ENDLOOP.

  IF lv_postf IS INITIAL.
    ps_area-zmess = '资产生成成功'.
    ps_area-zligh = icon_green_light.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    ps_area-anln1 = gv_asset.
    MODIFY gt_alv FROM ps_area INDEX gv_index TRANSPORTING zligh zmess anln1.
  ELSE.
    ps_area-zligh = icon_red_light.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ENDIF.

* 编辑接口数据
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input  = gv_asset
    IMPORTING
      output = gs_ztfi00x-zcssj.

  gs_ztfi00x-zbukrs = ps_area-bukrs.
  gs_ztfi00x-zcslx = '3'.
  gs_ztfi00x-zcszt = '1'.
  APPEND gs_ztfi00x TO gt_ztfi00x.

ENDFORM.

导入字段

字段名示例
公司代码1000
资产分类编码10090
资产描述测试用电子设备电脑
原始资产编码(金蝶)+部门资产编码DZ-0010+BP-GC-B1/SC-12-01-001/02-C
数量1
单位PC
资本化日期20190923
资产规格型号Thinkpad R30 8899X
成本中心1000010100
资产制造商信息测试供应商test001
资产供应商信息200001
变动方式
(是否在建工程转入)
3
历史资产发票凭证77889900
历史采购合同号1122334
资产存放地点存放固定资产的地方
使用部门1000010100
是否抵押 
内部订单 
原始使用年限3
原始期间0
折旧码ZL05
残值率0
 累计购置价值                    1,888.00
 累计普通折旧                       488.00
已记账正常折旧                      402.00
业务范围0001
工厂1000
已过期使用年限3
到期使用期限0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值