前臺T-CODE:FB01
調(diào)用BAPI : BAPI_ACC_DOCUMENT_POST
- BAPI 行項目字段增強(qiáng)
T-CODE SE11 創(chuàng)建結(jié)構(gòu)半抱,該結(jié)構(gòu)包含了要增強(qiáng)的字段和行項目(該字段必須有)
Paste_Image.png
然后 T-CODE SE19 開始進(jìn)行增強(qiáng)實(shí)施(有字段是BAPI里面沒有需要新增時思犁,需要建結(jié)構(gòu)存儲。例:反記賬編碼棉磨,記賬碼...)
在 SE19 創(chuàng)建典型 BADI 輸入 ACC_DOCUMENT 步驟如圖
Paste_Image.png
進(jìn)入以下界面點(diǎn)擊增加学辱,然后選會計憑證:
Paste_Image.png
點(diǎn)擊保存后進(jìn)入以下界面點(diǎn)擊新建
Paste_Image.png
然后
Paste_Image.png
選中剛創(chuàng)建的
Paste_Image.png
然后回到 T-CODE SE19 界面策泣,編輯實(shí)施界面輸入剛才創(chuàng)建的實(shí)施名稱,點(diǎn)更改
Paste_Image.png
進(jìn)去后在實(shí)施累中雙擊第一個方法萨咕,將如下代碼復(fù)制進(jìn)去。
Paste_Image.png
Paste_Image.png
傳值要加前導(dǎo)0
DATA: wa_extension TYPE bapiparex,
ext_value(960) TYPE c, wa_accit TYPE accit,
l_ref TYPE REF TO data.
FIELD-SYMBOLS: <l_struc> TYPE ANY,```
```<l_field> TYPE ANY.
SORT c_extension2 BY structure.
LOOP AT c_extension2 INTO wa_extension.
AT NEW structure.
CREATE DATA l_ref TYPE (wa_extension-structure).
ASSIGN l_ref->* TO <l_struc>.
ENDAT.
CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2
wa_extension-valuepart3 wa_extension-valuepart4
INTO ext_value.
MOVE ext_value TO <l_struc>.
ASSIGN COMPONENT 'POSNR' OF STRUCTURE <l_struc> TO <l_field>.
READ TABLE c_accit WITH KEY posnr = <l_field>
INTO wa_accit.
IF sy-subrc IS INITIAL.
MOVE-CORRESPONDING <l_struc> TO wa_accit.
MODIFY c_accit FROM wa_accit INDEX sy-tabix.
ENDIF.
ENDLOOP. ```
到此增強(qiáng)部分就做完了钙畔,剩下的只要在 BAPI_ACC_DOCUMENT_POST 中的擴(kuò)展表將參考結(jié)構(gòu)和
參考結(jié)構(gòu)建的工作區(qū)(里面存放了要增強(qiáng)的字段的數(shù)據(jù))分別賦給即可金麸。
* 調(diào)用代碼
```DATA:
GD_DOCUMENTHEADER LIKE BAPIACHE09,
GD_CUSTOMERCPD LIKE BAPIACPA09,
GD_FICA_HD LIKE BAPIACCAHD,
IT_ACCOUNTRECEIVABLE LIKE TABLE OF BAPIACAR09 WITH HEADER LINE, "客戶
IT_ACCOUNTGL LIKE TABLE OF BAPIACGL09 WITH HEADER LINE, "總賬科目
IT_ACCOUNTTAX LIKE TABLE OF BAPIACTX09 WITH HEADER LINE, "稅務(wù)項目
IT_CRITERIA LIKE TABLE OF BAPIACKEC9 WITH HEADER LINE, "計記帳:CO-PA 科目
分配特性
IT_VALUEFIELD LIKE TABLE OF BAPIACKEV9 WITH HEADER LINE, "會計記帳:CO-PA 科
目分配值字段
IT_CURRENCYAMOUNT LIKE TABLE OF BAPIACCR09 WITH HEADER LINE, "貨幣項目
IT_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE, "返回參數(shù)
IT_RETURN1 LIKE TABLE OF BAPIRET2 WITH HEADER LINE, "返回參數(shù)
IT_RECEIVERS LIKE TABLE OF BDI_LOGSYS WITH HEADER LINE, "傳輸邏輯系統(tǒng)的結(jié)
構(gòu)
IT_FICA_IT LIKE TABLE OF BAPIACCAIT WITH HEADER LINE, "應(yīng)收和應(yīng)付附加合
同帳戶
IT_ACCOUNTPAYABLE LIKE TABLE OF BAPIACAP09 WITH HEADER LINE, "供應(yīng)商
IT_PAYMENTCARD LIKE TABLE OF BAPIACPC09 WITH HEADER LINE, "付款卡信息
IT_EXT LIKE TABLE OF BAPIACEXTC WITH HEADER LINE, "客戶退出 參數(shù)的容器
IT_RE LIKE TABLE OF BAPIACRE09 WITH HEADER LINE, "不動產(chǎn)科目分配數(shù)據(jù)
IT_EXT2 LIKE TABLE OF BAPIPAREX WITH HEADER LINE, "擴(kuò)展字段數(shù)據(jù)
IT_EXTENSION LIKE TABLE OF BAPIACEXTC WITH HEADER LINE. "客戶退出參數(shù)的容
器
DATA IT_EXTENSION2 LIKE BAPIPAREX OCCURS 0 WITH HEADER LINE. "擴(kuò)展數(shù)據(jù)工作區(qū)
DATA: WA_ZEXTEN LIKE ZEXTEN. "ZEXTEN 就是剛才 SE11 創(chuàng)建的
那個結(jié)構(gòu)```
```"抬頭
GD_DOCUMENTHEADER-USERNAME = SY-UNAME.
GD_DOCUMENTHEADER-HEADER_TXT = '抬頭文本'. "抬頭文本
GD_DOCUMENTHEADER-COMP_CODE = '2110'. "公司代碼
GD_DOCUMENTHEADER-DOC_DATE = '20161002'. "憑證日期
GD_DOCUMENTHEADER-PSTNG_DATE = '20161002'. "過賬日期
GD_DOCUMENTHEADER-DOC_TYPE = 'KA'. "憑證類型
GD_DOCUMENTHEADER-BUS_ACT = 'RFBU'. "業(yè)務(wù)事務(wù)
GD_DOCUMENTHEADER-FIS_PERIOD = '10'. "會計期間
GD_DOCUMENTHEADER-REF_DOC_NO = ''. "參考憑證編號
"供應(yīng)商
IT_ACCOUNTPAYABLE-ITEMNO_ACC = '1'. "行項目編號
IT_ACCOUNTPAYABLE-VENDOR_NO = '0110100023'. "科目
IT_ACCOUNTPAYABLE-SP_GL_IND = '8'. "特殊總賬
IT_ACCOUNTPAYABLE-PMNTTRMS = 'Z030'. "付款條件
IT_ACCOUNTPAYABLE-BLINE_DATE = '20161002'. "付款基準(zhǔn)日期
IT_ACCOUNTPAYABLE-ALLOC_NMBR = ''. "分配編號
IT_ACCOUNTPAYABLE-ITEM_TEXT = '1'. "項目文本
APPEND IT_ACCOUNTPAYABLE.
* "客戶(客戶與供應(yīng)商類似,有客戶的就往客戶內(nèi)表增加值)
* IT_ACCOUNTRECEIVABLE-ITEMNO_ACC = ''.
* IT_ACCOUNTRECEIVABLE-CUSTOMER = ''.
* IT_ACCOUNTRECEIVABLE-GL_ACCOUNT = ''.
* IT_ACCOUNTRECEIVABLE-SP_GL_IND = ''.
* IT_ACCOUNTRECEIVABLE-PMNTTRMS = ''.
* IT_ACCOUNTRECEIVABLE-BLINE_DATE = ''.
* IT_ACCOUNTRECEIVABLE-ALLOC_NMBR = ''.
* IT_ACCOUNTRECEIVABLE-ITEM_TEXT = ''.
* APPEND IT_ACCOUNTRECEIVABLE.
"總賬科目
IT_ACCOUNTGL-ITEMNO_ACC = '2'. "行項目編號
IT_ACCOUNTGL-GL_ACCOUNT = '1001000000'. "科目號
IT_ACCOUNTGL-COSTCENTER = ''. "成本中心
IT_ACCOUNTGL-TAX_CODE = ''. "稅碼
IT_ACCOUNTGL-ALLOC_NMBR = ''. "分配編號
IT_ACCOUNTGL-ITEM_TEXT = ''. "項目文本
IT_ACCOUNTGL-ORDERID = ''. "銷售訂單號
IT_ACCOUNTGL-WBS_ELEMENT = ''. "WBS 元素
APPEND IT_ACCOUNTGL.
"總賬科目
IT_ACCOUNTGL-ITEMNO_ACC = '3'. "行項目編號
IT_ACCOUNTGL-GL_ACCOUNT = '8022000000'. "科目號
IT_ACCOUNTGL-COSTCENTER = '0021100501'. "成本中心
IT_ACCOUNTGL-TAX_CODE = 'J1'. "稅碼
IT_ACCOUNTGL-ALLOC_NMBR = ''. "分配編號
IT_ACCOUNTGL-ITEM_TEXT = ''. "項目文本
IT_ACCOUNTGL-ORDERID = ''. "銷售訂單號
IT_ACCOUNTGL-WBS_ELEMENT = ''. "WBS 元素
APPEND IT_ACCOUNTGL.
"貨幣
IT_CURRENCYAMOUNT-ITEMNO_ACC ='1'. "項目編號
IT_CURRENCYAMOUNT-CURRENCY = 'CNY'. "貨比碼
IT_CURRENCYAMOUNT-AMT_DOCCUR = '100'. "金額
IT_CURRENCYAMOUNT-EXCH_RATE =''. "匯率
APPEND IT_CURRENCYAMOUNT.
"貨幣
IT_CURRENCYAMOUNT-ITEMNO_ACC ='2'. "項目編號
IT_CURRENCYAMOUNT-CURRENCY = 'CNY'. "貨比碼
IT_CURRENCYAMOUNT-AMT_DOCCUR = '-200'. "金額
IT_CURRENCYAMOUNT-EXCH_RATE =''. "匯率
APPEND IT_CURRENCYAMOUNT.
"貨幣
IT_CURRENCYAMOUNT-ITEMNO_ACC ='3'. "項目編號
IT_CURRENCYAMOUNT-CURRENCY = 'CNY'. "貨比碼
IT_CURRENCYAMOUNT-AMT_DOCCUR = '100'. "金額
IT_CURRENCYAMOUNT-EXCH_RATE ='0'. "匯率
APPEND IT_CURRENCYAMOUNT.
"稅額
DATA T_TAX_INFO TYPE STANDARD TABLE OF RTAX1U15 WITH HEADER LINE. "稅務(wù)代碼的
稅率和稅收金額
DATA:L_INDEX TYPE SY-TABIX. "內(nèi)部表的行索引
DATA:L_DMBTR LIKE BSEG-DMBTR. "金額
DATA ZJE TYPE BSEG-DMBTR .
ZJE = 100 .
CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT'
EXPORTING
I_BUKRS = '2110' "公司代碼
I_MWSKZ = 'J1' "稅碼
I_WAERS = 'CNY' "幣種
I_WRBTR = ZJE "金額
TABLES
T_MWDAT = T_TAX_INFO. "稅務(wù)代碼的稅率和稅收金額
DATA LS_CURRENCYAMOUNT LIKE LINE OF IT_CURRENCYAMOUNT. "貨幣項目
DATA LS_ACCOUNTTAX LIKE LINE OF IT_ACCOUNTTAX. "稅務(wù)項目
DESCRIBE TABLE IT_CURRENCYAMOUNT LINES L_INDEX. "計算貨幣項目行數(shù)
LOOP AT T_TAX_INFO.
"向稅額表中填充數(shù)據(jù)
CLEAR LS_ACCOUNTTAX. "稅務(wù)項目
LS_ACCOUNTTAX-ITEMNO_ACC = '4'. "會計憑證行項目編號(有稅的會
自動新增一行行項目)
LS_ACCOUNTTAX-TAX_CODE = 'J1'. "稅碼
LS_ACCOUNTTAX-ACCT_KEY = T_TAX_INFO-KTOSL. "事務(wù)關(guān)鍵字
LS_ACCOUNTTAX-COND_KEY = T_TAX_INFO-KSCHL. "條件類型
LS_ACCOUNTTAX-TAXJURCODE = T_TAX_INFO-TXJCD. "地區(qū)稅務(wù)代碼
LS_ACCOUNTTAX-TAXJURCODE_DEEP = T_TAX_INFO-TXJCD_DEEP. "地區(qū)稅務(wù)代碼
LS_ACCOUNTTAX-TAXJURCODE_LEVEL = T_TAX_INFO-TXJLV. "稅務(wù)法規(guī)級別
APPEND LS_ACCOUNTTAX TO IT_ACCOUNTTAX. "稅務(wù)項目
"向金額表中填入相應(yīng)的稅額
CLEAR LS_CURRENCYAMOUNT. "貨幣項目
LS_CURRENCYAMOUNT-ITEMNO_ACC = LS_ACCOUNTTAX-ITEMNO_ACC. "會計憑證行項目編號
LS_CURRENCYAMOUNT-CURRENCY = 'CNY'. "貨幣碼
LS_CURRENCYAMOUNT-AMT_DOCCUR = T_TAX_INFO-WMWST. "用憑證貨幣表示的稅收金
額
LS_CURRENCYAMOUNT-AMT_BASE = T_TAX_INFO-KAWRT. "條件基價
APPEND LS_CURRENCYAMOUNT TO IT_CURRENCYAMOUNT. "貨幣項目
L_DMBTR = L_DMBTR + T_TAX_INFO-KAWRT. "金額 = 金額 + 條件基價
ENDLOOP.
"修正自動計算稅額行的金額(由于實(shí)際計算出的不含稅金額與系統(tǒng)計算會出現(xiàn)誤
差揍魂,故手工計算不含稅金額)
READ TABLE IT_CURRENCYAMOUNT INTO LS_CURRENCYAMOUNT WITH KEY ITEMNO_ACC = 1.
IF SY-SUBRC = 0.
LS_CURRENCYAMOUNT-AMT_DOCCUR = L_DMBTR. "金額
MODIFY IT_CURRENCYAMOUNT FROM LS_CURRENCYAMOUNT INDEX SY-TABIX.
ENDIF.
"增強(qiáng)字段
WA_ZEXTEN-POSNR = '2'. "憑證行項目
WA_ZEXTEN-RSTGR = '111'. "憑證行項目原因代碼
WA_ZEXTEN-SKFBT = '100' . "折扣
IT_EXTENSION2-STRUCTURE = 'ZEXTEN'.
IT_EXTENSION2-VALUEPART1 = WA_ZEXTEN.
APPEND IT_EXTENSION2.
DATA: L_TYPE LIKE GD_DOCUMENTHEADER-OBJ_TYPE,
L_KEY LIKE GD_DOCUMENTHEADER-OBJ_KEY,
L_SYS LIKE GD_DOCUMENTHEADER-OBJ_SYS.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
DOCUMENTHEADER = GD_DOCUMENTHEADER
CUSTOMERCPD = GD_CUSTOMERCPD
CONTRACTHEADER = GD_FICA_HD
TABLES
ACCOUNTGL = IT_ACCOUNTGL
ACCOUNTRECEIVABLE = IT_ACCOUNTRECEIVABLE
ACCOUNTPAYABLE = IT_ACCOUNTPAYABLE
ACCOUNTTAX = IT_ACCOUNTTAX
CURRENCYAMOUNT = IT_CURRENCYAMOUNT
CRITERIA = IT_CRITERIA
VALUEFIELD = IT_VALUEFIELD " EXTENSION1 = IT_EXTENSION
EXTENSION2 = IT_EXTENSION2
RETURN = IT_RETURN
PAYMENTCARD = IT_PAYMENTCARD
CONTRACTITEM = IT_FICA_IT
REALESTATE = IT_RE.```
* 備注
1棚瘟、根據(jù)情況對應(yīng)的去傳值
2、在調(diào)用該 BAPI 之前解取,可以調(diào)用相應(yīng)的檢查函數(shù)看看錯誤 BAPI_ACC_DOCUMENT_CHECK。
3蔓肯、每有計算稅的行項目,就需要額外產(chǎn)生一行稅的項目蔗包,在批導(dǎo)循環(huán)的時候記得判斷并計算相應(yīng)
的稅慧邮。
4调限、當(dāng)特別總賬為 W误澳、X、Y忆谓、Z、U哨免、V 時昙沦,該 BAPI 無效琢唾,此時可以用函數(shù) POSTING_INTERFACE_DOCUMENT
批量創(chuàng)建會計