调用bapi:BAPI_BILLINGDOC_CREATEMULTIPLE创建开票过程中,发现一问题,获利分析凭证中的评估类型字段缺失,找了一下系统里其他地方调用的地方,发现标准里有几个地方在调用这个bapi之前修改了一下事务代码的赋值,因此按照此方式执行了一下,评估类型字段得到了更新。
代码如下(红色部分为调整点):
*开票bapi
DATA
: gt_billingdatain
TYPE
TABLE
OF bapivbrk
WITH
HEADER
LINE
.
DATA
: lt_success
TYPE
TABLE
OF bapivbrksuccess
WITH
HEADER
LINE
,
lt_return
TYPE
TABLE
OF bapiret1
WITH
HEADER
LINE
,
lt_errors
TYPE
TABLE
OF bapivbrkerrors
WITH
HEADER
LINE
.
DATA
:lv_testrun
TYPE testrun
.
"bapivbrktestrun-testrun.
DATA
:lv_posting
TYPE posting_type_ct
.
DATA
:lc_msg
TYPE string
.
DATA
:lf_tcode
TYPE sy
-tcode
.
REFRESH
: lt_return[]
,lt_success[]
,lt_errors[]
.
CLEAR
:lv_testrun
,lv_posting
.
"
开票行项目内容
gt_billingdatain
-ref_doc
= gs_alv
-vbeln_j
.
"交货单号
gt_billingdatain
-ref_item
= gs_alv
-posnr
.
gt_billingdatain
-doc_number
= gs_alv
-vbeln
.
"凭证号
gt_billingdatain
-itm_number
= gs_alv
-posnr
.
SELECT SINGLE fkarv
vbtyp
INTO
(gt_billingdatain
-ordbilltyp
,gt_billingdatain
-ref_doc_ca
)
"开票类型 -必输/"SD 凭证类别 J--交货 -必输
FROM likp
WHERE vbeln
= gs_alv
-vbeln_j
.
gt_billingdatain
-doc_type
= gs_alv
-auart
.
"销售凭证类型-必输
SELECT SINGLE pstyv
FROM vbap
INTO gt_billingdatain
-item_categ
WHERE vbeln
= gs_alv
-vbeln
AND posnr
= gs_alv
-posnr
.
"销售凭证类别--必输
* gt_billingdatain-material = gs_alv-matnr.
gt_billingdatain
-salesorg
= gs_alv
-vkorg
.
"销售组织 -必输
gt_billingdatain
-distr_chan
= gs_alv
-vtweg
.
"分销渠道
gt_billingdatain
-division
= gs_alv
-spart
.
"产品组-必输
gt_billingdatain
-ship_to
= gs_alv
-kunnr1
.
"客户
gt_billingdatain
-sold_to
= gs_alv
-kunnr2
.
"售达方
gt_billingdatain
-bill_to
= gt_billingdatain
-ship_to
.
"开票方?
gt_billingdatain
-payer
= gt_billingdatain
-ship_to
.
"付款方?
gt_billingdatain
-payment_terms
=
'0001'
.
"付款方式 -立即付款无扣除
gt_billingdatain
-plant
= gs_alv
-werks
.
"工厂?
gt_billingdatain
-
currency
=
'RMB'
.
"currency?
gt_billingdatain
-req_qty
= gs_alv
-kwmeng
.
"数量
gt_billingdatain
-bill_date
= gs_alv
-fkdat
.
""开票日期 ?
gt_billingdatain
-price_date
= gs_alv
-fkdat
.
" "开票日期 ?
gt_billingdatain
-created_by
= sy
-uname
.
APPEND gt_billingdatain
.
CLEAR
:gs_alv
,gt_billingdatain
.
* lv_testrun = 'X'."不为测试状态时,bapi自带commit
* Begin correction no value in document "v_1458566
* 获利能力缺失调整
lf_tcode
= sy
-tcode
.
sy
-tcode
= 'VF01'.
* End correction no value in document "^_1458566
CALL FUNCTION
'BAPI_BILLINGDOC_CREATEMULTIPLE'
EXPORTING
* CREATORDATAIN =
testrun
= lv_testrun
"* Test Run
posting
= lv_posting
TABLES
billingdatain
= gt_billingdatain
errors
= lt_errors
return
= lt_return
success
= lt_success
.
* Begin correction avoid endless loop "v_1449581
COMMIT WORK AND WAIT
.
* End correction avoid endless loop "^_1449581
* Begin correction no value in document "v_1458566
sy
-tcode
= lf_tcode
.
* End correction no value in document "^_1458566
IF lt_return[]
IS NOT INITIAL
.
LOOP AT lt_return
WHERE type
=
'E'
OR type
=
'A'
.
error_log
=
'X'
.
CONCATENATE lc_msg lt_return
-
message
'|'
INTO lc_msg
.
CLEAR lt_return
.
ENDLOOP
.
ENDIF
.
CLEAR
:lt_return
,lt_return[]
.
IF error_log
EQ
'X'
.
CONCATENATE gc_msg pc_po
':' lc_msg
INTO gc_msg
.
ELSE
.
READ TABLE lt_success
INDEX
1
.
IF sy
-subrc
EQ
0
AND lt_success
-bill_doc
IS NOT INITIAL
.
gv_bill
= lt_success
-bill_doc
.
"开票号
CLEAR lt_success
.
ENDIF
.
CLEAR
:lt_success
.
ENDIF
.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31405259/viewspace-2698826/ ,如需转载,请注明出处,否则将追究法律责任。