场景
通过BAPI: BAPI_ACC_PRIMARY_COSTS_POST批量导入到KB11N
参数简介
抬头
抬头参数中大部分参数都可参照KB11N界面设置,其中变式字段VARIANT需要指定,货币一般都是固定的,视成本范围业务配置而定
doc_header = VALUE #( co_area = 'XXX'
docdate = v_date_l
postgdate = v_date_l
period = ei_monat
variant = '03SAP'
trans_curr = 'CNY'
username = sy-uname ).
行项目
可参照KB11N界面查找所需字段
doc_items = VALUE #( BASE doc_items
( send_cctr = <data>-kostl_f
trans_curr = doc_header-trans_curr
cost_elem = <data>-kstar
value_tcur = <data>-wog001_f
rec_order = <data>-aufnr ) ).
完整代码
DATA: doc_header LIKE bapidochdru12p,
doc_no LIKE bapidochdru12p-doc_no,
doc_items TYPE TABLE OF bapircitm,
return TYPE TABLE OF bapiret2,
l_msg TYPE msgtx.
DATA(t_data) = eo_data[].
DELETE t_data WHERE sel <> 'X'.
DELETE t_data WHERE wog001_f IS INITIAL.
CHECK t_data[] IS NOT INITIAL.
doc_header = VALUE #( co_area = 'YHGP'
docdate = v_date_l
postgdate = v_date_l
period = ei_monat
variant = '03SAP'
trans_curr = 'CNY'
username = sy-uname ).
LOOP AT t_data ASSIGNING FIELD-SYMBOL(<data>).
doc_items = VALUE #( BASE doc_items
( send_cctr = <data>-kostl_f
trans_curr = doc_header-trans_curr
cost_elem = <data>-kstar
value_tcur = <data>-wog001_f
rec_order = <data>-aufnr ) ).
ENDLOOP.
CALL FUNCTION 'BAPI_ACC_PRIMARY_COSTS_CHECK'
EXPORTING
doc_header = doc_header
TABLES
doc_items = doc_items
return = return.
LOOP AT return INTO DATA(lwa_return) WHERE type CA 'AEX'.
l_msg = l_msg && '/' && lwa_return-message.
ENDLOOP.
IF l_msg IS NOT INITIAL.
LOOP AT eo_data ASSIGNING <data> WHERE sel = 'X'.
<data>-light = '@5C@'.
<data>-msg = l_msg.
ENDLOOP.
ELSE.
CLEAR:return,doc_no.
CALL FUNCTION 'BAPI_ACC_PRIMARY_COSTS_POST'
EXPORTING
doc_header = doc_header
ignore_warnings = 'X'
IMPORTING
doc_no = doc_no
TABLES
doc_items = doc_items
return = return.
LOOP AT return INTO lwa_return WHERE type CA 'AEX'.
l_msg = l_msg && '/' && lwa_return-message.
ENDLOOP.
IF l_msg IS INITIAL.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
LOOP AT eo_data ASSIGNING <data> WHERE sel = 'X'.
IF l_msg IS INITIAL.
<data>-light = '@5B@'.
<data>-msg = '凭证创建成功'.
<data>-belnr = doc_no.
ELSE.
<data>-light = '@5C@'.
<data>-msg = '凭证创建失败'.
ENDIF.
ENDLOOP.
ENDIF.