入参 | |
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 t001INNER JOIN @it_data AS dataON t001~bukrs = data~bukrsINTO TABLE @DATA(lt_t001).SORT lt_t001 BY bukrs.SELECT DISTINCT anla~bukrs,anla~anln1,anla~anln2,anla~zujhrFROM anlaINNER JOIN @it_data AS dataON anla~bukrs = data~bukrsAND anla~anln1 = data~anln1AND anla~anln2 = data~anln2INTO 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-bukrsanln1 = ls_data-anln1anln2 = 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-bldatpstng_date = ls_data-budat fis_period = ls_data-budat+4(2) trans_date = ls_data-budatcomp_code = ls_data-bukrs assetmaino = ls_data-anln1 assetsubno = ls_data-anln2assettrtyp = lv_assettrtyp ).ls_retirementdata = VALUE #( valuedate = ls_data-bzdat currency = ls_t001-waers amount = ls_data-anbtrcompl_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'EXPORTINGgeneralpostingdata = ls_generalpostingdataretirementdata = ls_retirementdatafurtherpostingdata = ls_furtherpostingdataIMPORTINGdocumentreference = ls_docreturn = 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 bsegWHERE belnr = @ls_result-belnr AND gjahr = @ls_result-gjahrAND 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.