注意点:
1.
ls_retirementdata-compl_ret = ‘X’."标志: 记帐全部报废
有完全报废标识的情况,
报废金额ls_retirementdata-amount = iv_anbtr
报废百分比ls_retirementdata-perc_rate = iv_prozs
报废数量ls_retirementdata-quantity = iv_menge
不可有值否则报错:“不允许使用此组合表目”
金额,百分比,数量必输切只能输一个
2.
有报废金额金额时报废金额币别必输
有报废数量时报废单位必输
代码如下
FUNCTION zfm_rfc_anln1_scrap.
*“----------------------------------------------------------------------
"“本地接口:
*” IMPORTING
*” VALUE(IV_BUKRS) TYPE BUKRS OPTIONAL
*" VALUE(IV_ANLN1) TYPE ANLN1 OPTIONAL
*" VALUE(IV_BLDAT) TYPE BLDAT DEFAULT SY-DATUM
*" VALUE(IV_BUDAT) TYPE BUDAT DEFAULT SY-DATUM
*" VALUE(IV_BZDAT) TYPE BZDAT OPTIONAL
*" VALUE(IV_ANBTR) TYPE ANBTR OPTIONAL
*" VALUE(IV_PROZS) TYPE PROZS OPTIONAL
*" VALUE(IV_MENGE) TYPE MENGE_D OPTIONAL
*" EXPORTING
*" VALUE(EV_STATUS) TYPE CHAR1
*" VALUE(EV_MESSAGE) TYPE CHAR100
*" VALUE(EV_XBLNR) TYPE XBLNR
*"----------------------------------------------------------------------
*(修改日志)--------------------------------------------------------
*
- 日志号 修改人 修改时间 修改说明 传输号码
-
- 001
DATA: ls_generalpostingdata TYPE bapifapo_gen_info,
ls_retirementdata TYPE bapifapo_ret,
ls_doc TYPE bapifapo_doc_ref,
ls_return TYPE bapiret2,
ls_furtherpostingdata TYPE bapifapo_add_info.
IF iv_bukrs IS INITIAL.
ev_status = ‘E’.
ev_message = ‘公司代码为空’.
ENDIF.
IF iv_anln1 IS INITIAL.
ev_status = ‘E’.
IF ev_message IS INITIAL.
ev_message = ‘资产编码为空’.
ELSE.
ev_message = ev_message && ‘/’ && ‘资产编码为空’.
ENDIF.
ENDIF.
IF iv_bzdat IS INITIAL.
ev_status = ‘E’.
IF ev_message IS INITIAL.
ev_message = ‘资产价值日期为空’.
ELSE.
ev_message = ev_message && ‘/’ && ‘资产价值日期为空’.
ENDIF.
ENDIF.
IF iv_anbtr IS NOT INITIAL .
DATA(lv_add) = 1.
ENDIF.
"记账金额,百分比,数量必输切只能输一个检查
IF iv_prozs IS NOT INITIAL .
lv_add = lv_add + 1.
ENDIF.
IF iv_menge IS NOT INITIAL .
lv_add = lv_add + 1.
ENDIF.
IF lv_add <> 1 .
ev_status = ‘E’.
IF ev_message IS INITIAL.
ev_message = ‘记账金额,百分比,数量必输切只能输一个’.
ELSE.
ev_message = ev_message && ‘/’ && ‘记账金额,百分比,数量必输切只能输一个’.
ENDIF.
ENDIF.
IF ev_status <> ‘E’.
ls_generalpostingdata-username = sy-uname.
ls_generalpostingdata-doc_type = 'AA'.
ls_generalpostingdata-doc_date = iv_bldat."凭证中的凭证日期
ls_generalpostingdata-pstng_date = iv_bldat."凭证中的过账日期
ls_generalpostingdata-fis_period = iv_bldat+4(2)."会计期间
- ls_generalpostingdata-trans_date = iv_bzdat. "换算日期
ls_generalpostingdata-comp_code = iv_bukrs. "公司代码
ls_generalpostingdata-assetmaino = iv_anln1. "主资产号
ls_generalpostingdata-assetsubno = ‘0000’.
ls_generalpostingdata-assettrtyp = ‘’.
SELECT SINGLE
aktiv ,
meins
FROM anla
INTO ( @DATA(lv_aktiv) ,@DATA(lv_meins) )
WHERE anln1 = @iv_anln1
AND anln2 = '0000'.
IF sy-subrc = 0.
IF lv_aktiv+0(4) = sy-datum+0(4)."当年的用250
ls_generalpostingdata-assettrtyp = '250'.
ELSE.
ls_generalpostingdata-assettrtyp = '200'."往年的用200
ENDIF.
ENDIF.
IF iv_anbtr <> 0.
ls_retirementdata-amount = iv_anbtr. "记账金额
ls_retirementdata-currency = 'CNY'. "记账金额
ENDIF.
IF iv_prozs <> 0.
ls_retirementdata-perc_rate = iv_prozs. "百分比
ENDIF.
IF iv_menge <> 0.
ls_retirementdata-quantity = iv_menge. "数量
ls_retirementdata-base_uom = lv_meins."单位
ENDIF.
ls_retirementdata-valuedate = iv_bzdat."参考日期
- ls_retirementdata-compl_ret = ‘X’."标志: 记帐全部报废
ls_furtherpostingdata-header_txt = iv_anln1 && '资产报废'."将文本写入报废会计凭证的抬头文本
ls_furtherpostingdata-item_text = iv_anln1 && '资产报废'."将文本写入报废会计凭证的抬头文本
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'.
IF ls_return-number = '374' AND
ls_return-id = 'AA'.
ev_status = 'S'.
ev_message = '报废成功'.
ev_xblnr = ls_return-message_v2.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ev_status = 'E'.
ev_message = ls_return-message.
ENDIF.
ENDIF.
ENDFUNCTION.