根據前臺須要輸入參數,在bapi裏面傳值,不一樣業務所需參數不一樣。api
dome1:dom
"bapi結構賦值
LOOP AT lt_item INTO lw_item.
wa_documentheader-comp_code = lw_item-bukrs. "公司代碼
wa_documentheader-doc_date = p_date. "憑證日期
wa_documentheader-pstng_date = p_date. "過帳日期
wa_documentheader-doc_type = 'Z4'.
wa_documentheader-username = sy-uname.
wa_documentheader-fisc_year = p_date+0(4).
wa_documentheader-header_txt = '合同稅率計算過帳'.
wa_documentheader-fis_period = sy-datum+4(2).
CLEAR :wa_accountgl.
lv_i = lv_i + 1.
wa_accountgl-itemno_acc = lv_i. "會計憑證行項目編號
wa_accountgl-gl_account = '6051060000'. "總分類賬賬目
wa_accountgl-item_text = '合同稅率計算過帳'.
wa_accountgl-profit_ctr = lw_item-prctr. "利潤中心
APPEND wa_accountgl TO lt_accountgl.
CLEAR wa_currency_amount.
wa_currency_amount-itemno_acc = lv_i. "行項目編號
wa_currency_amount-amt_doccur = lw_item-taxamount. "金額
wa_currency_amount-currency = 'CNY'.
APPEND wa_currency_amount TO lt_currency_amount.
CLEAR:wa_zbapi_acc01,wa_extension2.
wa_zbapi_acc01-posnr = lv_i.
wa_zbapi_acc01-xnegp = 'X'. "反記帳
wa_zbapi_acc01-bschl = '40'.
wa_extension2-structure = 'ZBAPI_ACC01'.
wa_extension2-valuepart1 = wa_zbapi_acc01.
APPEND wa_extension2 TO lt_extension2.
CLEAR :wa_accountgl.
lv_i = lv_i + 1.
wa_accountgl-itemno_acc = lv_i. "會計憑證行項目編號
wa_accountgl-gl_account = lw_item-acctcode. "總分類賬賬目
wa_accountgl-item_text = '合同稅率計算過帳'.
wa_accountgl-profit_ctr = lw_item-prctr. "利潤中心
APPEND wa_accountgl TO lt_accountgl.
CLEAR wa_currency_amount.
wa_currency_amount-itemno_acc = lv_i. "行項目編號
wa_currency_amount-amt_doccur = - lw_item-taxamount. "金額
wa_currency_amount-currency = 'CNY'.
APPEND wa_currency_amount TO lt_currency_amount.
CLEAR:wa_zbapi_acc01,wa_extension2.
wa_zbapi_acc01-posnr = lv_i.
wa_zbapi_acc01-bschl = '50'.
wa_extension2-structure = 'ZBAPI_ACC01'.
wa_extension2-valuepart1 = wa_zbapi_acc01.
APPEND wa_extension2 TO lt_extension2.
"財務憑證爲999行,到900行時,進行財務憑證拆分;調用bapi生成憑證
IF lv_i >= 999.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = wa_documentheader
IMPORTING
obj_type = lv_obj_type
obj_key = lv_obj_key
obj_sys = lv_obj_sys
TABLES
accountgl = lt_accountgl
currencyamount = lt_currency_amount
return = lt_return
extension2 = lt_extension2.
spa
CLEAR wa_return.
READ TABLE lt_return INTO wa_return WITH KEY type = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. "失敗
LOOP AT lt_return INTO wa_return WHERE type