资产报废 BAPI_ASSET_RETIREMENT_POST

入参
BUKRS公司代码
ANLN1主资产号
ANLN2资产子编号 
BUDAT转资日期
ANBTR已过账的金额
BLDAT凭证中的凭证日期
BZDAT资产价值日
出参
BUKRS公司代码
ANLN1主资产号
ANLN2资产子编号 
BELNR会计凭证号码
GJAHR会计年度
ZBFJZ按本位币计的金额
MSGTS消息类型
TEXT消息文本
  METHOD assets_retirement.
    DATA ls_generalpostingdata TYPE bapifapo_gen_info.
    DATA ls_retirementdata     TYPE bapifapo_ret.
    DATA ls_doc                TYPE bapifapo_doc_ref.
    DATA ls_return             TYPE bapiret2.
    DATA ls_furtherpostingdata TYPE bapifapo_add_info.
    DATA ls_result TYPE zsfi_assets_retirement_output.
    SELECT DISTINCT t001~bukrs,t001~waers FROM t001
       INNER JOIN @it_data AS data
       ON t001~bukrs = data~bukrs
       INTO TABLE @DATA(lt_t001).
    SORT lt_t001 BY bukrs.
    SELECT DISTINCT anla~bukrs,anla~anln1,anla~anln2,anla~zujhr
      FROM anla
      INNER JOIN @it_data AS data
      ON anla~bukrs = data~bukrs
      AND anla~anln1 = data~anln1
      AND anla~anln2 = data~anln2
      INTO TABLE @DATA(lt_anla).
    SORT lt_anla BY bukrs anln1 anln2.
    LOOP AT it_data INTO DATA(ls_data).
      MOVE-CORRESPONDING ls_data TO ls_result.
      READ TABLE lt_t001 INTO DATA(ls_t001) WITH KEY bukrs = ls_data-bukrs BINARY SEARCH.
      READ TABLE lt_anla INTO DATA(ls_anla1) WITH KEY bukrs = ls_data-bukrs
                                                      anln1 = ls_data-anln1
                                                      anln2 = ls_data-anln2 BINARY SEARCH.
      DATA(lv_assettrtyp) = COND #( WHEN ls_anla1-zujhr EQ ls_data-budat(4) THEN '250' ELSE '200' ).
      ls_generalpostingdata = VALUE #( username = sy-uname doc_type = 'Z3'  doc_date = ls_data-bldat
                                       pstng_date = ls_data-budat fis_period = ls_data-budat+4(2) trans_date =  ls_data-budat
                                       comp_code = ls_data-bukrs assetmaino = ls_data-anln1 assetsubno = ls_data-anln2
                                       assettrtyp = lv_assettrtyp ).
      ls_retirementdata = VALUE #( valuedate = ls_data-bzdat currency = ls_t001-waers amount = ls_data-anbtr
                                   compl_ret = COND #( WHEN ls_data-anbtr  IS INITIAL THEN 'X' ELSE  '' ) ).
      ls_furtherpostingdata = VALUE #( header_txt = |{ ls_data-bukrs }{ ls_data-anln1 }{ ls_data-anln2 }{ '资产报废'(017) }| ).
      CALL FUNCTION 'BAPI_ASSET_RETIREMENT_POST'
        EXPORTING
          generalpostingdata = ls_generalpostingdata
          retirementdata     = ls_retirementdata
          furtherpostingdata = ls_furtherpostingdata
        IMPORTING
          documentreference  = ls_doc
          return             = ls_return.
      IF ls_return-type = 'S'.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING  wait = 'X'.
        SELECT SINGLE belnr,gjahr INTO (@ls_result-belnr,@ls_result-gjahr )
            FROM bkpf WHERE awkey = @ls_doc-obj_key AND ldgrp EQ '0L'.
        SELECT SUM( dmbtr ) INTO @ls_result-zbfjz FROM bseg
          WHERE belnr = @ls_result-belnr AND gjahr = @ls_result-gjahr
          AND  hkont = '1606000000' AND bukrs = @ls_data-bukrs.
        ls_result-text = '资产报废成功'(015).
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ls_result-text = |{ '资产报废失败'(016) }:{ ls_return-message }| .
      ENDIF.
      ls_result-msgts = ls_return-type.
      APPEND ls_result TO et_result.
      CLEAR: ls_result,ls_generalpostingdata,ls_retirementdata,ls_furtherpostingdata,ls_doc,ls_return,ls_t001,ls_anla1.
    ENDLOOP.
  ENDMETHOD.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值