以下是纯顾问群~
QQ群 :SAP干货铺,  群号:775662808

申请时请提供 城市-模块-昵称,如:北京-ABAP-森林木。

所有群管理严格,严格禁止一切外来链接、招聘、广告等垃圾信息!

如果您觉得这篇干货文章有用,请帮忙转载、分享给更多人,谢谢~


最近两天写资产东西。写到资产报废接口。

然后搜了下BAPI : BAPI_ASSET_RETIREMENT_POST

然后呢,又网上搜了个demo看了下,很简单嘛,也没多想,就直接复制粘贴过来改吧改吧。

就像下面的:

 SELECT SINGLE bukrs anln1 zugdt
INTO ( lv_bukrs,lv_anln1,lv_zugdt ) FROM anla
WHERE sernr = is_data-sernr AND deakt EQ '00000000'.

ls_generalpostingdata-username = sy-uname.
ls_generalpostingdata-doc_date = is_data-budat."凭证中的凭证日期
ls_generalpostingdata-pstng_date = is_data-budat."凭证中的过账日期
ls_generalpostingdata-fis_period = is_data-budat+4(2)."会计期间
ls_generalpostingdata-trans_date = is_data-budat. "换算日期
ls_generalpostingdata-comp_code = lv_bukrs. "公司代码
ls_generalpostingdata-assetmaino = lv_anln1. "主资产号
ls_generalpostingdata-assetsubno = '0000'.

IF lv_zugdt(4) = sy-datum+0(4)."当年的用250
ls_generalpostingdata-assettrtyp = '250'.
ELSE.
ls_generalpostingdata-assettrtyp = '200'."往年的用200
ENDIF.

ls_retirementdata-valuedate = is_data-budat."参考日期
ls_retirementdata-perc_rate = is_data-perc_rate."
" IF is_data-perc_rate = '100'. .
" ls_retirementdata-compl_ret = 'X'."标志: 记帐全部报废
" ENDIF.

ls_furtherpostingdata-alloc_nmbr = is_data-zuonr.
ls_furtherpostingdata-header_txt = is_data-sgtxt.
ls_furtherpostingdata-item_text = is_data-sgtxt.

CALL FUNCTION 'BAPI_ASSET_RETIREMENT_POST'
EXPORTING
generalpostingdata = ls_generalpostingdata
retirementdata = ls_retirementdata
furtherpostingdata = ls_furtherpostingdata
IMPORTING
documentreference = ls_doc
return = ls_return.


简单的demo代码,然后测试报错。其实是警告,不是错误,然后看也没返回凭证号。

拿数据前台操作,就是个警告而已。


偷懒的后果,记录一下吧_字段

然后我就上网搜了下

 

​https://launchpad.support.sap.com/#/notes/2477910​


偷懒的后果,记录一下吧_字段_02


偷懒的后果,记录一下吧_数据_03


然后我spro进去把这个勾取消了。

虽然不报错,但是感觉不对啊,首先是返回的凭证不对。号码段肯定不对。


另外,正常来说,警告而已,应该不影响生成凭证。


然后debug的时候 输入sy

看看系统返回变量都有啥。

偷懒的后果,记录一下吧_数据_04

这个才对嘛,而ls_doc 里面凭证显然是不对的

偷懒的后果,记录一下吧_数据_05


之后我又把配置改回去了。

但是用的sy-msgv2作为返回的凭证号?肯定不行啊。


然后我debug的时候保存参数,直接执行了BAPI。


擦~ 原来人家有return 表。

偷懒的后果,记录一下吧_字段_06


偷懒的后果,记录一下吧_字段_07


好吧,怪谁呢,怪我懒咯~